9
TEP Přerušení č.7

TEP Přerušení

  • 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

Page 1: TEP Přerušení

TEPPřerušení

č.7

Page 2: TEP Přerušení

Téma Přerušení Předmět TEP Autor Juránek Leoš Ing.

TEP

Page 3: TEP 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

Přerušení

Page 4: TEP 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

Page 5: TEP Přerušení

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

Page 6: TEP Přerušení

Čí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

Page 7: TEP Přerušení

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

Page 8: TEP Přerušení

Přerušení s časovačem

Page 9: TEP Přerušení

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.