220 likes | 363 Views
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í.
E N D
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š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 • Přehled • 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