9. Univerzális timer/port

Az univerzális Timer/Port modul különféle rendszerfunkciókat támogat:

Hat független kimenet

Két 8 bites számláló, 16 bites módba kapcsolhatóan

Precíziós komparátor a Slope tipusú A/D konverzióhoz

9.1 ábra: Timer/port blokkvázlata.

9.1. A Timer/Port modul működése

A Timer/Port modul különböző működési módjai a TPCNTL vezérlő regiszter bitjeivel állíthatók be.

9.1.1. A Timer/Port TPCNT1 szálálója, 8 bites műveletek

A TPCNT1 számláló szoftverből írható és olvasható. Az olvasási hozzáférés az időzítő adataihoz lehet aszinkron az óra jellel, ha a CMP vagy ACLK van beállítva. Ha az óraforrás az MCLK az adatolvasás pontos, mivel az MCLK-nak ugyanaz a frekvenciája mint az utsításoknak. Általában az adatolvasás csak a számláló állapotának egy mintája, mivel a számláló folyamatosan növekszik ha EN1-el engedélyezve van. .

A számláló bármikor írható. Az írási ciklus után végrehajtott adatvisszaolvasás eltérést mutathat, mivel az órajel számláltatja az írási és olvasási hozzáférések között.

Három különböző órajel forrás lehetséges: MCLK, ACLK vagy CMP.

A számláló az óra bemenet minden egyes pozitív élére növekszik, ha az EN1 engedélyező bemenet 1-ben van. A számlálót az ENA vagy ENB jelek egyike engedélyezi. Rendszer resetre mindkét jel törlődik és a számláló funkció tiltott. Mindkét elérési bit törlésével a számláló értéke befagy.

Az RC1 ripple carry jel magas amíg a számláló 0FFh értékű. Az RC1 negatív éle a TPCTL regiszter RC1FG bitjét 1-re állítja.

Az RC1FG flag beállítódik mikor a TPCNT1 számláló 0FFh-ról 0-ra változik. Interrupt kérés keletkezik, ha a TPIE engedélyezés bit be van állítva, és az RC1FG, RC2FG vagy EN1FG flagek valamelyike szintén 1-ben van. Az RC1FG, RC2FG, EN1FG flag-ek törlése szoftveresen történik..

9.1.2. A Timer/Port TPCNT2 számlálója, 8 bites műveletek

A TPCNT2 és a TPCNT1 számlálók műveletei az engedélyező jel forrásában és az óra jelekban különböznek. A számláló 8 bites utasításokkal érhető el.

Három különféle órajel forrás lehetséges: MCLK, ACLK vagy TPIN.5.

Az RC2 ripple carry jel magas mig a számláló 0FFh értéken van. Az RC2 negatív éle az RC2FG bitet állítja be a TPCTL regiszterben.

Az RC2FG flag beállítódik mikor a TPCNT2 számláló 0FFh-ról 0-ra változik.

9.1.3. A Timer/Port számláló, 16 bites működés

A TPCNT1 és TPCNT2 számlálók kaszkádosíthatók 16 bites számlálóvá. A vezérlő regiszter B16 bitje állítja ezt be. Bármely olvasási vagy írási hozzáférés továbbra is byte elérés marad. A TPCNT! és TPCNT2 adatai egymást követően kerülnek írásra vagy olvasásra. Ez különleges figyelmet igényel mikor számlálási mûvelet közben történik hozzáférés. A TPCNT1 engedélyezõ jel lesz a 16 bites számláló engedélyező jele és a TPCNT2 óra forrása ugyanaz mint a TPCNT1-é; ezt a TPSSEL0 és TPSSEL1-el lehet kiválasztani. A TPSSEL2 és TPSSEL3 forráskiválasztó jeleknek ekkor nincs szerepük. Az ENA, ENB , TPSSEL0 és TPSSEL1 jelek vezérlik a kaszkádosított számlálók műveleteit, a számláló engedélyezését és az órajel forrást.

A 16 bites számláló engedélyezhető vagy számláltatható a CIN lábról vagy az Sxx jelről, vagy az ACLK, MCLK, CMP jelek valamelyikéről.

9.2. ábra: 16 bites üzem.

A számláló EN1 engedélyező bemenetére kapcsolt TPIN.5, TPIN.5 negált, CMP vagy CMP negált jelek hatására a 16 bites számláló inkrementálódik a ACLK vagy MCLK jelek valamelyike hatására. Ez a funkció teszi lehetővé a TPIN.5 vagy CMP jelek időtartamának mérésére. Az RC2 ripple carry jel addig 1, míg a számláló értéke 0FFh.

Az RC2FG flag 1 lesz, mikor a számláló 0FFh-ról 0-ra változik. Az EN1FG flag akkor lesz 1, mikor az EN1 jelet tiltásra kapcsoljuk. Az engedélyezés EN1 forrása CMP vagy TPIN.5. Nem setelődik, ha EN1 tiltás állapotba lett állítva szoftveresen az ENA és ENB bitekkel.

9.2. Timer/Port regiszterek

A Timer/Port modul hardver byte szervezésű és ennek megfelelően byte szervezésű utasításokkal érhető el. (suffix 'B')

A Timer/Port control regiszter (TPCTL)

9.3. ábra. TPCTL

A Timer/Port control regiszterben tárolt információ határozza meg a Timer/Port modul műveleteit.

Bit 0 : Az EN1FG elérési flag a TPCNT1 számláló EN1-es elérési jeljének negatív élével 1-re állítódik, ha a jel a CMP-ről vagya TPIN.5-ről érkezik. Ez az esemény állítja be az EN1FG bitet 1-re, majd a szoftver törli, különben 1-ben marad. Az EN1FG bit használatban lehet mialatt a Timer/Port interrupt kiszolgálás rutin zajlik annak eldöntésére, hogy az interrupt esemény az EN1-rõl vagy az RC-rõl érkezik.

Bit 1: Az RC1FG bit jelzi, ha a TPCNT1 számláló 0FFh-ról 0-ba fordult (túlcsordulás állapota). Ez az esemény 1-be állítja RC1FG bitet, a törlése szoftveresen történhet, egyébként beállítva marad. Ez a Timer/Port megszkítás kiszolgálás rutin által használt funkció: a megszakítás esemény forrását azonosítja.

Bit 2: Az RC2FG bit jelzi, ha a TPCNT2 számláló 0FFh-ról 0-ba ugrott (túlcsordulás állapota). Ez az esemény 1-be állítja RC2FG bitet, a törlése szoftveresen történhet, egyébként beállítva marad. Ez a Timer/Port megszkítás kiszolgálás rutin által használt funkció: a megszakítás esemény forrását azonosítja.

Bit 3,4,5: A TPCNT1 számláló EN1 engedélyező jele olvasható. Az EN1 értékét az ENA, ENB, TPSSEL0 vezérlõ jelek határozzák meg

Bit 7.6: A Timer/Port TPCNT1 számláló órajel forrás kiválasztó bitjei (TPSSEL0 és TPSSEL1)

Timer/Port számlálók: TPCNT1 és TPCNT2

9.4. ábra: T/P számlálók

Mindkét számláló 8 bites és bármilyen olvasási vagy írási művelet byte szervezésű utasításokkal történhet. Mindkét számláló olvasható és írható egymástól függetlenül. Bármely számláló törlés a CLEAR utasítás használatával történhet.

A Timer/Port adatregiszter

Az adatregiszter tárolja a 6 kimenet értékét, és a komparátor két vezérlõ bitjét.

9.5. ábra: T/P adat regiszter

Bit 0..5: A TPD.0..TPD.5 bitek tárolják a TP.0..TP.5 kimenetek értékeit. A digitális jelek ezekhez a kivezetésekhez lesznek hozzárendelve mikor a háromállapotú kimenet engedélyezett. A PUC rendszer reset hatására törlõdnek. A TP.5 jele a modulban belsőleg használt, ahogy a 9.1 ábrán látható.

Bit 6: A komparátor CPON bitje kapcsolja be a komparátor tápfeszültségét. Reset alatt áram takarékosság miatt használják. Valahányszor a rendszer reset (PUC) aktivizálódik, a komparátor a CPON bit segítségével inaktívvá válik.

Bit 7: A B16 jel bit a két számláló üzemmódját állítja be. TPCNT1 és TPCNT2 működhetnek két független 8 bites számlálóként vagy egy 16 bitesként. Elérésük mindig byte szervezésben történik. 16 bites módban bármely olvasási vagy írási hozzáférés külön-külön történik a két számlálóra.

B16 = 0: Két 8 bites számláló mód

B16 = 1: Egy 16 bites számláló: TPCNT1 az alsó byte, TPCNT2 a felsõ. TPCNT@ akkor növekszik, ha TPCNT1 0FFh-ról 0-ra ugrik.

Timer/Port engedélyezés regiszter

A Timer/Port engedélyezés regiszter tárolja a 6 kimenet vezérlõ értékeit és a számlálók túlcsordulását jelzõ két bitet.

9.6. ábra: TPE regiszter.

Bit 0..5: A TPE.0..TPE.5 tárolja a TP.0..TP.5 kimenetek elérés vezérlõ (háromállapotú) jelét. Akkor törlõdnek, ha egy rendszer reset PUC történik és a kimenetek magas impedanciás állapotba kerülnek.

Bit 6,7: A Timer/Port óraforrás kiválasztó TPSSEL2 és TPSSEL3 bitek vezérlik a multiplexert, a négybõl melyik óraforrást kapcsolja a TPCNT2-nek. A B16-os vezérlõ bit legyen törölve. Ha B16 1-ben van, TPSSEL2 és TPSSEL3 figyelmen kivul hagyva, és a TPCNT2 óraforrása ugyanaz mint TPCNT1-nek.

9.3. Timer/Port speciális funkciók

A Timer/Port modulhoz egy egy megszakítás vektor, többszörös interrupt forrásnak megfelelő flagek (nem az SFR-ben) és egy megszakítás engedélyező bit tartozik.

A Timer/Port interrupt engedélyezés bit (TPIE) az IE.2 regiszterben van, alapállapotban törölt.

A többszörös forrású interrupt flagek (RC1FG, RC2FG, EN1FG) a TPCTL regiszter részét képzik. Alapállapotuk törölt.

9.7. ábra: T/P megszakítási rendszere.

Az interrupt flagek nem törlõdnek a megszakításkérelem kiszolgálás után hardveresen. Az EN1FG flaget az EN1 számláló engedélyezés jel negatív éle állítja 1-be: ez azt jelzi, hogya számláló le lett állítva. Amikor egy interrupt keletkezik, a kiszolgáló rutinnak el kell különítenie a különbözõ interrupt forrásokat és meghatározni, hogy ki adta ki a kérést. Ha a 8 bites mód van beállítva 3 forrás kérhet interruptot: az EN1 jel negatív éle, TPCNT1 túlcsordulása (RC1 jel), TPCNT2 túlcsordulása (RC2 jel). 16 bites számláló módban csak 2 forrás kérhet megszakítást: az EN1 jel negatív éle, és a TPCNT2 túlcsordulása.

9.8. ábra: T/P megszakítás kérelem feltételek.

Az interrupt kérés bitjeit törölni kell a kiszolgálás alatt. Ha ez nem történik meg azonnal egy újabb interrupt kiszolgálás indul mihelyt a GIE bitet visszaállítjuk, vagy a RETI utasítás végrehajtódik. A Timer/Port interrupt engedélyezés bit (TPIE) a PUC-val törölhető. Ha a TPIE bit törölt nem történik interrupt kiszolgálás. Ha a TPIE bit és a GIE (general interrupt enable) bit 1-ben van a rendszer ki fogja szolgálni az interruptokat, ha sem a PUC, sem az NMI nem aktív.

9.4. Timer/Port az ADC alkalmazásban

A Timer/Port lehetővé teszi ohmos és kapacitív szenzorok A/D konverziós feladatainak megoldását.

A hõmérsékletmeghatározásra a legelterjedtebb szenzorok ellenállásosak, ezeknek van pozitív és negatív hőmérsékleti tényezőjük. A szilikon szenzorok, az NTC ellenállások és a platina szenzorok is ilyen típusúak.

9.4.1. A konverzió elve

Egy ellnállás értékének digitális értékké konvertálása azon idő segítségével történik, ami egy kondenzátor kisütéséhez szükséges. Elõtte természetesen fel kell tölteni ezt a kondenzátort.

9.9. ábra: Az RC töltés-kisütés időviszonyai.

A referencia feszültségig (Vref) történõ kisütés alatt az idõt méri egy számláló egy feszültségkompenzátor segítségével. A számláló folyamatosan számlál, mig a kondenzátor feszültségszintje a referenciafeszültség felett van. A számláló inkrementálódik, hiszen a kompenzátor kimenete teszi engedélyezetté a számláló műveleteket.

9.10. ábra: töltés-kisütés Rref és Rmeas alkalmazása esetén.

9.11. ábra: A konverzió elve.

 

Az ellenállás érték meghatározása

Az ellenállás érték digitális konverzióját visszavezetik kapacitás kisütési idejének a mérésére. A kapacitást előzőleg feltöltik. Az elv a 9.10., 9.11., 9.12. ábrákon látható. A kapacitás kisütési idejét egy Vref referencia feszültségre feszültség komparátor és számláló segítségével mérik. A számláló inkrementálódik, amíg a kapacitás feszültsége a Vref értéknél nagyobb. Az inkrementálást a komparátor kimenete engedélyezi.

Az elvet leíró egyenlet:

A C, fClock és Vref/Vcc ismert kell hogy legyen ahhoz, hogy az R értéket meghatározhassuk.. Egy stabil referencia ellenállás használatával egy másik egyenlet szerint számolhatjuk az ellenállás értéket:

Levezetést lásd az eredeti felhasználói kézikönyvben..

Természetesen feltételezzük, hogy a mérések alatt a kondenzátor változatlan, a feszültségszintek és az órafrekvencia állandó a konverzió alatt.

Konverzió 8 bitnél nagyobb felbontással

Az ábrán látható a konverzió elve, a komparátor, 16 bites számláló és a digitális bemenetek felhasználásával.

9.12. ábra: ADC alkalmazási példa.

A külső elemek: két referencia ellenállás, Rr1 és Rr2, és a két mért szenzor ellenállás, Rm1 és Rm2.

A megfelelő belső konfiguráció a TPCTL regiszterrel állítható be. Az ábrán csak az aktív csatlakozások és blokkok láthatók. A TPCTL vezérlő regiszter tartalma 9Eh , ami azt jelenti, hogy a B16, TPSSEL1, TPSSEL0, ENB és ENA biteket kell beállítani. A C kapacitást Rr1 és/vagy Rr2 ellenállásokon keresztül töltjük VCC feszültségre.

A négy kisütési fázis ideje:

Rm1 és Rm2 meghatározása: