Vissza a főoldalra    Vissza a PIC főoldalra

<< Előző oldal   Vissza a tartalomjegyzékhez   Következő oldal >>

 


13.7. Bemenetváltozásra generálódó megszakítás


      A közepes teljesítményű PIC mikrovezérlők egyes (általában négy darab) port kivezetései bemenetként konfigurálva képesek szintváltásra megszakítást kezdeményezni. Ez számos feladatnál nyújt nagy segítséget.
      A bemenetváltozásra megszakítást generáló kivezetések felhasználhatók külső megszakítások megvalósításához, amelyekkel így akár 5-6 különböző külső megszakításkérés is kezelhető. (Például nyomógomb megnyomásra, kapcsoló átváltásra generálódó megszakításkérések.)
      A bemenetváltozás a SLEEP üzemmódból való kilépésre is felhasználható, ha a megszakításkérések globálisan tiltva vannak, de a port-változás megszakítás, annak vezérlő bitjével engedélyezve van.
      A port-változás megszakítás az erre alkalmas kivezetéseken általában csak együttesen engedélyezhető az INTCON regiszterben elhelyezett xxIE engedélyezőbit segítségével, de egyes típusoknál az engedélyezés bitenként is megoldott az IOC regiszter segítségével. A megszakítási feltétel (értékváltozás a bemeneten) az INTCON regiszterben elhelyezett xxIF jelzőbitet logikai "1"-re állítja. Ha a megszakításkérés, annak vezérlőbitjével engedélyezve van, akkor létrejön az ébresztő és megszakításkérő jel. Így megvalósulhat a SLEEP üzemmódból való kilépés, majd a megszakításvégrehajtás, ha a megszakítások globálisan is engedélyezettek.
      Az xxIF jelzőbitet szoftverből kell törölni!
      A legtöbb mikrovezérlőnél a B port felső négy kivezetése (RB4..RB7) működhet megszakításforrásként.
      A következő ábra a régebbi mikrovezérlő típusok (PIC12F629, PIC12F675, PIC16F84A, PIC16F630, PIC16F676, PIC14000, PIC16C432, PIC16C64x, PIC16C66x, PIC16C62x, PIC16CE62x) megszakításforrásként is felhasználható kivezetéseinek bemeneti áramkörét mutatja be.

A port-változás megszakítás áramköre
13.7-1. Ábra

      A DT3 tároló Ck bemenete a jel lefutó élét érzékeli és ennek hatására a kivezetés logikai szintjét a tárolóba lépteti és tárolja a következő PORT olvasásig.
      A DT5 tároló a Ck bemenetére jutó logikai "0" szint hatására átlátszó, így tulajdonképpen a PORT olvasáson (Q2) kívüli időtartam alatt a tároló kimenete követi a port-kivezetés szintjét.

      Egy megszakításkérés létrejöttéhez az xxIF jelzőbit logikai szintjének "1"-re kell változnia. Ez megvalósul, ha a kimeneti "VAGY"-kapu bármely bemenetén logikai "1" szint jelenik meg; vagyis, ha bármely port áramkör "megszakításkérés" jelet ad.
      A port áramkör "megszakításkérés" jele abban az esetben jön létre, ha a kimenő "ÉS"-kapu mindkét (illetve mindhárom) bemenetén logikai "1" szint van; vagyis akkor, ha a port az adatirány-regiszterben bemenetként van konfigurálva, (ha a megszakítás generálás az IOCx kivezetésenkénti vezérlő bittel engedélyezve van) és a változást észlelő "Kizáró-VAGY"-kapu bemenetein a logikai szintek egymástól eltérnek.
      A kivezetés logikai szintjét a DT5 tároló folyamatosan követi, amely szint a port olvasásakor a DT3 tárolóba is bekerül. Ha ezután megváltozik a kivezetés logikai szintje, az azonnal a DT5 tároló kimenetére kerül, így a két tároló kimenő jele eltérő lesz, vagyis létrejön a megszakításkérést kezdeményező jel.
      SLEEP állapotba lépéskor a mikrovezérlő a Q1 belső órajel logikai "1" szintjének megfelelő belső állapotban áll meg. Ez teszi lehetővé, hogy az átlátszó tárolón keresztül a bemenő jel a "Kizáró-VAGY"-kapu bemenetére kerüljön és az ébresztő és megszakításkérő jel létrejöjjön.

Vissza a lap tetejére

      A következő ábra egy újabb típusú, megszakításkérésre alkalmazott bemeneti áramkört mutat be (PIC16C7x, PIC16C71x, PIC16C77x, PIC16C78x, PIC16C7x5, PIC16C92x, PIC16F62xA, PIC16F7x, PIC16F87x, PIC16F87xA, PIC16F81x, PIC16F87, PIC16F88).

Újabb típusú bemeneti áramkör
13.7-2. Ábra

      A DT3 tároló az aktuális bemenő jelet tárolja.
      A DT5 tároló a port legutóbbi olvasásakor jelen levő bemenő jelet tárolja.
      A kivezetés logikai szintje folyamatosan jelen van mindkét tároló D bemenetén. A DT3 tároló Ck beléptető bemenete a bemenő jel logikai "1" szintjét, a DT5 tároló Ck bemenete a bemenő jel lefutó élét érzékeli és erre lép működésbe.
      A bemenő jel beolvasását a DT3 tárolóba a Q1 belső órajel logikai "1" szintje minden utasításciklusban elvégzi.
      A DT5 tárolóba a bemenő jel csak a port olvasásakor kerül be a Q2 és Q3 belső órajelek átfedéseinél keletkező impulzus hatására.

      Egy megszakításkérés létrejöttéhez az xxIF jelzőbit logikai szintjének "1"-re kell változnia. Ez megvalósul, ha a kimeneti "VAGY"-kapu bármely bemenetén logikai "1" szint jelenik meg; vagyis, ha bármely port áramkör "megszakításkérés" jelet ad.
      A port áramkör "megszakításkérés" jele abban az esetben jön létre, ha a kimenő "ÉS"-kapu mindkét bemenetén logikai "1" szint van; vagyis akkor, ha a port az adatirány-regiszterben bemenetként van konfigurálva, és a változást észlelő "Kizáró-VAGY"-kapu bemenetein a logikai szintek egymástól eltérnek.
      A kivezetés logikai szintjét a DT3 tároló folyamatosan követi, amely szint a port olvasásakor a DT5 tárolóba is bekerül. Ha ezután megváltozik a kivezetés logikai szintje, az a soron következő Q1 belső órajel hatására a DT3 tároló kimenetére kerül, így a két tároló kimenő jele eltérő lesz, vagyis létrejön a megszakításkérést kezdeményező jel.
      SLEEP állapotba lépéskor a mikrovezérlő a Q1 belső órajel logikai "1" szintjének megfelelő belső állapotban áll meg. Ez teszi lehetővé, hogy a kivezetés szintváltása a Q1 logikai "1" szintje miatt átlátszó tárolón keresztül a "Kizáró-VAGY"-kapu bemenetére kerüljön és az ébresztő és megszakításkérő jel létrejöjjön.

Vissza a lap tetejére

      A következő ábra a PIC16F785 mikrovezérlő megszakításkérésre alkalmazott bemeneti áramkörét mutatja be.

A PIC16F785 bemeneti áramköre
13.7-3. Ábra

      Ez az áramköri megoldás a fejezet elején bemutatott változat kimeneti áramkörét és a második változat megszakítás-generátorát egyesíti.

Vissza a lap tetejére

      A következő ábra a PIC16F91x mikrovezérlők megszakításkérésre alkalmazott bemeneti áramkörét mutatja be.

A PIC16F91x mikrovezérlők bemeneti áramköre
13.7-4. Ábra

      Ez az áramköri megoldás a 3. változatú I/O áramkör bemeneti áramköréhez illeszkedik.
      A bemenő jel beolvasását a DT5 tárolóba a Q1 belső órajel lefutó éle minden utasításciklusban elvégzi. Ha ezután a kivezetés szintje megváltozik, létrejön a megszakítást generáló különbségi jel, amely a következő Q1 ciklus végéig aktív. A különbségi jel hatására létrejött xxIF ébresztő és megszakításkérő jel a további áramkörökben tárolódik, így az a különbségi jel megszűnésével nem törlődik.

Vissza a lap tetejére

      A következő ábra a PIC16F63x mikrovezérlők megszakításkérésre alkalmazott bemeneti áramkörét mutatja be.

A PIC16F63x mikrovezérlők bemeneti áramköre
13.7-5. Ábra

      A DT3 tárolóba a bemenő jel a Q3 belső órajel lefutó élére minden utasításciklusban bekerül.
      A DT5 tárolóba a bemenő jel csak a port olvasáskor a Q2 lefutó élére kerül be.
      A kivezetés logikai szintjét a DT3 tároló folyamatosan követi, amely szint a port olvasásakor a DT5 tárolóba is bekerül. Ha ezután megváltozik a kivezetés logikai szintje, az a soron következő Q3 belső órajel hatására a DT3 tároló kimenetére kerül, így a két tároló kimenő jele eltérő lesz, vagyis létrejön a megszakításkérést kezdeményező jel.

 

  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