<< Előző oldal Vissza a tartalomjegyzékhez Következő oldal >>
16.2.4. A mérési intervallum kibővítése
A Capture üzemmód időmérési tartományát felülről behatárolja a 16-bites Timer 1 számláló átfutási ciklusa. A mérési tartomány megnövelhető:
ˇ
a Timer 1 számláló elegendően alacsony frekvenciájú külső léptetésével, amelynek csökkentésével arányban természetesen a felbontás is kisebb lesz;
ˇ
a Timer 1 előosztójának alkalmazásával, amely 2-, 4- vagy 8-szorosára növeli a méréshatárt a felbontás (pontosság) ugyanilyen arányú romlása mellett;
ˇ
szoftveres számlálóregiszterek alkalmazásával; ezen a módon a méréshatár tetszőleges mértékben kiterjeszthető a felbontás romlása nélkül; a fejezet további része ezt a módszert mutatja be.
A szoftveres számláló regiszterek (8-bites általános adatregiszterek) segítségével a 16-bites Timer 1-gyel kezdődő számlálólánc hossza 24-, 32-, 40-, 48-... bitesre növelhető az alkalmazott regiszterek számának megfelelően. A Timer 1 minden túlcsordulásakor meg kell növelni 1-gyel a soron következő regiszter (16..31. bit) értékét. Ha ez a regiszter is túlcsordul, akkor a rákövetkező regiszter (32..39. bit) értékét kell megnövelni... és így tovább.
A kiolvasás megtörténte után a CCPRxx regisztereken kívül a szoftveres számlálóregiszterek értékét is menteni kell, valamint a helyes számítási eredményekhez minden műveletet a teljes bithosszon (24, 32, 40, 48...) kell végezni.
A következő ábra egy 32-bitesre bővített számlálóláncot mutat be.
16.2.4-1. Ábra
A Timer 1 TMR1L és TMR1H számlálóregiszterei mellett ("felett") szoftveres kezeléssel működnek a TM1HH és TM1HHH általános adatregiszterek.
A Timer 1 túlcsordulásakor a TM1HH regiszter értékét 1-gyel növelni kell, valamint meg kell vizsgálni, hogy ez a növelés okozott-e túlcsordulást a regiszternél, ha igen, akkor a TM1HHH értékét is meg kell növelni.
A kiolvasáskor a TMR1L és TMR1H értékei a CCPRxL és CCPRxH regiszterekbe kerülnek. Ezután - még a következő kiolvasás előtt - a kiolvasott értékeket a TxL és TxH általános adatregiszterekbe kell menteni. Ezt követően (vagy megelőzően) a TM1HH és TM1HHH regiszterek értékét is menteni kell.
A Timer 1 túlcsordulásának lehetséges kezelési módjai:
ˇ
a PIRx regiszterben elhelyezett TMR1IF túlcsordulás-jelzőbit folyamatos szoftveres figyelése;
ˇ
a Timer 1 túlcsordulás-megszakítás engedélyezése és kezelése.
A következő folyamatábra jelzőbitfigyeléssel megvalósított folyamatos kiolvasásra mutat példát 32-bitesre bővített számlálólánccal. A végrehajtási sorrend biztosítja, hogy a kiolvasási esemény és a kiolvasott érték elmentése között a szoftveres számlálóregiszterek értéke ne változzon, ami a helyes működés alapfeltétele.
16.2.4-2. Ábra
A folyamatábrát megvalósító programrészlet:
... ... clrf CCP1CON ;a CCP modul kikapcsolása clrf T1CON ;Timer 1 kikapcsolva (előosztás 1:1, belső léptetés, szinkronizáció) clrf INTCON ;a megszakítások tiltása bsf STATUS,5 ;az 1. adatmemória lap kiválasztása bsf TRISC,CCP1 ;a CCP1 kivezetés bemenetként való beállítása clrf PIE1 ;a periféria megszakítások tiltása bcf STATUS,5 ;a 0. adatmemória lap kiválasztása clrf PIR1 ;a periféria megszakításkérő jelzőbitek nullázása clrf TM1HH ;a szoftveres számlálóregiszter nullázása clrf TM1HHH ;a szoftveres számlálóregiszter nullázása ... ... bsf T1CON,TMR1ON ;a Timer 1 léptetésének indítása movlw 0x05 ;W = 0x05 movwf CCP1CON ;a Capture üzemmód indítása, kiolvasás minden felfutó élre UJRA btfss PIR1,CCPIF ;a CCP modul megszakításkérés jelzőbit vizsgálata; ugrik, ha "1" GOTO SZAML ;továbblép, mivel nem történt kiolvasás movf CCPR1L,0 ;W = CCPR1L movwf T1L ;T1L = CCPR1L (alsó bájt elmentve) movf CCPR1H,0 ;W = CCPR1H movwf T1H ;T1H = CCPR1H (második bájt elmentve) movf TM1HH,0 ;W = TM1HH movwf T1HH ;T1HH = TM1HH (harmadik bájt elmentve) movf TM1HHH,0 ;W = TM1HHH movwf T1HHH ;T1HHH = TM1HHH (negyedik bájt elmentve) bcf PIR1,CCPIF ;a CCPIF jelzőbit nullázása ;*** Időtartamszámítás *** ... ... SZAML btfss PIR1,TMR1IF ;a Timer 1 túlcsordulás jelzőbit vizsgálata; ugrik, ha "1" GOTO UJRA ;visszalép, mivel nincs túlcsordulás bcf PIR1,TMR1IF ;a TMR1IF jelzőbit nullázása incf TM1HH,1 ;a TM1HH számlálóregiszter növelése btfss STATUS,C ;a TM1HH túlcsordulás vizsgálata GOTO UJRA ;visszalép, mivel nincs túlcsordulás incf TM1HHH,1 ;a TM1HHH számlálóregiszter növelése goto UJRA ;visszalép
Tudomány és Technika (test@t-es-t.hu)
<< Előző oldal Vissza a tartalomjegyzékhez Vissza a lap tetejére Következő oldal >>