Vissza a főoldalra    Vissza a PIC főoldalra

<< 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")

Ébredés SLEEP-ből (GIE=0)
5.2.1-1. Ábra

      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")

Ébredés SLEEP-ből (GIE=1)
5.2.1-2. Ábra

      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 >>

Vissza a főoldalra    Vissza a PIC főoldalra