請教
主頻為 : 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也沒找到優先權相關設置
以上再麻煩,有經驗人士,協助分析下
謝謝
这些中断的时间基准都是成倍数关系的,为什么不减少一些中断,使用变量累加来达到同样效果,比如在1ms中断中用一个变量累加到100执行,就可以达到100ms中断的效果了
是,沒錯
正確來說,以上8個timer,我只使用到6個,2個是直接關閉的
這是考慮到各功能的分離性與穩定性來做
這6個timer包含
2組 rs485
2組 can open
1組 i2c
實時的io 錯誤偵測
實時的 命令控制
及 同時的lcd/led 顯示
考慮到can 485...等等的裡面會使用while來做fifo的讀取
"萬一" 發生異常 while跑不出 會導致 後面的其他功能失效
....等等的
以解決,感謝
分享解決方式 :
修正8個timer 中斷優先權,即可解決