<< Előző oldal Vissza a tartalomjegyzékhez Következő oldal >>
7.1. A megszakítások általános jellemzői
A közepes teljesítményű PIC mikrovezérlők felépítése lehetővé teszi belső perifériaesemények, valamint külső események kezelését megszakításos rendszerrel. Minden egyes megszakításforrás külön-külön vezérlőbittel engedélyezhető és tiltható, és a megszakítások együttesen is engedélyezhetők és tilthatóak egyetlen globális megszakításvezérlő bittel (GIE).
A megszakításkérés hatására a mikrovezérlő normál sorrendű programvégrehajtása megszakad, a GIE bit nullára vált és a programszámláló értéke a verembe kerül. A programszámlálóba a 0004h megszakítás vektor kerül. A programmemóriában ettől a címtől kezdve kell elhelyezni a megszakításkezelő szubrutint.
Mivel minden egyes megszakításforráshoz tartozik egy-egy jelzőbit, ezek vizsgálatával a megszakításkezelő szubrutin képes meghatározni a megszakítás típusát, és ennek megfelelően kiválasztani a válaszlépéseket. A megszakítások jelzőbitjeit szoftveresen kell törölni a megszakításkezelő szubrutinból. Ennek elmulasztása esetén a GIE bit automatikus visszaállásakor a megszakítás újrahívódik, majd újra és újra..., vagyis a programvégrehajtás végtelen ciklusba kerül. Ez a tulajdonság felhasználható az egyszerre befutó megszakításkérések prioritásos kezelésére. A megszakításkezelő szubrutin a jelzőbiteket fontossági sorrendben kell, hogy megvizsgálja és az első megtalált kérésnek megfelelő programrészt hajtja végre az adott jelzőbit nullázásával együtt. Így a további beérkezett kérések jelzőbitjei aktívak maradnak és a megszakításkezelő szubrutin végén, a GIE bit "1"-re váltásakor újabb megszakítás generálódik.
A megszakításkezelő szubrutin befejező utasítása a RETFIE utasítás, amelynek hatására:
ˇ
a visszatérési cím a veremből a programszámlálóba töltődik;
ˇ
és a GIE bit "1"-re vált, tehát a megszakítások újra engedélyezettek lesznek.
Az egyes mikrovezérlők a beépített perifériáktól függően a következő megszakításforrásokat tartalmazhatják:
ˇ
az INT csatlakozón fellépő külső megszakítás;
ˇ
Timer0 túlcsordulás megszakítás;
ˇ
Timer1 túlcsordulás megszakítás;
ˇ
Timer2 értékhatár átlépés megszakítás;
ˇ
A port állapotváltozás megszakítás (PIC16F875);
ˇ
B port felső négy bit állapotváltozás megszakítás;
ˇ
C port felső négy bit állapotváltozás megszakítás (PIC14000);
ˇ
GPIO port bitek állapotváltozás megszakításai (PIC12xxx);
ˇ
Komparátor átbillenés megszakítás;
ˇ
Párhuzamos Slave port (PSP) megszakítás;
ˇ
USART megszakítások;
ˇ
SSP megszakítás;
ˇ
CCP modul megszakítás;
ˇ
A/D átalakító konverzió vége megszakítás;
ˇ
A/D átalakító számláló túlcsordulás megszakítás (PIC14000);
ˇ
LCD modul megszakítás;
ˇ
Adat EEPROM írás vége megszakítás;
ˇ
Telep kimerülés-jelző modul (LVD) megszakítás;
ˇ
USB megszakítás.
A felsorolt megszakításforrások jelzőbitjei az INTCON és PIRx; az engedélyezőbitek pedig az INTCON és PIEx vezérlő regiszterekben vannak elhelyezve.
A jelzőbitek a megszakításforrás engedélyezettségétől függetlenül működnek, tehát minden esetben jelzik az adott esemény létrejöttét.
Az INTCON regiszterben található GIE globális megszakítás engedélyező bitet nullázó utasítás hatására a már elfogadott megszakításkérések is érvénytelenítődnek. Ha a megszakítás elfogadás már annyira előrehaladott állapotú, hogy a GIE nullázó utasítás végrehajtása után a megszakítás kezelő szubrutin első utasítása következne, akkor a mikrovezérlő egy NOP utasítást hajt végre. Természetesen a megszakításkérés ilyenkor sem veszik el, csak várakozik a GIE bit "1"-re állításáig.
A közepes teljesítményű PIC mikrovezérlők képesek kilépni a SLEEP üzemmódból bármely engedélyezett megszakításkérés hatására. A megszakításra történő ébredés és az azt követő működés a SLEEP üzemmód leírásánál már bemutatásra került.
Tudomány és Technika (test@t-es-t.hu)
<< Előző oldal Vissza a tartalomjegyzékhez Vissza a lap tetejére Következő oldal >>