OT timery u AVR
Pavel Hudecek
phudecek@tiscali.cz
Čtvrtek Prosinec 4 20:58:17 CET 2008
:-) do dneška jsem měl za to, že ICP se dá spouštět oběma hranami - pohled
do několika DS mě ale přesvědčil o opaku... no nic...
Nápad: Použít dvě nohy. ICP a komparátor. Nohu ICP použít pro vzestupnou
hranu a komparátor pro sestupnou. Dále bude potřeba nechat běžet čítač a při
přetečení inkrementovat nějakou proměnnou. Při přerušení od nohy ICP uložit
hodnotu ICR a hodnotu oné čítací proměnné. Při přerušení od komparátoru
uložit tytéž věci a spočítat rozdíl.
Měření bude s rozlišením 1/fclk, čili např. 62,5 ns při 16 MHz. Jediným
omezením je minimální délka pulzu, aby druhé ICP nastalo až po uložení první
hodnoty. Tomuto se dá vyhnout asi jedině použitím 2 čítačů.
PH
From: "Zdenek Aster" <zdenek.aster@seznam.cz>
No pak je jeste varianta, klasicke preruseni to umi kazdou
zmenu hrany, a pouziti citace, nic lepsi me fakt nenapada :-(
Nekdo jiny, jina myslenka :-D ?
From: "Jan Waclawek" <konfera@efton.sk>
No tak si to zratajte, aby neutiekla ta druha hrana:
- najdlhsie vykonavane ine prerusenie, vratane volania toho prerusenia, plus
- jedna instrukcia za tymto prerusenim, plus
- vyvolanie input capture prerusenia, plus
- ukladanie nejakych registrov, pretoze nemozeme hodnotu citat len tak do
luftu (no dobre, da sa nejaky register trebars na to vyhradit, ze sa nikdy
nikde inde nepouzije; ale uz je to vopruz)
- precitanie hodnoty input capture plus
- prehodenie hrany
(inaksie povedane, latencia toho prerusenia, plus ta manipulacia s SFR)
To je najlepsie dosiahnutelne rozlisenie.
Sotva sa v rozumnej aplikacii dostanete pod mikrosekundu. A co je horsie,
nielenze tu sirku zmeriate s nejakou chybou, ale ona ta druha hrana Vam moze
UPLNE utiect, a nezmeriate vobec nic. A ak to nie je periodicky dej, tak ste
v keli. A s tym gate by to bolo takmer trivialne, takze u takej sprostej
'RD2 na x2 clock a 20MHz meriam s rozlisenim na stvrt mikrosekundy, nic mi
neutecie, a som vysmiaty...
Další informace o konferenci Hw-list