Přerušení programu Střední odborná škola Otrokovice Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Miloš Zatloukal Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Charakteristika DUM 2 Název školy a adresaStřední odborná škola Otrokovice, tř. T. Bati 1266, Otrokovice Číslo projektuCZ.1.07/1.5.00/ /2 AutorIng. Miloš Zatloukal Označení DUM VY_32_INOVACE_SOSOTR-PE-CT/1-EL-5/16 Název DUMPřerušení programu Stupeň a typ vzděláváníStředoškolské vzdělávání Kód oboru RVP26-41-L/52 Obor vzděláváníProvozní elektrotechnika Vyučovací předmětČíslicová technika Druh učebního materiáluVýukový materiál Cílová skupinaŽák, 15 – 16 let Anotace Výukový materiál je určený k frontální výuce s doplňujícím výkladem vyučujícího; náplň: Výukový materiál seznamuje s přerušením programu mikropočítače a počítače. Vybavení, pomůckyDataprojektor Klíčová slovaProcesor, program, adresa, přerušení, vektor přerušení, maskování, IRQ,NMI Datum
Obsah tématu Přerušení – co, kde, čím Signál IRQ Obsluha žádosti o přerušení Řadič přerušení Přerušovací podsystémy a) systém bez přerušení b) jednoduchý – s jedním přerušením c) složitější – více přerušení Přerušovací podsystém u PC Přerušení programu
Přerušení programu (Interrupt) - jde o reakci mikropočítače na nějakou událost - tato svým příchodem přeruší aktuálně probíhající program Kde může událost nastat ? - uvnitř mikropočítače - z vnějších obvodů a zařízení - častá je kombinace vnitřních a vnějších událostí – podnětů Co může vyvolat přerušení ? Jsou to obvody: - diagnostické (monitorovací) - ochranné - zabezpečovací - přetečení časovače – čítače - změna na vstupech portu - příjem znaku sériovým kanálem - dokončení převodu v A/Č převodníku
Přerušení programu Základní požadavek na mikropočítač po přijetí podnětu: - dostatečně rychlá reakce mikropočítače – s minimálním zpožděním Signál vzniku události - značí se IRQ (Interrupt Request) – žádost o přerušení (ŽOP) - může to být úroveň signálu (logická nula nebo jedna) - hrana – vzestupná nebo sestupná (ta trvá jen krátký čas – proto je nutný paměťový prvek – např. klopný obvod) Obr. 1
Obsluha žádosti o přerušení - spočívá ve spuštění dalšího podprogramu (ten řeší uspokojení požadavku na přerušení nějakým podnětem) - po dokončení obslužného podprogramu se řízení předává zpět - hlavní program pokračuje přesně z místa, kde přišla žádost o přerušení - systém zajistí uložení návratové adresy původního (hlavního) programu (před vstupem do obslužného programu přerušení) zásobník - slouží pro uchování návratové adresy (podobně jako při volání (spouštění) ostatních podprogramů) RETI, IRET – Return From Interrupt – Návrat z Přerušení - návratová instrukce, kterou po vyřešení žádosti o přerušení podprogramem pro obsluhu přerušení tento podprogram končí - ze zásobníku se automaticky přesune uschovaná návratová adresa do čítače instrukcí a přerušený program tak pokračuje dál řadič přerušení (Interrupt Controller) - je samostatný obvod – řídí činnost složitějšího přerušovacího systému
Dělení přerušovacích podsystémů a) systém bez přerušení b) jednoduchý – s jedním přerušením c) složitější – více přerušení, s výběrem podle přednosti a) systém bez přerušení - používá se u nejjednodušších mikropočítačů (nejlevnějších) - přerušení není hardwarově možné - přesto lze reagovat na nějakou událost a obsloužit ji - je to ošetřeno programově - program periodicky testuje, zda událost nenastala - nevýhody – program je pak - složitější - delší - pomalejší - navíc je tímto procesor zbytečně zatěžován -např. může být v programové smyčce testováno - sepnutí spínače - stisknutí klávesy - změna na některém bitu z portu mikropočítače
b) jednoduchý – s jedním přerušením - opět vhodné pro jednodušší systémy - jeden přerušovací vstup - žádostí o přerušení je stav signálu – hrana nebo úroveň (bývá to nastavitelné) - systém využívá i možnosti povolit nebo zakázat přerušení - Kdy povolit? - když právě řešení žádného přerušení neprobíhá - Kdy zakázat? - když procesor právě provádí důležitý výpočet - už probíhá obsluha předchozího přerušení - obsluha žádosti o přerušení = skok na pevnou adresu (začíná na ní podprogram pro obsluhu přerušení) Co když mám jen jeden vstup pro přerušení a více možných zdrojů přerušení ? - pak je nutné programem rozlišit jaké zařízení přerušení vyvolalo
c) složitější - více přerušení - o může žádat více zdrojů - vnitřních (např. přetečení čítače/časovače) - vnějších (externích) Nezbytný je zde řadič přerušení s těmito úkoly: - registrovat aktivní žádosti o přerušení - pokud je jich více, pak je řadit je podle přednosti (důležitosti – priority) - identifikovat zdroj požadavku – (a předat tuto informaci procesoru) - povolit (zakázat) všechna nebo jen některá přerušení (jde o tzv. maskování) Registr požadavků na přerušení - uchovává jednotlivé žádosti - jeho výstupy mohou být blokovány (pak jsou dále zpracovávány jen povolené žádosti) Jak lze zablokovat nějakou žádost o přerušení? - pomocí bitů registru masky přerušení IMR (Interrupt Mask Register)
Maska -jde o číslo, které kombinací s jiným číslem (obsahem řídicího registru) způsobí změnu určitých bitů (zapíše do nich nulu nebo jedničku – to má význam povolení nebo zákazu) Priorita Prioritní dekodér - uplatní se v případě, že dojde k žádosti od dvou či více zdrojů současně - rozhodne, který zdroj přerušení bude obsloužen jako první - přiděluje každému požadavku číslo pořadí Signál INT - je vytvářen řadičem přerušení při přijetí nějaké žádosti o přerušení - signál INT informuje procesor, že přišel nějaký požadavek na přerušení - signál INT může být řízen bitem globálního (celkového) přerušení IE (Interrupt Enable – Povolení přerušení) Nemaskovatelné přerušení NMI (Non Maskable Interrupt) - speciální signál používaný v případě havárie (selhání, zablokování obvodů) - má absolutní prioritu - jeho signál není veden přes řadič přerušení. jeho obsluha je provedena rychleji než obsluha ostatních přerušení
Vyhodnocení priorit (pořadí podle důležitosti) - pevná priorita podle důležitosti vstupu přerušení (např. přednost vnějšího vstupu před vnitřním časovačem) - volná priorita (je přidělitelná softwarově – instrukcí v programu) Příklad pořadí pevných priorit: 1) Nemaskovatelné přerušení (NMI) 2) Přerušení od diagnostických obvodů 3) Vstupy vnějších přerušení 4) Časovače/čítače – jejich přetečení 5) Sériové vstupy – výstupy 6) A/Č převodníky Volná priorita přerušení: - znamená možnost přidělit každému zdroji přerušení libovolnou prioritu - nesmí být ale dvě stejné - nastavené priority lze je měnit i během programu Příklad: jednočipový mikropočítač Intel 8051 – má celkem 5 zdrojů přerušení 2 vnější zdroje přerušení (INT0 a INT1) 2 přerušení od časovačů/čítačů (TF0, TF1) 1 přerušení od sériového kanálu (RI spolu s TI)
Co to je vnořené přerušení? - jedná se o příchod žádosti o přerušení (např. č. 2) v době právě obsluhovaného přerušení č. 1 (tj. právě běží podprogram obsluhy přerušení č. 1) - většinou se v takovém případě neděje nic nového (protože v době již prováděného přerušení bývá další přerušení zakázáno) Zdůvodnění: - při déle trvající žádosti o přerušení by docházelo k opakovanému zahájení dalších přerušení (s výjimkou situace, že by zpracovávané přerušení nemohlo být přerušeno stejným zdrojem přerušení) Po ukončení obsluhy přerušení a návratu do hlavního programu je přerušení opět povoleno (buď zvláštní instrukcí nebo návratovou instrukcí)
Přerušovací podsystém u PC IRQ – zkratka z Interrupt ReQuest (česky požadavek na přerušení) - označuje signál, kterým požádá nějaké zařízení (např. klávesnice) procesor o pozornost - požádá o přerušení probíhajícího procesu (programu, výpočtu) (za účelem provedení momentálně důležitější akce) Jaký je mechanizmus přerušení? - zařízení sdělí řadiči přerušení, že potřebuje provést přerušení např. stisknutím klávesy na klávesnici je také vyslán požadavek na přerušení - řadič přerušení upozorní CPU, že jsou nějaká zařízení čekající na přerušení - CPU ověří, zda může přerušení přijmout a přeruší probíhající výpočet - zeptá se řadiče na nejdůležitější z čekajících přerušení a spustí jeho obsluhu - dojde k pozastavení právě probíhajícího procesu (a uložen jeho aktuální stav) - je provedena základní obsluha žádajícího zařízení - CPU informuje řadič přerušení o dokončení obsluhy přerušení - následně je obnoven stav přerušeného procesu a tento pokračuje dále
Přerušovací podsystém u PC - pokračování - přerušení jsou označena zkratkou IRQ s číslem přerušení - starší počítače měly 8 přerušení (IRQ0 až IRQ7) – 1 řadič přerušení - později 16 (IRQ0 do IRQ15 ) - 2 řadiče přerušení - první z nich (primární = tzv. master) přímo komunikuje s procesorem - druhý, (tzv. slave), signalizuje prvnímu řadiči pomocí přerušení IRQ 2 - první řadič předává tento signál přímo procesoru - řadič přerušení - vyhodnocuje priority přerušení - umožňuje některá přerušení ignorovat (maskovat) - pamatuje si, která přerušení čekají na vyřízení - novější systémy mají 24 přerušení (+ 8 pomocných)
Kontrolní otázky 2. U výpočetního systému s jednoduchým přerušením bude přerušení povoleno: a)V době, kdy probíhají důležité výpočty b)V době, kdy už probíhá obsluha předchozího přerušení c)V době, kdy má procesor volněji 1. Pro výpočetní systém bez přerušení neplatí: a)Žádné přerušení není možné b)Přerušení nemá hardwarovou podporu c)Přerušení je možné jen programově 3. Zkratka NMI není spojena s: a)Havarijním stavem systému b)Absolutní předností obsluhy vysoce důležité žádosti o přerušení c)Přerušením, které je vedeno přes řadič přerušení
Kontrolní otázky – správné odpovědi – červené 2. U výpočetního systému s jednoduchým přerušením bude přerušení povoleno: a)V době, kdy probíhají důležité výpočty b)V době, kdy už probíhá obsluha předchozího přerušení c)V době, kdy má procesor volněji 1. Pro výpočetní systém bez přerušení neplatí: a)Žádné přerušení není možné b)Přerušení nemá hardwarovou podporu c)Přerušení je možné jen programově 3. Zkratka NMI není spojena s: a)Havarijním stavem systému b)Absolutní předností obsluhy vysoce důležité žádosti o přerušení c)Přerušením, které je vedeno přes řadič přerušení
Seznam obrázků: Obr. 1: vlastní
Seznam použité literatury: [1] Matoušek, D.: Číslicová technika, BEN, Praha, 2001, ISBN [2] Blatný, J., Krištoufek, K., Pokorný, Z., Kolenička, J.: Číslicové počítače, SNTL, Praha, 1982 [3] Kesl, J.: Elektronika III – Číslicová technika, BEN, Praha, 2003, ISBN X
Děkuji za pozornost