完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
定时器T0在mode1的模式下工作,如果是计数时间到,这个时候会溢出,进入中断,在中断服务函数中会通过软件方式重新给TH0与TL0置初始值,但是问题是:置初始值需要执行TH0=0xxx、TL0=0xxx两条指令,就是说每一次装载初始值的过程中,前一次溢出与后一次溢出间的时间间隔,都会产生误差啊?想虚心请教下各位前辈,我的理解有么有问题,谢谢了!
|
|
相关推荐
5个回答
|
|
那点误差不影响使用的
最佳答案
|
|
|
|
这个还真没自己琢磨过,貌似有道理,但你就这么用也没啥问题呀
|
|
|
|
感觉如果长时间使用的话,误差应该会累计,就比较严重了!个人理解了,呵呵
|
|
|
|
暑假了,想学习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 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
418 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1083 浏览 0 评论
846 浏览 0 评论
886 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
882 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11832 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 23:22 , Processed in 0.682824 second(s), Total 82, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号