Přerušovací systém mikrokontroléru ATMEGA a přerušovací systém PLC WAGO Flashcards

1
Q

Přerušení Arduino

A

Přerušení (anglicky interrupt) je v informatice metoda pro asynchronní obsluhu událostí, kdy procesor přeruší vykonávání sledu instrukcí, vykoná obsluhu přerušení, a pak pokračuje v předchozí činnosti.

Obsluha přerušení (zkratka ISR, anglicky interrupt handler nebo též interrupt service routine), je v informatice speciální procedura, která je v CPU / MCU vyvolána při obsluze přerušení. Přerušení je asynchronní událost, při jejímž příchodu je přerušena činnost procesoru, je vyvolána obsluha přerušení, a poté činnost procesoru pokračuje na místě, kde bylo přerušení vyvoláno.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Pokud potřebujeme obsloužit nějakou připojenou periférii, máme dvě možnosti:

A

opakovaně v programu tuto periférii kontrolovat a případně reagovat spuštěním nějakého kódu.

využít tzv. systému přerušení

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Systém přerušení Arduino

A

je HW, který dokáže detekovat událost způsobenou nějakou periférií a oznámit to procesoru.

Procesor může toto oznámení:

ignorovat
spustit tzv. “obsluhu přerušení” - typicky metoda, která říká, co se má stát, když dané přerušení nastalo
Jednoduše řečeno, přerušení může “pozastavit” provádění hlavní smyčky programu, “odskočit” si provést nějaký kód do obsluhy přerušení a pak se opět vrátit zpět do hlavní smyčky.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Zdrojem přerušení u mikročipu ATmega328P může být:

A
Externí přerušení 0/1
Změna hodnoty na pinu 0/1/2
Čítač / časovač 0/1/2
Sériová linka UART
Sériová sběrnice SPI
Sériová sběrnice I2C
a další
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Arduino - přerušení externí

A

Programování pod přerušením je ve Wiringu značně omezující. V podstatě si můžeme nastavit pouze externí přerušení 0 a 1.

Tato přerušení jsou vyvedena na piny:

2 pro přerušení EXT0
3 pro přerušení EXT1
Pro tyto potřeby máme ve Wiringu tyto funkce:

Nastavení obsluhy přerušení provedeme funkcí:

attachInterrupt(digitalPinToInterrupt(pin), isr, mode)
parametr: pin - číslo pinu, na kterém nastavujeme přerušení
parametr: isr - void funkce, která se bude spouštět, když přerušení nastane
parametr: mode - kdy nastane přerušení, přípustné hodnoty jsou:
* LOW - když je na pinu LOW
* RISING - když nastala na pinu změna z LOW do HIGH
* FALLING - když nastatla na pinu změna z HIGH do LOW
* CHANGE - když nastala na pinu změna (jakákoliv)
návratová hodnota: není

Pro zrušení spouštění obsluhy přerušení použijeme funkci:
detachInterrupt(digitalPinToInterrupt(pin))

Dále máme ještě funkce:
interrupts()
zapne přerušovací systém

noInterrupts()
vypne přerušovací systém

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Přerušení PLC

A

:)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Schopnost zpracovat přerušení

A

Ne všechny CPU v řadě různých PLC nemusí umožňovat zpracování přerušení, tedy je potřeba zvolit vhodné CPU, které je systémově vybaveno pro zpracování přerušení. Obecně, zpracování přerušení musí být v PLC povoleno, události musí být přiřazena obslužná rutina a musí být stanovena priorita přerušení.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Zásobník přerušení

A

Počet zpracovávaných přerušení je u různých PLC různý a závisí na velikosti zásobníku přerušení, do kterého se ukládají příchozí požadavky na přerušení. Jednoduché CPU poskytují možnost zpracování 2-4 přerušení, střední CPU 8 přerušení a výkonné CPU mohou zpracovat až 16 přerušení. K tomu je potřeba vzít v úvahu hloubku vnoření programu v okamžiku zpracování přerušení pokud nemá systém CPU oddělený zásobník hloubky vnoření právě pro přerušení.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Priorita přerušení

A

Každé přerušení má přiřazenu určitou prioritu s kterou se přerušení zpracuje v případě, že jednom konkrétním okamžiku dojde k výskytu více požadavků na přerušení. Jako první se zpracuje přerušení s nejvyšší prioritou, obvykle označována jako 0 (nula, tedy nesnese žádného odkladu). Ostatní přerušení s nižší prioritou jsou zpracována až po dokončení zpracování přerušení s vyšší prioritou. Pokud již probíhá zpracování nějakého přerušení, může být toto samo přerušeno požadavkem zpracování přerušení s vyšší prioritou, přerušení s nižší prioritou jsou obsloužena nebo dokončena po dokončení zpracování přerušení s vyšší prioritou.

Poznámka
Přerušení, která nemohou být zpracována z důvodu probíhajícího zpracování přerušení s vyšší prioritou nebo jsou sama přerušena zpracováním přerušení s vyšší prioritou, jsou ukládána do zásobníku přerušení, odkud jsou potom zpětně volána po dokončení přerušení s vyšší prioritou.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Zpracování přerušení

A

Zpracování přerušení má na starosti systém CPU, který zpracovává požadavky na přerušení od různých zdrojů a podle pořadí (více přerušení se stejnou prioritou) a nebo podle priority vyvolává zpracování obslužných rutin.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Rutina obsluhy přerušení

A

Rutina obsluhy libovolného přerušení by měla být co možná nejkratší a nejjednodušší. Žádné zpětné skoky, žádné cykly, žádné nadbytečné volání podprogramů z přerušení. Pokud je rutina obsluhy přerušení zbytečně dlouhá, může dojít k situaci, kdy by nastala stejná událost, která by požadovala vyvolání již prováděné rutiny obsluhy přerušení. Rekurzivní volání těchto rutin není povoleno (na rozdíl od podprogramů) a tento stav skončí chybou, tj. STOP stavem CPU. Taktéž může dojít k přetížení systému příliš častým voláním přerušení, byť různých priorit, kdy systém tuto zátěž již nestačí zpracovat nebo dojde k nadměrnému prodloužení doby cyklu, obojí může mít za následek STOP stav CPU.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Zákaz přerušení

A

Zákaz přerušení zdánlivě popírá význam a důvody použití přerušení. Mohou však nastat případy, kdy se zpracovává úsek programu, například výpočet hodnoty, která může být v přerušení použita a nebo přerušení může naopak změnit hodnoty proměnných použitých pro výpočet. V takovém případě by byl výsledek výpočtu různý podle toho, proběhlo-li přerušení či nikoliv. Pro takový případ je možno reakci na přerušení potlačit (odložit), eventuelně upravit používání proměnných tak, aby k této situaci nedošlo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Samostatné přerušení PLC

A

Jednoduchý případ samostatných přerušení je zobrazen na obrázku 1, kdy je při přijmutí požadavku přerušení přerušeno zpracování hlavního programu anebo podprogramu. Následně je vyvolána obsluha přerušení INT 1 nebo INT 2, podle zdroje požadavku přerušení … procesní, uživatelské, diagnostické.

Pokud se požadavky na přerušení vzájemně nepřekrývají, jsou přerušení zpracovány v pořadí, v jakém vznikly. Po zpracování přerušení se činnosti CPU, vrátí ke zpracování hlavního programu, konkrétně za poslední instrukci, která ještě byla zpracována.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Postupné přerušení PLC

A

Příklad postupného zpracování přerušení je zobrazen na obrázku 2. V podstatě nezáleží na tom, je-li zpracováván hlavní program nebo podprogram. Při přijetí požadavku přerušení je vyvolána obslužná rutina INT 1, protože požadavek na toto přerušení byl přijat jako první.

V době zpracování přerušení INT 1 je ale přijat požadavek přerušení s vyšší prioritou, INT 0. Zpracování přerušení INT 1 je samo přerušeno a je vyvolána rutina pro obsluhu přerušení INT 0, které má vyšší prioritu. Po dokončení INT 0 je zpracování předáno k dokončení rutiny přerušení INT 1 a po jejím dokončení zpět programu, respektive podprogramu.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Současné přerušení PLC

A

Současné přerušení je zobrazeno na obrázku 3. Tento příklad ukazuje řešení situace, kdy se v témž okamžiku vyskytnou dva nebo více požadavků na přerušení ale s různou prioritou.

Zpracování hlavního programu nebo podprogramu je přerušeno a řízení je předáno rutině, která obsluhuje přerušení s vyšší prioritou, konkrétně INT 0. Teprve po dokončení obsluhy přerušení s vyšší prioritou je řízení předáno rutině pro obsluhu přerušení s nižší prioritou INT 1. Po jejím dokončení se zpracování vrátí k hlavnímu programu, respektive podprogramu.

Poznámka

Některé typy CPU dovolují definovat, jestli je možno zahájit rutinu přerušení po libovolné dokončené instrukci programu (na hraně instrukce) nebo přerušení může být provedeno až po zpracování segmentu (sítě) programu (na hraně segmentu).

Povolení zpracování přerušení až po dokončení programového bloku nemá smysl, protože v případě, kdy by program obsahoval pouze hlavní program, přerušení by se realizovalo až na konci programu, což by popíralo výhodu rychlé reakce. Taktéž, pokud by bylo možno přerušení zpracovat až po dokončení programového bloku vyjma přerušení samého.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Zdroje přerušení PLC

A

-

17
Q

Uživatelské přerušení

A

je takové, které vzniká na základě toho, že jej programátor nějakým způsobem nadefinuje, tedy kdy a za jakých podmínek může vzniknout. Reakcí na toto přerušení je volání odpovídajícího reakčního organizačního bloku.

18
Q

Hardwarové přerušení

A

reaguje na události procesu, detekované hardwarem / periferiemi PLC. Například na změnu stavu signálu digitálního signálu, překročení limitu analogové hodnoty, dosažení požadovaného počtu impulsů HW čítače a podobně. Pro realizaci tohoto přerušení musí být periferie schopné generovat požadavek přerušení při konkrétní události.

19
Q

Cyklické přerušení

A

je províděno v pravidelném cyklu, periodě, která je mu přidělena, obecně přerušení s kratší periodou mají vyšší prioritu a naopak, jinak by nemuselo dojít obsloužení požadavků s kratší periodou požadavku.

20
Q

Kalendářní přerušení

A

umožňuje volání konkrétní rutiny prvně od nastaveného prvního datumu a času a dále opakovaně v intervalu minut, hodin, dnů, měsíců, roků.

21
Q

Synchronní přerušení

A

se provádí synchronně v konstantní cyklické periodě. Používá se pro obsluhu decentrálních periferií připojených na síti PROFIBUS-DP nebo PROFINET IO v izochronním módu přístupu k periferiím.

22
Q

Časově zpožděné přerušení

A

umožňuje provést “odložení” zpracování části programu od okamžiku přijetí požadavku o nastavenou dobu.

23
Q

Systémová přerušení

A

jsou generována na základě vzniku systémové události, například chyby, požadavku na diagnostiku a pod. Tato přerušení jsou definována, kdy vzniknou, při jaké události a programátor má možnost tato přerušení povolit nebo zakázat a zvolit vhodnou reakci na konkrétní příčinu.
Zpravidla, pokud není definována reakce na vznik chybového stavu reakčním organizačním blokem, přejde PLC do stavu STOP, tedy do bezpečného stavu, kdy vzniklá chyba nemůže ovlivnit řízený proces v tom smyslu, že by se zpracovávaly například neplatné hodnoty měření nebo by nebylo možno vlivem závady periferie ovládat část zařízení.

24
Q

Přerušení DPV0, DPV1, DPV2, DPVx

A

přerušení jsou generována podřazenými částmi systému (slave), decentrálními periferiemi (proto DP) směrem k nadřazenému CPU (master) a požaduje, aby byla v CPU provedena rutina obsluhy přerušení, např. diagnostiky. Charakter přerušení a zpracování je různý podle verze (proto V0, V1, V2).

25
Q

Asynchronní chybové přerušení

A

reaguje na vznik chybové události, například požadavku diagnostiky, chyby programu a pod.

26
Q

Diagnostické přerušení

A

je generováno nějakou částí systému PLC, pokud tato část zjistí provozní anomálii, tedy vyžaduje diagnostiku. Může se jednat nejen o hardwarovou závadu ale i o chybu zpracování instrukcí v programu.