altRobots
/robotigs/icons/actuator.pngActuatoren
/robotigs/icons/printboards.pngAlgemeen
/robotigs/icons/chassis.pngChassis
/robotigs/icons/florigs.pngFlorigs
/robotigs/icons/interfacing.gifInterfacing
/robotigs/icons/microphone_icon.pngMuziek
/robotigs/icons/musicKey_icon.pngMuzikanten
/robotigs/icons/shield.pngSchildjes
/sys/icons/sensors.pngSensors
/robotigs/icons/languages.pngTalen
/robotigs/icons/battery.pngVoedingen
/sys/icons/microController.pngµControllers
altContact
Interrupts/robotigs/icons/login_key.png    alt  

Deze pagina is verouderd. Ga naar de vernieuwde pagina.

  • Software
    /robotigs/documentatie/plaatjes/MEGA2560-1.png Deze sketch voorbeeld sketch heeft zelfs helemaal geen programma lopen. Alles gebeurt door middel van interrupts. De Arduino IDE kent voor de externe interrupts standaard het attachInterrupt commando.
    • Bibliotheek
    • In practice both the Arduino board design as well as the IDE limit the possibilities of the controller. A library has been made to partly solve this problem. The library enables the PCINT interrupts to be used as flank-changed interrupts. The GreyGnome library has large documentation (click Wiki), there is also a list of pins for the ATmega2560 that support PCINT. The PCINT interrupts require some extra code, and the GreyGnome library adds a little extra code as well.
      Hebben we wel een bibliotheek nodig?

  • Beschrijving
  • Interrupts (wiki) zijn een ingebouwde functionaliteit van alle µcontrollers en dus ook van Arduino boards. Een interrupt is een hardware mechanisme dat op een signaal (zoals bijv. 5Vdc) het lopende programma zal onderbreken en vervolgens het programma direct naar een zogenaamde vector (wiki eng) subroutine laat springen. Een dergelijke subroutine wordt een Interrupt Service Routine (wiki eng) genoemd. Zodra deze ISR is afgewikkeld springt het programma automatisch terug naar het punt waar het onderbroken werd. Een interrupt wordt daarom gebruikt als er iets gebeurt waarop een onmiddellijke actie moet worden ondernomen. Op het eerste gezicht lijken interrupts ideaal maar in de praktijk is het beter om interrupts te vermijden, tenzij je door omstandigheden wordt gedwongen. Dit wordt mede veroorzaakt doordat de Arduino IDE zeer ondoorzichtig omgaat met interrupts en doordat bepaalde sensoren nu eenmaal verplicht een interrupt nodig hebben. (Uno 2560).

  • Externe interrupts versus interne interrupts
    • Externe interrupts
    • Externe interrupts zijn de interrupts die door middel van een draadje met de Arduino verbonden zijn. Ze kunnen regageren op een steigende flank, vallende flank of op beiden. Ze hebben gemeenschappelijk dat het niet te voorspellen is wanneer zij een signaal zullen afgeven. Enkele voorbeelden zijn:
    • Interne interrupts
    • Interne interrupts komen vanuit de processor zelf. Dit wordt vooral gebruikt in combinatie met de ingebouwde hardware timers. Deze timers tellen op de achtergrond met een instelbare snelheid terug naar 0 en zodra ze bij 0 aankomen genereren ze een interrupt en zullen ze een ISR afwerken. Omdat ze in de achtergrond lopen kosten ze enkel processortijd als ze de ISR afwerken. Enkele voorbeelden:

  • Interrupt versus polling
    Indien je een robot hebt met bijvoorbeeld 10 sensors dan kan je die sensors 1 voor 1 afvragen of ze iets te melden hebben. Dit heet polling. Je kan het echter ook zo inrichten dat de sensor alle aandacht opeist zodra hij iets te melden heeft. Dan gebruik je een interrupt.
    • Polling
      • Polling is makkelijk te programmeren.
      • Polling is overzichtelijk te programmeren.
      • Polling kan theoretisch een onbeperkt aantal sensors afwikkelen.
    • Interrupts
      • Interrupts kunnen zeer snel reageren op een gebeurtenis.
      • Interrupts kunnen reageren onafhankelijk van waar het programma zich bevindt.
      • Interrupts kosten nauwelijks processor tijd.
      • De timing van interrupts kan zeer gecompliceerd zijn en tot verrassende fouten leiden.
      • Een µcontroller heeft slechts een beperkt aantal interrupt lijnen.


Algemene informatie over dit onderdeelAlgemene informatie test
Sketch voorbeeld  Arduino interrupt
Menu groep  Algemeen
Laatste verandering  2020-05-07

Software voor dit onderdeel
BolderbotMiniInterrupt.ino  Arduino Mega 2560
KY-010.ino  Arduino Mega 2560
mrBlueBumpersUno-01  Arduino Uno Rev3
waterflow-01.ino  Arduino Mega 2560
waterflow-02.ino  Arduino Mega 2560
waterflow-03.ino  Arduino Mega 2560

Warning: include(/var/www/html/robotigs/includes/wishlistperpart.php): failed to open stream: No such file or directory in /var/www/html/robotigs/includes/parts_header.php on line 128

Warning: include(): Failed opening '/var/www/html/robotigs/includes/wishlistperpart.php' for inclusion (include_path='.:/usr/share/php') in /var/www/html/robotigs/includes/parts_header.php on line 128