<< Előző oldal Vissza a tartalomjegyzékhez Következő oldal >>
5.2.1. Ébredés megszakításra
Ha a GIE globális megszakítás engedélyező vezérlőbittel tiltva van a megszakításvégrehajtás, a bejövő megszakításkérés "felébreszti" a mikrovezérlőt SLEEP állapotból. Csak azok a megszakításkérések érvényesülnek, amelyek a saját engedélyező bitjükkel engedélyezve vannak.
A GIE = "0" mellett beérkező megszakításkérésnek a következő eredményei lehetnek:
ˇ
ha a SLEEP utasítás végrehajtásának megkezdése előtt jelenik meg a megszakításkérés, a SLEEP utasítás helyett NOP utasítást hajt végre a mikrovezérlő, így a WDT és utóosztója sem törlődik, és a és bitek sem állnak be "1", illetve "0" értékűre. (Ha a megszakításkérés még jóval a SLEEP utasítás előtt jelenik meg, akkor a kérés (a jelzőbitjének törléséig) várakozik a SLEEP utasításra, miután szintén a fenti folyamat megy végbe.)
ˇ
ha a megszakításkérés a SLEEP utasítás végrehajtása közben vagy utána jelenik meg, a mikrovezérlő azonnal kilép a SLEEP állapotból, de a SLEEP utasítás még befejeződik, a WDT és utóosztója törlődik és a jelzőbitek felveszik a = "1" és = "0" értékeket.
Ha a megszakításkérés jelzőbitek SLEEP utasítás előtti tesztelése el is lett végezve, megtörténhet, hogy még az utasítás végrehajtása előtt megjelenik egy kérés, ami az utasítás figyelmen kívül hagyását eredményezi. Az, hogy a SLEEP utasítás végbement-e a bit tesztelésével állapítható meg. Ha = "1", akkor a SLEEP utasítás helyett egy NOP utasítás hajtódott végre.
Hogy engedélyezett WDT mellett ne történhessen akaratlan Reset-esemény, a SLEEP utasítás előtt mindig alkalmazni kell egy CLRWDT utasítást. Így a SLEEP állapot időtartama is ismert lesz.
A SLEEP állapotba való belépés és a megszakításkérésre történő "ébredés" idődiagramja látható a következő ábrán. (GIE = "0")
A tOST az OST oszcillátor késleltető egység késleltetési ideje. RC oszcillátorok esetében ez az időtartam tOST = 0.
Az ábrán látható, hogy "ébredés" után a programfutás a SLEEP utasítás végrehajtása alatt beolvasott utasítással folytatódik.
A következő ábrán a SLEEP állapotba való belépés és az onnan történő megszakításelfogadás idődiagramja látható. (GIE = "1")
Az ábrán látható, hogy "ébredés" után a programfutás a SLEEP utasítás végrehajtása alatt beolvasott utasítással indul. Ez a programfutásban zavart okozhat, így célszerű ide egy NOP utasítást helyezni.
Tudomány és Technika (test@t-es-t.hu)
<< Előző oldal Vissza a tartalomjegyzékhez Vissza a lap tetejére Következő oldal >>