<< Előző oldal Vissza a tartalomjegyzékhez Következő oldal >>
16.2. Capture üzemmód
A Capture (kiolvasási) működés során a 16-bites Timer 1 számláló értéke kerül kiolvasásra a mikrovezérlő egyik kivezetésén fellépő külső esemény hatására. A kiolvasott 16-bites érték a CCPRxL és CCPRxH regiszterekbe kerül, és megszakításkérés indul.
A Capture üzemmód lehetővé teszi a külső eseményekre való gyors reagálást az esemény pontos időpontjának ismeretével, illetve két külső esemény közötti időtartam pontos mérését.
A Capture működést indító külső esemény a következők közül választható:
ˇ
minden lefutó él;
ˇ
minden felfutó él;
ˇ
minden 4. felfutó él;
ˇ
minden 16. felfutó él.
A Capture üzemmód indítójelének kiválasztása a CCP modul CCPxCON vezérlő regiszter alsó négy bitjének beállításával lehetséges:
Érték | Működés |
---|---|
0000 | CCP modul kikapcsolva |
0100 | Capture működés minden lefutó élre |
0101 | Capture működés minden felfutó élre |
0110 | Capture működés minden 4. felfutó élre |
0111 | Capture működés minden 16. felfutó élre |
A Capture működés blokkvázlata:
16.2-1. Ábra
A CCPxCON regiszterben elhelyezett CCPxM2 és CCPxM3 vezérlő bitekkel engedélyezhető, illetve indítható a Capture üzemmód. A CCPxM0 és CCPxM1 bitek választják ki az indító eseményt, vagyis a mikrovezérlő CCPx kivezetésére érkező jel osztási arányát és az aktiváló fel- vagy lefutó élt is.
Az indító esemény hatására a Timer 1 számláló regisztereinek (TMR1L, TMR1H) "pillanatnyi" értéke átíródik a CCP modul CCPRxL és CCPRxH regiszterpárjába, valamint megszakításkérés indul a PIRx regiszter CCPxIF bitjének logikai "1"-re állításával.
Ha a CCP modul megszakításkérése a PIEx regiszter CCPxIE engedélyező bitjével, az INTCON regiszter PEIE periféria-megszakítás engedélyező bitjével és a GIE globális megszakítás-engedélyező bitjével is engedélyezve van, megindul a megszakítás végrehajtás. A megszakításkezelő programrész feladata, hogy a CCPxIF jelzőbitet nullázza és a kiolvasott értéket elmentse, feldolgozza. (Ha még a kiolvasott érték elmentése előtt fellép egy újabb indító esemény, a CCPRxL és CCPRxH regiszterek felülíródnak és az előző érték elveszik.)
A kiolvasás a Q1..Q4 belső jelek segítségével szinkronizálva, vagyis az indító eseményhez képest bizonyos ideig (maximum 1 utasításciklus) késleltetve van, hogy a Timer 1 számláló regisztereinek értékváltása ne hamisíthassa meg a kiolvasott értéket.
A Timer 1 CCP modulhoz történő alkalmazásához, annak időzítő vagy szinkron számláló üzemmódban kell működnie. (Aszinkron számláló üzemmódban a Compare üzemmód tiltva van, mivel a Timer 1 szinkronizálatlan külső léptetése ütközhet a kiolvasás időpontjával, ami hibás tárolt értéket eredményez.)
A kiolvasási esemény nincs hatással a Timer 1 működésére (nincs nullázás vagy tiltás), ezért a Timer 1 időközben más feladatot is elláthat. Két kiolvasási esemény közötti időtartam megállapításához nincs szükséga Timer 1 nulázására.
Az időmérés a Timer 1 16-bites ciklusán felül is lehetséges a Timer 1 túlcsordulás megszakítás engedélyezésével és kezelésével.
Capture üzemmódban a mikrovezérlő CCPx kivezetését a megfelelő TRISx regiszterben bemenetnek kell konfigurálni. (Kimenetként konfigurált kivezetés esetén a kimenet írása indítási eseményt okozhat.)
Az előosztó alkalmazására, vagyis a kiolvasási esemény leosztására bizonyos időtartamig állandó frekvenciájú bemenő jelek periódusidő (frekvencia) mérésénél lehet szükség. Az előosztó alkalmazásával növelhető a mérés pontossága.
Az elérhető pontosság:
Előosztás | Maximális hiba | 1% pontossággal mérhető frekvencia (fOSC = 20 MHz) |
5% pontossággal mérhető frekvencia (fOSC = 20 MHz) |
|
---|---|---|---|---|
Utasításciklus | Idő (fOSC = 20 MHz) |
|||
1:1 | 1 | 200 ns | 50 kHz | 250 kHz |
1:4 | 1/4 | 50 ns | 200 kHz | 1 MHz |
1:16 | 1/16 | 12,5 ns | 800 kHz | 4 MHz |
Az előosztó számlálólánca törlődik:
ˇ
a Capture üzemmód szoftveres kikapcsolásakor;
ˇ
bármilyen Reset-működés hatására.
A Capture üzemmód aktív állapotában történő osztási arány váltás indító jelet okozhat, ezért az átváltást mindig a Capture üzemmód kikapcsolt helyzetében kell elvégezni.
A következő táblázat a CCPx mikrovezérlő bemenetre vezetett külső léptető jel időjellemzőinek határértékeit adja meg.
Megnevezés | Minimális hossz Utasításciklus: Tut = 4 · Toszc Előosztás: N = 4 vagy 16 |
|
---|---|---|
Magas szint | Előosztás nélkül | 0,5·Tut + 20 [ns] |
Előosztással | 10 [ns] (LF - 20 [ns]) |
|
Alacsony szint | Előosztás nélkül | 0,5·Tut + 20 [ns] |
Előosztással | 10 [ns] (LF - 20 [ns]) |
|
Periódusidő | Előosztás nélkül | (3 · Tut) + 40 [ns]) |
Előosztással | [(3 · Tut) + 40] / N [ns] |
Az LF jelölésű adatok a kiterjesztett feszültségtartományú mikrovezérlő típusokra vonatkoznak.
Készenléti (SLEEP) állapotban a Timer 1 nem működik (mivel szinkron üzemmódban van), de a Capture működés előosztója folytatja a számlálást (szinkronizálás nélkül). A kiolvasási esemény hatására a CCPxIF jelzőbit "1"-re vált, de a Timer 1 értéke nem kerül mentésre. Ha a CCP modul megszakítása engedélyezve van, a mikrovezérlő kilép a (SLEEP) állapotból (megtörténik az ébresztés).
Bármely Reset-esemény hatására a CCP modul kikapcsolt helyzetbe áll be.
A Capture üzemmód külső megszakításkérés kezelésére is felhasználható. A mikrovezérlő CCPx bemenetén megjelenő megszakításkérés (kiolvasás indító esemény) hatására a CCPxIF megszakításkérő bit "1"-re vált, így megszakításkérés indul.
A kiolvasást indító esemény bekövetkezéséről, illetve a kiolvasásról a szoftver két különböző úton értesülhet:
ˇ
a CCP modul megszakítás alkalmazásával, megszakításkezeléssel;
ˇ
a CCPIF megszakításkérő jelzőbit szoftverből történő folyamatos figyelésével (ami könnyen megoldható, ha a mikrovezérlőnek közben nincs más feladata).
A Capture üzemmód működtetéséhez el kell végezni:
ˇ
a CCPx kivezetés iránybeállítását (bemenet);
ˇ
a Timer 1 léptetésének beállítását (léptető jel kiválasztása, előosztás beállítása, szinkronizálás bekapcsolása, indítás);
ˇ
a CCP modul megszakításbeállítását;
ˇ
a mérés megkezdéséhez a CCP modul bekapcsolását (a Capture üzemmód és az indító esemény kiválasztását);
ˇ
a kiolvasás megtörténte után a CCPRxL és CCPRxH regiszterek mentését.
A Capture üzemmód programozását bemutató fejezetek:
Válaszidő mérése
Kiolvasási sorozat kezelése
Két esemény között eltelt idő mérése
A mérési intervallum kibővítése
Tudomány és Technika (test@t-es-t.hu)
<< Előző oldal Vissza a tartalomjegyzékhez Vissza a lap tetejére Következő oldal >>