[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