[elektro] Mikrovezerlos frekvenciamero
Moczik Gabor
pm_levlista at progzmaster.hu
Wed Mar 11 22:25:55 CET 2009
Gergely Vakulya wrote:
> Kerdesek:
> Van ugye az a resz, hogy: "Amikor az idozito lejar, megallitjuk a
> szamlalot". Tegyuj fel, hogy a merendo frekvencia jo nagy (tobb MHz).
> Az idozito lejarta utan bejohet meg nehany impulzus a bemenetre. Ezzel
> mit lehet kezdeni?
>
> "ujrainditjuk a szamlalast es az idozitot."
>
> E ketto kozt is eltelhet nemi ido. Ezzel mit lehet kezdeni?
Mondjuk ha PIC-kel csinalod van (biztos AVR-ben is van) a CCP modul, amit
Capture modba kapcsolva tud figyelni egy fel vagy lefuto elre, es ilyenkor a
szamlalo erteket elmenti egy regiszterbe, majd general egy interruptot (ha
engedelyezed).
A szamlalot nem kellene nullazni, hanem amikor a Capture interrupt befut,
akkor eltarolod az erteket, a kovetkezo Capture-kor pedig kivonod az elozot.
Ha a timer tulcsordul, akkor egy kulon valtozo erteket novelje. A capture
befutasakor a tulcsordulas szamlalot elmented (hogy a foprogram tudjon
szamolni vele), majd nullazod.
Ez a periodus ido meres. A szamlanc erteke (16 bites timerrel)
cnt = tulcsordulas*65536 + (CCPR_H-ccprh_prev)*256 + (CCPR_L-ccprl_prev)
Ebbol az ido t=cnt/freq (masodpercben, ha freq Hz-ben. PIC eseten
freq=XTAL/4 ha nincs elooszto). Ha egy periodus tul rovid, akkor celszeru
tobb, lehetoleg egesz szamu periodust leszamolni.
Freki meresnel all elo amit irsz, hogy szoftveresen kiolvasva egy timert, ha
jo nagy a freki, akkor bizonyara nehanyat meg lepni fog mire kiolvasod.
Hardveresen tudsz vedekezni ellene, szinten a CCP modullal, meghozza 2 kell
belole. Az egyiket felkonfiguraload Compare modba, a masikat Capture modba,
kivul pedig osszekotod a ket labat a procin. A capture az elobb leirt modon
mukodjon, csak most nem a belso oszcillatort szamolja, hanem a merendo jelet.
A Compare egy masik timert figyeljen, ami az idoalapot szamolja. Kiszamolod,
hogy mennyi lesz a timer erteke, amikor letelik az 1 masodperces (vagy
akarmennyi) idoalap. Ezt beallitod a Compare regiszterbe. Amikor a timer
erteke eleri ezt, akkor beallitja a CCP labat, ami majd (mivel kivul ossze
van kotve) ingerli a masik capture modult, ami elmenti a szamlanc erteket.
A lenyeg, hogy sose nullazd es allitsd meg az idozitoket, mert szoftveresen
nem tudod tokeletes szinkronban tartani, szabadon fussanak, hardveres
triggereket hasznalj, mindig mentsd el az aktualis erteket, a kovetkezo
lepesben pedig vond ki.
Freki meresnel, ha uberpontos akarsz lenni, akkor az idoalap lejarta utan ne
azonnal kezdd ujra az idoalap idozitest, hanem vard meg a Capture interrupt
befutasat, hogy a merendo jel felfuto (vagy lefuto) elere induljon a kov.
meres. Nemi jitter igy is lesz benne...
Ja, PIC-ben van valami "special event trigger" is, meg nem hasznaltam,
erdemes megnezni, lehet hogy nem kell kivul osszekotni a ket modult.
--
((( Móczik Gábor )))--((( E~mail: "pm-01" @AT "progzmaster" .DOT "hu" )))
((( Skype: moczik )))
More information about the Elektro
mailing list