Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

ATmega128_EXT_INT1 27.10.2007 / Pieka Ulkoinen keskeytys Sisäinen keskeytysmoduuli Ohjelmoitavat erikoistoimintaiset lohkot Ohjaus-, tila-, kirjoitus-

Samankaltaiset esitykset


Esitys aiheesta: "ATmega128_EXT_INT1 27.10.2007 / Pieka Ulkoinen keskeytys Sisäinen keskeytysmoduuli Ohjelmoitavat erikoistoimintaiset lohkot Ohjaus-, tila-, kirjoitus-"— Esityksen transkriptio:

1 ATmega128_EXT_INT1 27.10.2007 / Pieka Ulkoinen keskeytys Sisäinen keskeytysmoduuli Ohjelmoitavat erikoistoimintaiset lohkot Ohjaus-, tila-, kirjoitus- ja lukurekisterit Ohjaussanat

2 ATmega128_EXT_INT2 Tarkastelukulmat C-kääntäjä –I/O –laiteavaruus, esittelyt prosessorikohtaisessa otsikkotiedostossa – atmega128.h, sfrb=”I/O:n tietotyyppi, juoksunumero”, keskeytysvektori Prosessori ATmega128 –Prosessorin pinnit (jalat, nastat) –Keskeytyspyyntö ja keskeytysohjain –I/O:n ohjelmoitavat erikoistoimintaiset lohkot ja niiden ohjaussanat SRAM –I/O - rekisterit ja datamuisti –I/O –rekisterit (ohjaus-, tila-, kirjoitus- ja lukurekisterit) Flash -ohjelmamuisti –Keskeytysvektori (hyppytaulu: JMP + keskeytysaliohjelman nimi) –Keskeytysaliohjelmat ja konekoodi

3 ATmega128_EXT_INT3 Esittelyjä C –kääntäjälle atmega128.h sfrb –I/O:n juoksunumero Makrot –#define –I/O:n laajennus –Keskeytysten juoksunumero sfrb EIFR=0x38; sfrb EIMSK=0x39; sfrb EICRB=0x3a; #define EICRA (*(unsigned char *) 0x6a) // Interrupt vectors definitions #define EXT_INT0 2 #define EXT_INT1 3 #define EXT_INT2 4 #define EXT_INT3 5 #define EXT_INT4 6 #define EXT_INT5 7 #define EXT_INT6 8 #define EXT_INT7 9

4 ATmega128_EXT_INT4 ATmega128 Pinnit (1 … 64 Portit (A…G) INT0 … INT7

5 ATmega128_EXT_INT5 Ulkoinen keskeytys Keskeytysvektori Flash -muistissa sfrb EIFR=0x38; sfrb EIMSK=0x39; sfrb EICRB=0x3a; #define EICRA (*(unsigned char *) 0x6a) // Interrupt vectors definitions #define EXT_INT0 2 #define EXT_INT1 3 #define EXT_INT2 4 #define EXT_INT3 5 #define EXT_INT4 6 #define EXT_INT5 7 #define EXT_INT6 8 #define EXT_INT7 9 // External Interrupt(s) initialization // INT0: On // INT0 Mode: Falling Edge // INT1: On // INT1 Mode: Rising Edge // INT2: Off // INT3: Off // INT4: Off // INT5: Off // INT6: Off // INT7: Off EICRA=0x0E; EICRB=0x00; EIMSK=0x03; EIFR=0x03;

6 ATmega128_EXT_INT6 Kääntäjä,.h (header) I/O, pinnit, sfrb, SRAM, I/O-moduuli, Flash-muisti, keskeytysohjelma Piikkirimaliitin Ja kytkimet #define EXT_INT0 2 #define EXT_INT1 3 // External Interrupt(s) initialization // INT0: On // INT0 Mode: Falling Edge // INT1: On // INT1 Mode: Rising Edge EICRA=0x0E; EICRB=0x00; EIMSK=0x03; EIFR=0x03; unsigned int laskuri = 0; // External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) { laskuri++; } // External Interrupt 1 service routine interrupt [EXT_INT1] void ext_int1_isr(void) { laskuri--; } sfrb EIFR=0x38; sfrb EIMSK=0x39; sfrb EICRB=0x3a; // 16 bit access sfrb SFIOR=0x20; #define EICRA (*(unsigned char *) 0x6a)

7 ATmega128_EXT_INT7 Flash -muisti ;INTERRUPT VECTORS 000000 940c 0047 JMP __RESET 000002 940c 007a JMP _ext_int0_isr 000004 940c 007e JMP _ext_int1_isr 000006 940c 0000 JMP 0x00 000008 940c 0000 JMP 0x00.CSEG _ext_int0_isr: 00007a d05a RCALL SUBOPT_0x0 ; 31 // Place your code here ; 32 laskuri++; 00007b 9631 ADIW R30,1 00007c d05e RCALL SUBOPT_0x1 ; 33 } 00007d 9518 RETI ; 34 ; 35 // External Interrupt 1 service routine ; 36 interrupt [EXT_INT1] void ext_int1_isr(void) ; 37 { _ext_int1_isr: 00007e d056 RCALL SUBOPT_0x0 ; 38 // Place your code here ; 39 laskuri--; 00007f 9731 SBIW R30,1 000080 d05a RCALL SUBOPT_0x1 ; 40 } 000081 9518 RETI

8 ATmega128_EXT_INT8 External Interrupt Control Register A – EICRA Ulkoisten keskeytysten ohjausrekisteri A Bits 7..0 – ISC31, ISC30 – ISC00, ISC00: External Interrupt 3 - 0 Sense Control bits Ulkoisten keskeytysten 3 – 0 tunnistamista ohjaavat bitit

9 ATmega128_EXT_INT9 EICRA: Keskeytysten tunnistamisen ohjaus Interrupt request = keskeytyspyyntö Tasoliipaisu = The low level of INT Laskeva reuna = The falling egde Nouseva reuna = The rising egde

10 ATmega128_EXT_INT10 External Interrupt Control Register B – EICRB Ulkoisten keskeytysten ohjausrekisteri B Bits 7..0 – ISC71, ISC70 - ISC41, ISC40: External Interrupt 7 - 4 Sense Control Bits

11 ATmega128_EXT_INT11 ATmega128_EXT_INT11 External Interrupt Mask Register – EIMSK Bits 7..0 – INT7 – INT0: External Interrupt Request 7 - 0 Enable When an INT7 – INT0 bit is written to one and the I-bit in the Status Register (SREG) is set (one), the corresponding external pin interrupt is enabled. The Interrupt Sense Control bits in the External Interrupt Control Registers – EICRA and EICRB – defines whether the external interrupt is activated on rising or falling edge or level sensed. Activity on any of these pins will trigger an interrupt request even if the pin is enabled as an output. This provides a way of generating a software interrupt.

12 External Interrupt Flag Register – EIFR ATmega128_EXT_INT12

13 EIFR ja MCU Bits 7..0 – INTF7 - INTF0: External Interrupt Flags 7 - 0 When an edge or logic change on the INT7:0 pin triggers an interrupt request, INTF7:0 becomes set (one). If the I-bit in SREG and the corresponding interrupt enable bit, INT7:0 in EIMSK, are set (one), the MCU will jump to the interrupt vector. The flag is cleared when the interrupt routine is executed. Alternatively, the flag can be cleared by riting a logical one to it. These flags are always cleared when INT7:0 are configured as level interrupt. Note that when entering sleep mode with the INT3:0 interrupts disabled, the input buffers on these pins will be disabled. This may cause a logic change in internal signals which will set the INTF3:0 flags. See “Digital Input Enable and Sleep Modes” ATmega128_EXT_INT13

14 MCU Control Register – MCUCR MCU --- Muistin / Ulkoisen muistin uhjaukseen liittyvä yksikkö the MCU will jump to the interrupt vector. Hoitaa vain hypyn keskytysvektorin kautta keskytysaliohjemaan ??? ATmega128_EXT_INT14

15 ATmega128_EXT_INT15 SREG Status Register, ALUN tilarekisteri Bit 7 – I: Global Interrupt Enable Bit 7 on yleinen keskeytysten sallinta ja kieltäminen. The Global Interrupt Enable bit must be set for the interrupts to be enabled. The individual interrupt enable control is then performed in separate control registers. If the Global Interrupt Enable Register is cleared, none of the interrupts are enabled independent of the individual interrupt enable settings. The I-bit is cleared by hardware after an interrupt has occurred, and is set by the RETI instruction to enable subsequent interrupts. The Ibit can also be set and cleared in software with the SEI and CLI instructions, as described in the instruction set reference.

16 ATmega128_EXT_INT16ATmega128_EXT_INT16 SFIOR TSM (Timer/Counter Synchronization Mode) –Kyseisen moodin ykköstilaan laittaminen pysäyttää ajastimen/laskurin ja pitää psr0 ja psr312 rekisterissä olevat arvot. Moodin poispäältä asettaminen resetoi psr0:an ja psr321:sen arvot ja käynnistää ajastimen/laskurin samanaikaisesti ACME (Analog Comparator Multiplexer Enable) –Asetettuna päälle enabloi analogisen multiplexerin komparaattorin PUD (Pull-up Disable) –Asetettuna päälle estää porttien ylösvedot vaikka portit olisivatkin määritelty ylösveto- asentoon PSR0 (Prescaler Reset Timer/Counter0) –Sama kuin PSR321 toiminta, mutta tämä resetoi vain ajastimen/laskurin 0 PSR321 (Prescaler Reset Timer/Counter3-1) –Kun asetetaan ykköstilaan tapahtuu ajastimien/laskurien 1,2 ja 3 resetointi. Normaalisti asetus palautuu nollaan melkein heti resetoinnin jälkeen, ellei sitten TSM ole päällä, joka estää PSR321 rekisterin muuttumisen nollaksi.


Lataa ppt "ATmega128_EXT_INT1 27.10.2007 / Pieka Ulkoinen keskeytys Sisäinen keskeytysmoduuli Ohjelmoitavat erikoistoimintaiset lohkot Ohjaus-, tila-, kirjoitus-"

Samankaltaiset esitykset


Iklan oleh Google