Upload
chick
View
29
Download
0
Embed Size (px)
DESCRIPTION
TEP Přerušení. č.7. TEP. Téma Přerušení Předmět TEP Autor Juránek Leoš Ing. Přerušení. Funkce Vznikne-li událost, vyvolá se přerušení Přeruší se hlavní program a začne se vykonávat obslužný program na pevné adrese Přerušení můžeme zakázat jednotlivě nebo všechna. - PowerPoint PPT Presentation
Citation preview
TEPPřerušení
č.7
Téma Přerušení Předmět TEP Autor Juránek Leoš Ing.
TEP
Funkce
Vznikne-li událost, vyvolá se přerušení
Přeruší se hlavní program a začne se vykonávat obslužný program na pevné adrese
Přerušení můžeme zakázat jednotlivě nebo všechna
Přerušení
Postup
1. Nastavení zásobníku (registr SP)
2. Povolení konkrétního přerušení
3. Nastavení příznaku I v SREG
4. Umístění obslužného programu na určitou adresu v paměti programu podle konkrétní události
Použití přerušení v aplikaci
Obslužný program Přerušení hardwarově volá podprogram Podprogramy jsou umístěny na pevných
adresách v paměti Na tyto adresy umístíme ve zdrojovém
programu instrukce podprogramu Umístění programu v paměti řídíme
direktivou překladače .ORG Obslužný program musíme ukončit
instrukcí RETI Před použitím přerušení musíme mít
nastaven zásobník
Číslo Adresa Symbol Popis Registr Bit1 0x0002 Reset Reset2 0x0002 INT0addr External Interrupt Request 03 0x0004 INT1addr External Interrupt Request 14 0x0006 INT2addr External Interrupt Request 25 0x0008 INT3addr External Interrupt Request 36 0x000a INT4addr External Interrupt Request 47 0x000c INT5addr External Interrupt Request 58 0x000e INT6addr External Interrupt Request 69 0x0010 INT7addr External Interrupt Request 7
10 0x0012 PCI0addr Pin Change Interrupt Request 011 0x0014 PCI1addr Pin Change Interrupt Request 112 0x0016 PCI2addr Pin Change Interrupt Request 213 0x0018 WDTaddr Watchdog Time-out Interrupt14 0x001a OC2Aaddr Timer/Counter2 Compare Match A15 0x001c OC2Baddr Timer/Counter2 Compare Match B16 0x001e OVF2addr Timer/Counter2 Overflow TIMSK2 TOIE217 0x0020 ICP1addr Timer/Counter1 Capture Event18 0x0022 OC1Aaddr Timer/Counter1 Compare Match A19 0x0024 OC1Baddr Timer/Counter1 Compare Match B20 0x0026 OC1Caddr Timer/Counter1 Compare Match C21 0x0028 OVF1addr Timer/Counter1 Overflow TIMSK1 TOIE122 0x002a OC0Aaddr Timer/Counter0 Compare Match A23 0x002c OC0Baddr Timer/Counter0 Compare Match B24 0x002e OVF0addr Timer/Counter0 Overflow TIMSK0 TOIE0
Atmega 2560 Povolení přerušení
Umístění adres přerušení v paměti programu
Příklad Vytvořte program, který bude používat dva
časovače (8 bitů, 0 a 2)
Časovače budou v režimu normálním
Budou odpojeny výstupy OCxA a OCxB
Budou používat vnitřní zdroj impulzů dělený 1024
Přerušení s časovačem
Kontrolní úkoly Na jaké adrese bude pokračovat program při vyvolání
přerušení? Jak umístíme program v paměti programu na určitou
adresu? Co musíme provést při inicializaci počítače, když
chceme použít přerušení od události přetečení čítače0?
Jakou instrukcí musíme ukončit obslužný program? Přerušení zavolá podprogram na pevné adrese. Jaký
registr musíme ihned před povolením nastavit a na jakou hodnotu.