Lecture 8 Interrupt 1 Outline Introduction Handling interrupt


















- Slides: 18
Lecture – 8 Interrupt 1
Outline • Introduction • Handling interrupt • Interrupt sources • Switching interrupt • Peripheral interrupts • Using two interrupts • Conclusions 2
Interrupts • Interrupts are the most used I/O technique for many systems. • One problem exists with interrupts the are difficult to troubleshoot. • The ISR is the function called by an interrupt. • Each interrupting source has three control bits, IF (interrupt flag), IE (interrupt enable), and IP (interrupt priority). • The IF flag is set only if an interrupt takes effect and cleared by the program. 3
Handling interrupts (1) • The mechanism is very similar to CALL: 1) the present instruction completes. 2) PC (the address of the next instruction) is saved to the hardware stack 3) ISR is called at a fixed (by Pl. C architecture) address. 4) ISR operates as a subroutine (MUST not corrupt any registers/flags/bank settings/W), return (RETFIE) on completion. 4
Handling interrupts (2) • ISR starts at the specific address. • PC of the interrupted program is saved by hardware in a hardware stack. • STATUS register and any other registers used by ISR are to be saved by the programmer if necessary. • ISR should (1) polls status bits of valid interrupt sources; (2) serve requested; (3) clear their request bits. • Restore registers and RETIF (programmer). 5
Interrupt sources • Direct pin at PORT B (interrupt request) • Change of signal at most pins of port B (interrupt on change) • Generated by built-in peripherals (e. g. , timers on overflow etc) • Generated by internal watchdog timer - could be used to recover after a hardware malfunction. • Generated when the supply voltage drops below a preset level, or just recover from a power loss. Interrupts can be disabled in general, or any specific interrupt can be disabled. 6
Why interrupt control is required • How it is possible to handle more than one interrupt? • What will happen if two interrupts occur at the same time? • What will happen if an interrupt occurs while the other one is being served ? • How to protect a critical code from being intrrupted (e. g. injecting a drug to a patient)? BCF INTCON, GIE critical code BSF INTCON, GIE 7
Interrupt control register • Interrupt flag bits get set when an interrupt condition occurs regardless of the state of its corresponding enable bit or the global enable bit, GIE (INTCON<7>). Enable bits Flag bits GIE - general N/A PEIE- peripheral interrupts N/A TMR 0 IE - timer 0 TMR 0 IF - timer 0 INT 0 IE - Interrupt request (RB 0) INT 0 IF - interrupt request (RB 0) RABIE - interrupt on change port B RABIF - interrupt on change port B 8
Switching interrupts • General IE (GIE) - ensures that the ISR is not interrupted. • IE flags - allow to enable particular interrupts ONLY. • IF flags : indicate what interrupt actually happened. 9
Example 1 0 0 1 1 1 0 1 GIE PEIE T 0 IE INTE RBIE T 0 IF INTF RBIF • What event has happened? 10
Example 1 0 1 0 1 GIE PEIE T 0 IE INTE RBIE T 0 IF INTF RBIF • What event has happened? 11
Example 0 0 1 1 0 1 GIE PEIE T 0 IE INTE RBIE T 0 IF INTF RBIF • What event has happened? 12
ISR programming necessities • Initialisation: enable required interrupt, set GIE. • ISR: Clear the IF associated (if not, the same interrupt will occur straight on RETFIE). • ISR: Return using RETFIE. 13
Peripheral interrupts • Peripheral interrupts enable register (PIE 1) • Peripheral interrupts request register (PIR 1) • EE-EEPROM, A/D converter, EUSART receive buffer, comparator C 2, comparator C 1, oscillator fail, EUSART transmit buffer, timer 1 overflow. 14
Example • PIE 1 0 0 1 1 0 EEIE ADIE RCIE C 2 IE C 1 IE 1 0 OSFIE TXIE 1 TMR 1 IE • PIR 1 0 0 0 0 0 EEIF ADIF RCIF C 2 IF C 1 IF OSFIF TXIF TMR 1 IF • What event has happened? 15
Example • PIE 1 0 0 1 1 0 EEIE ADIE RCIE C 2 IE C 1 IE 1 0 OSFIE TXIE 1 TMR 1 IE • PIR 1 0 0 0 0 1 EEIF ADIF RCIF C 2 IF C 1 IF OSFIF TXIF TMR 1 IF • What event has happened? 16
Using two interrupts • E. g. , on change and RC(receive). • Initialization of both required BSF INTCON, RBIE BSF PIE 1, RCIE BSF INTCON, PEIE BSF INTCON, GIE 17
Summary • Interrupts allow putting away some background activities for something more important. • Microcontrollers deal with interrupts from free running peripherals and external stimuli. • They need to be enabled using l. E flags, and the interrupt source can be determined using the IF flags. • The ISR is placed at a fixed address. • It must not to change anything except its dedicated variables. • Interrupts can be prioritised if more than one is enabled. 18