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