Interrupt bronnen
Een interrupt bron is een schakeling of gebeurtenis die een interrupt kan genereren.
IRQ interrupts
Bijna alle I/O schakelingen in de 68HC11 kunnen interrupts genereren. Zo bevat de 68HC11 bijvoorbeeld een 8-bits teller die het aantal pulsen op een pin van de
micro-controller telt. Als de tellerstand van $FF naar 0 gaat (dus als de teller overloopt) kan de teller schakeling een interrupt genereren. In de interrupt routine kan het aantal overflows geteld worden (in software), zodat ook verder dan 256 geteld kan worden. Ook de timers kunnen interrupts genereren, waardoor de
micro-controller bijvoorbeeld elke 10 ms een bepaalde interrupt routine kan uitvoeren. Hiermee kan de timing van een besturing gerealiseerd worden.
Interrupts die door de I/O schakelingen gegenereerd kunnen worden, zullen bij de behandeling van de betreffende schakelingen besproken worden. Voorlopig volstaat te zeggen, dat al deze interrupts van het 'IRQ' type zijn, en dus met behulp van het I-bit in het CCR geblokkeerd kunnen worden.
De interrupts van de I/O schakelingen kunnen in de I/O registers van zo'n schakeling ook 'lokaal' geblokkeerd worden. Zo heeft de pulsteller een bit in zijn I/O registers waarmee de interrupts van de teller lokaal geblokkeerd kunnen worden. Met het I-bit worden àlle 'IRQ' interrupts tegelijkertijd geblokkeerd.
De 68HC11 heeft ook een pin op de behuizing waarmee een IRQ interrupt opgewekt kan worden. Via een bit in een I/O register (het 'OPTION' register, dat in een latere les behandeld zal worden) kan men kiezen of deze ingang gevoelig moet zijn voor flanken (een neergaande flank genereert dan een interrupt), of voor een vast logisch niveu (een '0' op de ingang veroorzaakt dan een interrupt.)
XIRQ interrupt
Dit type interrupt kan uitsluitend worden opgewekt via een pin op de behuizing van de
micro-controller.
De XIRQ ingang is niveau-gevoelig. De interrupt zal optreden zolang de XIRQ pin een '0' is. Externe hardware dient ervoor te zorgen dat de interrupt weer wordt weggenomen (het XIRQ signaal weer '1' wordt gemaakt) zodra de interrupt door de
micro-controller is afgehandeld.
Software interrupt
Een speciaal soort interrupt, die ook niet geblokkeerd kan worden, is de software interrupt. Dit is een instructie (swi) die hetzelfde effect heeft als een interrupt, namelijk:
- alle registers worden op de stack gezet
- de processor springt naar een interrupt routine
Andere interrupts
De 68HC11 heeft nog een aantal schakelingen aan boord die een interrupt kunnen veroorzaken. Ook deze interrupts zijn niet te blokkeren. De interrupts kunnen gegenereerd worden door:
- de 'watchdog'
- de klok-monitor
- herkennen van een illegale instructie
De watchdog en de klok-monitor zullen later behandeld worden. Deze schakelingen kunnen gebruikt worden voor de controle op een juiste werking van de
micro-controller.
Wanneer de processor een instructie te verwerken krijgt die hij niet
herkent, zal er ook een interrupt optreden.
|