Mechatronika és mikroszámítógépek 2018/2019 I. félév Külső megszakítások
Megszakítás, Interrupt A megszakítás egy olyan esemény, vagy feltétel teljesülése, amely felfüggeszti a program futását, a vezérlést átadja egy speciális szubrutinnak (ISR-Interrupt Service Routine) Az egy időben teljesülő megszakítások hierarchiáját az interrupt service priority dönti el. 2018.10.03. Külső megszakítások 2
Az Interrupt folyamata 1. A CPU befejezi az aktuális utasítást 2. A CPU elmenti a Program Counter-t (PC) a stack-be pusholással 3. A PC-be a megfelelő ISR vektor kerül 4. Az ISR végrehajtásra kerül 5. Az Interrupt a RETI utasításig tart 2018.10.03. Külső megszakítások 3
Megszakítások a C8051F020 eszközön, prioritás Interrupt Source Interrupt Vector Priority Order Enable Flag Reset 0000 Top Always Enabled External Interrupt 0 (/INT0) 0003 0 EX0 (IE.0) Timer 0 Overflow 000B 1 ET0 (IE.1) External Interrupt 1 (/INT1) 0013 2 EX1 (IE.2) Timer 1 Overflow 001B 3 ET1 (IE.3) UART0 0023 4 ES0 (IE.4) Timer 2 Overflow 002B 5 ET2 (IE.5) Serial Peripheral Interface 0033 6 ESPI0 (EIE1.0) SMBus Interface 003B 7 ESMB0 (EIE1.1) ADC0 Window Comparator 0043 8 EWADC0 (EIE1.2) Programmable Counter Array 004B 9 EPCA0 (EIE1.3) Comparator 0 Falling Edge 0053 10 ECP0F (EIE1.4) Comparator 0 Rising Edge 005B 11 ECP0R (EIE1.5) Comparator 1 Falling Edge 0063 12 ECP1F (EIE1.6) Comparator 1 Rising Edge 006B 13 ECP1R (EIE1.7) Timer 3 Overflow 0073 14 ET3 (EIE2.0) ADC0 End of Conversion 007B 15 EADC0 (EIE2.1) Timer 4 Overflow 0083 16 ET4 (EIE2.2) ADC1 End of Conversion 008B 17 EADC1 (EIE2.3) External Interrupt 6 0093 18 EX6 (EIE2.4) External Interrupt 7 009B 19 EX7 (EIE2.5) UART1 00A3 20 ES1 (EIE2.6) External Crystal OSC Ready 00AB 21 EXVLD (EIE2.7) 2018.10.03. Külső megszakítások 4
Megszakítások beállítása Timer Control Register (TCON 0x88) bit addressable Bit Symbol Leírás 7 TF1 6 TR1 5 TF0 4 TR0 3 IE1 2 IT1 1 IE0 0 IT0 Timer 1 Overflow Flag 0/1: Nincs/Van túlcsordulás Hardver által állított FLAG a Timer 1 túlcsordulása esetén. (szoftveresen is törölhető, és interrupt-tal is) Timer 1 Run Control 0/1: Timer 1 tiltva/engedélyezve Timer 0 Overflow Flag 0/1: Nincs/Van túlcsordulás Hardver által állított FLAG a Timer 0 túlcsordulása esetén. (szoftveresen is törölhető, és interrupt-tal is) Timer 0 Run Control 0/1: Timer 0 tiltva/engedélyezve External Interrupt 1 Hardver által állított FLAG a amikor a megfelelő típusú esemény bekövetkezik/fennáll az /INT1-en (szoftveresen is törölhető, és interrupt-tal is) Interrupt 1 Type Select 0/1: /INT1 szintvezérelt/élvezérelt External Interrupt 0 Hardver által állított FLAG a amikor a megfelelő típusú esemény bekövetkezik/fennáll az /INT0-en (szoftveresen is törölhető, és interrupt-tal is) Interrupt 0 Type Select 0/1: /INT0 szintvezérelt/élvezérelt 2018.10.03. Külső megszakítások 5
Megszakítások programozása.org direktíva: hová fordítsa az ez utáni utasításokat a kódszegmensbe IT vektorok: olyan memóriaterület, ahová a felhasználó nem fér hozzá acall interrupt, reti External Interrupt 0 (/INT0).org 0x3 ;ROM 3-as byte-tól Timer 0 Overflow (T0).org 0xB ;ROM 11-es byte-tól External Interrupt 1 (/INT1).org 0x13 ;ROM 13-as byte-tól Timer 1 Overflow (T1).org 0x1B ;ROM 27-es byte-tól 2018.10.03. Külső megszakítások 6
Megszakítások beállítása Interrupt Enable Register (IE 0xA8) bit addressable Bit Symbol Leírás 7 EA Enable All Interrupts 0/1: Minden interrupt tiltása (kivéve reset)/engedélyezése a megfelelő beállításoknak megfelelően 6 IEGF0 General Purpose Flag 0 Általános célú flag 5 ET2 4 ES0 3 ET1 2 EX1 1 ET0 0 EX0 Enable Timer 2 Interrupt 0/1: Timer 2 Interrupt tiltása/engedélyezése TF2 (T2CON.7) Enable UART0 Interrupt 0/1: UART0 Interrupt tiltása/engedélyezése Enable Timer 1 Interrupt 0/1: Timer 1 Interrupt tiltása/engedélyezése TF1 (TCON.7) Enable External Interrupt 1 0/1: External interrupt 1 tiltása/engedélyezése (/INT1) Enable Timer 0 Interrupt 0/1: Timer 0 Interrupt tiltása/engedélyezése TF0 (TCON.5). Enable External Interrupt 0 0/1: External interrupt 0 tiltása/engedélyezése (/INT0) 2018.10.03. Külső megszakítások 7
Külső megszakítások beállítása, portok PxMDOUT regiszter, ahol x: 0, 1, 2 attól függően, melyik portot akarjuk használni port lábak: OPEN DRAIN kezdeti értékek: #0xFF, mindegyik pl. mov P0MDOUT,#0 2018.10.03. Külső megszakítások 8
Digital Crossbar 2018.10.03. Külső megszakítások 9
Digital Crossbar prioritások engedélyezés: 101 Crossbar engedélyezés: XBR2.6 P0.7 - /INT0: Engedélyezem - XBR: 0.2, 0.1, 0.6, 1.2 Tiltom XBR: 0.0, 2.2, 0.[5 3], 0.7, 1.0, 1.1, 1.2 2018.10.03. Külső megszakítások 10
Digital Crossbar beállítás, példa Kerüljön /INT0 megszakítás a P1.4 és a GND közé, élvezérléssel! XBR0, XBR1 és XBR3 regiszterek beállítása úgy, hogy /INT0 P1.4-re kerüljön: mov XBR0,#0b11000111 ;#0xC7 mov XBR1,#0b00000100 ;#0x04 mov XBR2,#0b01000100 ;#0x44 További bitek: setb EA ;engedélyezi a megszakításokat, ;IE regiszter setb EX0 ;engedélyezi /INT0-át, ;IE regiszter setb IT0 ;/INT0 élvezérelt legyen, ;TCON regiszter 2018.10.03. Külső megszakítások 11
A következő órára Házi feladat, választott példa: 2014. október 20. 1/A, 2014. október 20. 1/B, 2015. október 19. 1/A, Gyakorló példák a honlapon! Végtelen ciklus kell, ahonnan a program kilép, és ahová visszalép! Segítség: Tankönyv 5. és 11. fejezetek 2018.10.03. Külső megszakítások 12
Megszakítások Vége az ötödik gyakorlatnak. 13