微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ATMAGE16定时器0初始值计算总结

ATMAGE16定时器0初始值计算总结

时间:11-23 来源:互联网 点击:

现在我们知道

TCNT0 = 0x71;// set count十进制的113
OCR0= 0x8F;// set compare十进制的143

就相当于OCR0是计数值,TCNT0是初始值。TCNT0=113,那么OCR0=M- TCNT0=143。

我们取=7.3728Mhz,prescal=1024,于是,我们利用公式得出比较值=144,和结果的143有点误差。接着呢,我们试着用公式倒推,算t

t =(143*1024)/(7.3728**)= 19.86111````ms

刚好和设置那里的actual value误差一样。所以说,以倒推的为准取TCNT0和OCR0值

最后呢,TCCR0 = 0x05;//start timer

TCCR0预分频1024,具体可见上图,

应该提醒的是:

8位的定时器timer0根据公式,它最多可以完成35ms的定时任务,1秒的任务它不能完成,所以当想用来定时1秒的时候,只能用16位的定时器了;

且atmega128和atmega16的timer0选择时钟源是不一样的。请千万要注意。现在我们讨论的是atmega16;

还有上边的讨论是在工作模式(waveform mode)选择normal情况下。其他模式初始值和比较值的不一样的,具体你可以选择其他模式看一下它的变化值。

这样就得到了我们想要的TCNT0和OCR0的初始值了!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top