avr lebegopontos muveletek -frekimero-

Moczik Gabor pm at progzmaster.hu
Sat Sep 16 15:17:31 CEST 2006


Pal Lukacs wrote:
>  Koszonom szepen mindenkinek!
>    
>  Az elso elkepzelesem az volt hogy 1S idoalappal,es 0.001 S idoalappal fogok dolgozni.Vagyis 1S -el kezdi a merest,es ha timer1 ovf. van akkor atvalt 0.001 idoalapra.Na de igy frekiszamitasoknal gondba utkoztem,ugyanis 0.001 idoalapnal nem oszthatok 1000 el KHz -nel,igy KHz -nel nem lesz tizedes pontossag.
>  Azt hiszem hogy tovabbi idoket rakok be: 0.1S, 0.01S. 
>  Egyre bonyolultabb lesz :-)

Jo lesz az! :-)

Az idoalap hatarozza meg milyen felbontassal tudod merni, viszont ehhez tobb 
idot kell varni.

Ha alacsony frekvenciaknak (kb. 100..1000Hz-ig) ha gyors meres kell, meg 
tizedesjegyes felbontas, akkor belul merhetsz periodusidot is, azaz 
felprogramozol egy timert elegendoen gyors mukodesre, a merendo jel minden 
fe vagy lefuto elenel kiolvasod a timert (az esetleges overflow-okat is 
beleszamolva). Az aktualis kiolvasasbol kivonod az elozot, ebbol megvan 
mennyi egy periodus ideje. Ennek a reciprokat jelzed ki, az a frekvencia.

Ezt is meg lehet csinalni egesz szamokkal is, csak ki kell talalni a 
szorzokat. Pl. 1Hz-et belul 1000-nek abarazol, kijelzesnel kell csak osztani 
hogy ki tudd tenni a tizedespontot.
Sot! Ez az osztas is elhagyhato, ha nem printf-el irod ki, hanem sprintf-el 
stringbe irod, es utana beszursz egy tizedespontot jobbrol a 3-ik helyre.
Ha nem sprintf-et hasznalsz, megirhatod a BIN->BCDstring rutinodat is ugy, 
hogy alapbol beleteszi ezt a tizedespontot.

(mondjuk univerzalisra, a 2. parameter legyen az, hogy hanyadik helyre...)

-- 
((( Móczik Gábor  )))--((( pm -> @ -> progzmaster -> . -> hu  )))
((( Skype: moczik )))--((( Website: http://www.progzmaster.hu )))



More information about the Elektro mailing list