SYSTÉM PŘERUŠENÍ U 68HC11
Systém přerušení u 68HC11 Přerušovací systém umožňuje, aby CPU mikrořadiče reagoval na žádosti ze strany V/V zařízení popř. externích událostí a nečekal až na obsloužení těchto požadavků dojde řada.
Postup při obsluze přerušení Požadavkem na přerušení se ohlásí některý z periferních obvodů mikrořadiče (vnějších nebo vnitřních) CPU akceptuje požadavek na přerušení (jestliže je přerušení povoleno) na konci právě vykonávané instrukce a současně se znemožní přijetí další žádosti o přerušení (při nemaskovatelném přerušení XIRQ nastaví bity podmínkového registru X = 1 a I = 1 a u ostatních přerušení pak pouze I = 1).
Postup při obsluze přerušení Přemístění všech obsahů registrů (s výjimkou SP) do zásobníku. CPU přejde na provádění obslužného programu přerušení od adresy, která je určena příslušným vektorem přerušení Po provedení programu obsluhy přerušení (po instrukci RTI - Return from Interrupt ) se obnoví původní obsah pracovních registrů, tj. opačná operace vzhledem k bodu c.
Přerušení přes vektor přerušení
Přerušení přes pseudo vektor přerušení
Přerušovací vstupy - vnější 68HC11 má tři vnější přerušovací vstupy (všechny jsou aktivní v nízké úrovni.): reset maskovatelné přerušení (IRQ) nemaskovatelné přerušení (XIRQ)
Maskovatelné přerušení (IRQ) proběhnou body a) až c) (9 cyklů). bod d) -adresa programu obsluhy přerušení se získává z paměťových míst $FFF2 a $FFF3
Maskovatelné přerušení (IRQ) Maska přerušení se nastaví na 1. Nastavením masky je definován postup v případě více současně vydaných požadavků na přerušení. Pokud je potřebné umožnit vnoření dalšího přerušení do obslužného programu, musí se maska přerušení instrukcí CLI na začátku obslužného programu přerušení vynulovat. Jestliže vnoření není požadováno, maska se nenuluje.
Maskovatelné přerušení (IRQ) V šestnáctém cyklu se získává první instrukce obsluhy přerušení. Provedením instrukce RTI se ze zásobníku obnoví všechny registry. Před přerušením byla maska přerušení ve stavu 0, po provedení instrukce RTI je přerušení znovu povoleno.
Nemaskovatelné přerušení (XIRQ) Nemaskované přerušení se automaticky zamaskuje pouze po resetu maskovacím bitem X v CCR Po povolení přerušení ze vstupu XIRQ v průběhu vykonávání programu nelze již tento maskovací bit vrátit zpět.
Nemaskovatelné přerušení (XIRQ) Na XIRQ připojujeme obvykle obvody, které generují přerušení s nejvyšší prioritou. Nastaví se bitové masky X i I na 1 a získává se vektor přerušení z paměťových míst $FFF4 a $FFF5.
Reset Pro nastavení mikrořadiče do počátečního stavu . Přivedením nízké úrovně na vstup RESET. CPU nastaví masky přerušení (I a X) a získává vektor přerušení z paměťových míst $FFFE a $FFFF. Reset mikrořadiče se může uskutečnit také interně signálem COP (nazývaným též Watch dog).
SOFTWAROVÉ PŘERUŠENÍ (1) Provede se instrukcí SWI. Inicializuje se postup jako u normálního přerušení. Vektor přerušení se získává z paměťových míst $FFF6 a $FFF7. Toto přerušení nelze zamaskovat a při provádění instrukce SW1 se nastavují masky přerušení (I a X).
SOFTWAROVÉ PŘERUŠENÍ (2) Mikrořadič má možnost ještě patnácti interních přerušení od vnitřních periferií. Princip provedení je stejný jako IRQ s výjimkou přerušovacích vektorů, jež jsou po každé přerušení navzájem odlišné.
SOFTWAROVÉ PŘERUŠENÍ (2) Jestliže mikrořadič při provádění programu narazí na neznámý operační kód, vznikne další druh přerušení, zvaný ILLOP (Illegal Operational Code). Vektor přerušení se získává z paměťových míst $FFF8 a $FFF9. Provedení přerušení je stejné jako u přerušení SWI.
SOFTWAROVÉ PŘERUŠENÍ (3) Přerušovací vektory jsou všechny umístěny před koncem adresovatelného prostoru. Tento prostor je zpravidla vyplněn pamětí ROM (EPROM) a vektory přerušení představují standardní adresy, na kterých se nachází opět ve většině případů standardizované adresy, směřující do oblasti vnitřní paměti RWM.
SOFTWAROVÉ PŘERUŠENÍ (3) Na uvedená paměťová místa lze pak umístit nepodmíněné skoky (JMP), které směřují na počátky příslušných programů pro obsluhu jednotlivých typů přerušení.
SOFTWAROVÉ PŘERUŠENÍ Přehled všech přerušení je dán tabulkou. Priorita uvedených přerušení je dána pořadím jejich uvedením v tabulce. V případě jednoho, vybraného ze skupiny maskovatelných přerušení, lze tuto prioritu převést na první místo v této skupině naprogramováním registru HPRIQ.
Přehled a prioritní pořadí všech přerušení v mikrořadiči 68HC11 Vysvětlivky
Pole registrů 68HC11 Pole registrů obsahuje 64 řídicích a stavových registrů umístěných standardně od adresy $_000, tzn. že nejvyšší půlbajt adresy (nahrazený čárou) lze naprogramovat v registru INIT a tím umístit toto pole registrů na počátek kterýchkoliv čtyř kilobajtů adresovatelného paměťového prostoru. Po resetu se počátek registrového pole automaticky nastavuje na adresu $1000.
Pole registrů Přehled registrů 1 Přehled registrů 2