Prodleva pomoci TMR0

Šerých Jakub Serych@panska.cz
Neděle Červen 27 17:25:49 CEST 2004


Staci si prohlednout datasheet nebo referncni prirucku daneho PICa (podle uvedenych SFR predpokladam, ze se jedna o nejakeho PICa) a tam je to krasne nakreslene a vysvetlene. V kazdem pripade, pokud se spravne nastavi zdroj hodin pro TMR0, jde do nej budto Fosc/4 nebo Fosc/4 / preddelicka.
Pri 4MHz krystalu je vypocet o to snadnejsi, ze 4MHz/4 = 1MHz, takze hodiny maji periodu 1us. Jestlize preruseni chci rekneme kazdych 50ms, vim, ze musi probehnout 50000 kmitu hodin. Preddelicka umi delit jen mocninami dvou (2, 4, 8, 16, 32, 64, 128, 256), takze musim hledat nejaky vhodny nasobek techto cisel s hodnotou TMR0, ktery je co nejblize 50000. V tomto konkretnim pripade je to snadne hledani, protoze uz 50000/128 prevysuje 256 (maximum 8bitoveho TMR0), takze mi zbyva jedina moznost, a sice preddelicka na 256. 

50000/256=195,3125 a naopak 195 * 256 = 49920. Ve skutecosti tedy bude preruseni ne kazdych 50ms, ale 49,920 ms. 
Chyba tedy je (50000-49920)/50000=0,16%  

Posledni veci, na kterou se nesmi zapomenout je to, ze citac cita smerem nahoru a k preruseni dojde pri jeho preteceni. Cili aby nacital 195, je potreba do nej nastavit hodnotu 256 - 195 = 61 

Staci takhle?

Jakub Serych

 
> Tak a ted bych potreboval poradit s tim, jak se spocita, v 
> jakem casovem
> intervalu se preruseni vzdy zavola. Chci se to naucit 
> odvodit, mam frekvenci
> krystalu, vim cas, ve kterem chci preruseni volat... Jak to 
> mam nastavit?
> Jakou vybrat preddelicku (vubec nemam poneti, jestli 
> nasobit/delit atd.). Je
> mi jasne ze minimalni a maximalni hodnota prodlevy jsou 
> limitovany, s tim uz
> bych si poradil pres citani nejake dalsi promene... Diky za pomoc.
> 
> Milan
> 
> 
> 



Další informace o konferenci Hw-list