zhengbingyan 发表于 2014-4-16 17:40:34

AVR定时器装载值如何确定????

各位,我的AVR 的 系统时钟 是 14.7456MHz ,假如 用 定时器T1定时 1ms, 采用的模式是 《普通模式 的 溢出模式》,无分频 !则装载值 是否这样求:

1/14.7456=0.0678us,   1ms=1000us/0.0678 =14749,也就定时器 计数 14749就需要 1ms 的时间。所以我的转载是 65535 - 14749 = 50786。
也就是TCNT1H = 0xc6;        TCNT1L = 0x62;//装载时间初值1Ms

不知道我上面求的对不对???
为了验证,我还专门显示出来,每秒加一。可是不对啊!!!!!
求解答!急急急啊!!!!
       

Free_Bird 发表于 2014-4-16 22:06:35

应该差不多吧;
(进中断次数 / (系统时钟/分频系数)) = 中断时间 / 1秒
得到 进中断次数 = 14746;
所以 定时器装载初值 = 65536 - 14746 =50790
即 0xC666

要是还不对,你就应该仿真看看相关定时器的寄存器是不是按照配置的被赋值了

skyxjh 发表于 2014-4-16 22:25:24

1秒钟计数14745600个,1ms需要计数14745.6个,定时器初值TCNT1 = 65536 - 14746 = 50790, 每次进入中断后给定时器赋初值,中断1000次就是1秒。

alias 发表于 2014-4-16 23:00:09

>>为了验证,我还专门显示出来,每秒加一。可是不对啊!!!!!

不对是指什么?很接近或差很多?知道这讯息後大家的回覆将会不同。

zhengbingyan 发表于 2014-4-19 09:01:43

alias 发表于 2014-4-16 23:00
>>为了验证,我还专门显示出来,每秒加一。可是不对啊!!!!!

不对是指什么?很接近或差很多?知道这讯 ...

谢谢您的回复,问题已经解决了。我那样配置压根就没错。只是MCU 进入中断的频率太快,导致的问题。
我配置成1ms 只是个例子,是为了验证我的定时器配置是否有问题。实际的定时中断总配置成 4.426us,之后的定时中断改为40us 就正常了。

zhengbingyan 发表于 2014-4-19 09:02:24

skyxjh 发表于 2014-4-16 22:25
1秒钟计数14745600个,1ms需要计数14745.6个,定时器初值TCNT1 = 65536 - 14746 = 50790, 每次进入中断后给 ...

谢谢您的回复,问题已经解决了。按你的配置是没错的。谢谢。

tcltiant 发表于 2014-4-25 18:16:53

要善于运用软件仿真DEBUG,有计数器什么的,很方便的。
页: [1]
查看完整版本: AVR定时器装载值如何确定????