向前辈们请教定时器T0在mode1模式下的计数误差问题?
那点误差不影响使用的
这个还真没自己琢磨过,貌似有道理,但你就这么用也没啥问题呀
感觉如果长时间使用的话,误差应该会累计,就比较严重了!个人理解了,呵呵
暑假了,想学习FPGA的同学们,可以利用暑假期间好好学习下FPGA,我们现在有款初学者的FPGA开发板利器,现在购买还有配套书籍赠送哦:
入门FPGA开发板:
https://item.taobao.com/item.htm ... &id=35911884243
赠送完全配套书籍:
https://item.taobao.com/item.htm ... amp;id=540865636294
有一定基础的同学,可以看下高端的开发板:
https://item.taobao.com/item.htm ... amp;id=520588767908
如果以上两款依然满足不了您的需求,更可以看下更高端的开发板:
https://item.taobao.com/item.htm ... &id=39939126777
有任何问题,欢迎旺旺 QQ来咨询哦!
正巧我也在学这个问题
一个比较简单的消误差的方法是
看中断之间执行时间是几条命令 然后换算成机器周期
然后在定时器计数初值上 加上或者减去这个几个机器周期
比如你原来的TL0是 0x18 现在改成比如 0x22 一类的 看你的语句几条了
然后这样做的目的就是减少了你的循环时间 跟你那个多出来执行语句的时间
刚好消掉了一部分 这样可以做到把误差可以控制到几us
如果想再精确的话 我也有一个比较笨的办法 就是你看你现在比如
你想是循环1s 但是实际上是1s+5us
那么你把你的TL0再调高1 按照上面的那个例子是0x23 然后
通过仿真得到 现在可能是1s-10us
那么你每执行10个 TL0 为0x22 的 就把 TL0改成0x21
然后执行5个 TL0 为0x21 在把TL0该厂0x22
因为5*10=10*5 这样就能做到1us误差以内。
但实际上这样也会带来新的延迟 所以还需要自己调一调
http://www.eeworld.com.cn/mcu/2014/0121/article_14945.html