11. Timer_A modul.
11.1.
A Timer_A modul összetett, sokoldalúan használható áramkör. Fő részei a következők:
Folytonosan egy előre rögzített értékig előre számlálni, majd újra nulláról elöre számlálni,
folytonosan előre számlálni 0000h és FFFFh között,
nullától egy előre rögzített értékig előre számlálni, majd visszaszámlálni.
A számláló leállítható.
Az áramkör a TACTL vezérlő regiszterrel programozható. Felépítése a 11.1 ábrán látható.
11.1. ábra: Timer_A felépítése.
Időzítő üzemmód
Az időzítő üzemmódban a számláló négyféle módon működhet, amelyet aTACTL vezérlő regiszter MC1 és MC0 bitjei és a 0. sorszámú komparátor EQU jele együtt határoznak meg. Az órajel kiválasztása a TACTL regiszter SSEL1 és SSEL0 bitjeivel lehetséges. A kiválasztott órajel 2,4, és 8-al osztható az ID1 és ID0 bitek értékétől függően.
Számlálási mód
A számlálás módját az MC1 és MC0 bitekkel állíthatjuk be. Hatásuk az alábbi lesz:
MC1 MC0 mód
0 0 stop
0 1 előre mód, a számláló előre számlál a CCR0 regiszter értékéig
1 0 folyamatos mód
1 1 irányváltó mód
Stop módban a számláló áll. Ha a stop mód megszűnik, a számláló az aktuális értékétől kezdve számol. Aszámlálási irány és az összes többi regiszter a stop előtti állapotban marad.
Előre módban a számláló a CCR0 regiszter tartalmának eléréséig számol. Ha a tartalma elérte CCR0 értékét, resetelődik, és 0-tól kezdve számol. A CCIFG0 flag bit bebillen, amint a számláló értéke egyenlő lesz a CCR0 regiszter tartalmával. A TAIFG flag bit pedig akkor billen be, amikor a számláló a CCR0 értékről 0-ra változik.
11.1/a ábra: előre számlálás mód.
Folyamatos módban a számláló 0h értéktől FFFFh értékig számol, majd 0h-ra vált és folytatja a számlálást FFFFh-ig. Az FFFFh-0h váltáskor a TAIFG flag bit bebillen.
Irányváltó számlálás esetén a számláló a CCR0 tartalma eléréséig előre számol, majd irányt vált és visszaszámol 0-ig.
11.1/b ábra: Irányváltó számlálás.
A számlálási irányt egy flip-flop tárolja, amely átbillen, amint a számláló eléri a CCR0 értéket. A TAIFG és a CCIFG0 flag-ek a számlálás folyamán egyaránt bebillennek.
Capture/compare mód
A capture/compare módok ( kiolvasás/összehasonlítás) rugalmas real-time feldolgozásokat tesznek lehetővé. A blokk regiszterek mindegyike használható a számláló tartalmának rögzítésére a megadott esemény bekövetkezésekor, vagy időintervallumok előállítására. Valahányszor az esemény bekövetkezik, vagy egy időintervallum letelik, megszakítás jön létre. A capture/compare blokk felépítése a 11.5. ábrán látható.
11.5. ábra: Capture/compare blokk.
A CCTLxvezérlő regiszter CAPx üzemmód bitje összehasonlító(CAPx=0), vagy rögzítő (CAPx=1) működési módot írhat elő. A CCMx1 és CCMx0 rögzítési mód bitek kijelölik a rögzítés létrejöttének a feltételeit. Ez lehet tiltva, pozitív élre, negatív élre, vagy mindkét élre. Mindkét mód kezeli a megszakítás flag CCIFG és megszakítás engedélyező CCIE biteket. Biteket. A CCIFG flag bebillen, a capture esemény bekövetkezésekor, vagy összehasonlításkor.
A capture üzemmódú működés idődiagramja a 11.5/a ábrán látható.
11.5/a ábra: capture üzemmód idődiagramja.
A CCRx regiszterek szavas utasításokkal érhetők el. Mindig a legutolsó beléjük másolt időzítő értéket tartalmazzák. Túlcsordulás logika jelzi, ha a tárolt értéket kiolvasták, mielőtt újabb capture esemény bekövetkezne. Ha olvasás nem történt, és újabb érték rögzítése történik, a CCTLx regiszter COVx túlcsordulás bitje bebillen.
Szoftver példa a rögzített érték kezelésére, a túlcsordulás figyelésével:
CCRx_Int_hand ;Megszakítás kezelő program kezdete
……..
……..
……..
MOV &CCRx,RAM_Buffer ; CCRx regiszter mentése
; RAM területre
BIT #COV,&CCTLx ; túlcsordulás bit tesztelése
JNZ Overflow_Hand ; ha 1, ugrás a túlcsordulás
; kezelő rutinra
……..
……..
……..
RETI
Overflow_Hand
BIC #COV,&CCTLx ; túlcsordulás bit törlése
…….. ; hibakezelő rész
……..
……..
RETI
Kompare üzemmód
A Compare (összehasonkítás) üzemmódot a CAPx bir törlésével lehet beállítani. Ha a számláló tartalma egyenlővé válik a CCRx regiszter tartalmával, a következő folyamat játszódik le:
a CCTLx regiszter CCIFGx flag bitje bebillen,
Ha a globális megszakítás engedélyezés GIE bit 1 és a megszakítás engedélyezés CCIEx bit is 1, megszakítás keletkezik,
Az EQUx jel az Oux egységre kerül, és az OUTx jel a megfelelő jelszintet vesz fel.
11.6. ábra: output egység.
Az EQU0 jel igaz értékű, ha a számláló értéke nagyobb, vagy egyenlő, mint a CCR0 regiszter értéke. Az EQU1-EQU4-jelek esetén a megfelelő CCR’-CCR! regiszterek tartalmával történik
a számláló összehasonlítása. A 11.6/a ábrán a számláló irányváltó módban számol, CCR0=3-ig. Az OUT jel bebillen, amint a számláló a CCR1 értékrt meghaladja, és visszabillen, amint annál kisebb.
11.6/a ábra: Az output egység kimenő jele.
A Timer_a megszakítás vektor regisztere
Két megszakítás vektor tartozik az áramkörhöz.
Egy vektor a CCR0 regiszterhez, amelynek prioritása a Timer_a megszakításai közül a legmagasabb.
Egy vektor a fennmaradó CCRx regiszterekhez. A 16 bites TAIV az aktuális megszakítás kérelmet tartalmazza.
A CCR0 regiszter egyedi megszakítás flag bitje látható a 11.10. ábrán. Az IRQ a megszakítás kérelem, az IRACC pedig a megszakítás nyugtázás jel. CCIE0 a megszakítás engedélyező bit.
11.10. ábra: Capture/Compare megszakítás flag.
A fennmaradó CCR1-CCR4 regiszterek, valamint és időzítő (TAIFG flag regisztere) megszakítás áramkörét a 11.11 ábrán mutatjuk be.
.
11.11. ábra: a Capture/compare áramkör megszakítás vektora.
A kézikönyv az időzítő számos alkalmazását mutatja be, köztük a soros kommunikáció megvalósítását, amelyekre helyszűke miatt nem térünk ki.