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