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