[求助] timer 中斷問題

nt52241930   2017-5-17 10:17 楼主
請教
主頻為 : 20MHz
timer0~3,共4個32bit
我將其拆成 timer0a/0b , timer1a/1b , timer2a/2b ,timer3a/3b ,每個皆為16bit
timer0a/0b = 1ms /100ms
timer1a/1b = 10ms /10ms
timer2a/2b = 100ms /200ms
timer3a/3b = 1ms /200ms
以上為各個timer中斷時間
共8個中斷,各自做各自的事
但發現,8個全開下,僅有timer3a/b中段時間 會忽快忽慢
但只要將timer0~2任一關閉,則timer3a/b及恢復正常中斷時間

請問有什麼可能??
timer也沒找到優先權相關設置

以上再麻煩,有經驗人士,協助分析下

謝謝

回复评论 (3)

这些中断的时间基准都是成倍数关系的,为什么不减少一些中断,使用变量累加来达到同样效果,比如在1ms中断中用一个变量累加到100执行,就可以达到100ms中断的效果了
点赞  2017-5-17 11:21
引用: sint27 发表于 2017-5-17 11:21
这些中断的时间基准都是成倍数关系的,为什么不减少一些中断,使用变量累加来达到同样效果,比如在1ms中断 ...

是,沒錯
正確來說,以上8個timer,我只使用到6個,2個是直接關閉的

這是考慮到各功能的分離性與穩定性來做
這6個timer包含
2組 rs485
2組 can open
1組 i2c
實時的io 錯誤偵測
實時的 命令控制
及 同時的lcd/led 顯示

考慮到can 485...等等的裡面會使用while來做fifo的讀取
"萬一" 發生異常 while跑不出 會導致 後面的其他功能失效
....等等的
点赞  2017-5-17 11:32
以解決,感謝
分享解決方式 :
修正8個timer 中斷優先權,即可解決
点赞  2017-5-17 16:51
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复