Vypocet preruseni
Jan Kral
kral na fortech.cz
Pátek Leden 25 17:45:29 CET 2013
Ja to tedy vzdycky pocitam naprosto presne (samozrejme s tim jaka je presnost krystalu):
1. zajima Vas cas na jedno preruseni, coz je 360ms/32 nebo 360/64
2. Hodnotu vstupni frekvence do preddelicky vynasobim casem na jedno preruseni, coz je celkovy pocet ticku ktere musi citac napocitat.
3. Celkovy pocet ticku vydelim max. rozsahem citace (pro 16 bit citac to je tedy 65536, pro 8 bit. citac 256)
4. Hodnotu, ktera vysla delenim v 3 zvysim na nejblizsi vyssi hodnotu preddelicky
5. Zvolenou hodnotou preddelicky z 4 vydelim celkovy pocet ticku z bodu 2 a to mi da hodnotu, kterou mam nastavit do citace
6. samozrejme je tam nejaka nepresnost dana tim, ze to ne vzdy vyjde na cela cisla, ale da se dopocitat po kolika prerusenich a o kolik to posunout
S pozdravem JK
>
> Potrebuji generovat preruseni tak aby 64 nebo 32 preruseni trvalo
> 360ms.
> Puvodne jsem mel program na PIC16F a preruseni bezelo na 8b timeru0.
> Ted jsem se rozhodl ze asi radu PIC16F nadobro opustim (drazsi,
> pomalejsi, mene vybavena) a ladim program pro PIC18F, ktery pobezi
> rychleji a ma
> timer0 volitelne 8 nebo 16b.
>
> Zatim to vzdy resim tabulkou v Calcu nejakou takovou:
>
> Takt Preddelic Za delicem Timer0H Timer0L Pocet preruseni z
> 1s Preruseni
> kazdych us Pocet prumerovani Doba odectu (us)
> 16 000 000 64 250 000 7 201 177,683 5628 64 360
> 192
> 16 000 000 128 125 000 3 235 177,305 5640 64 360
> 960
> 16 000 000 256 62 500 2 176 177,557 5632 64 360
> 448
>
> a zkousim rucne odhadnout a doladit nastaveni registru timer0 tak abych
> se co nejvic priblizil tem 360ms.
>
> Mate nekdo nejakej lepsi postup?
Další informace o konferenci Hw-list