完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
9个回答
|
|
|
|
|
|
|
|
|
|
不懂,努力学习中,帮你顶下。
|
|
|
|
本帖最后由 3htech 于 2012-11-21 16:22 编辑
首先要明白一点:定时器不可停止! 要想实现精确定时,自动重装方式是必不可少的。 如果不用自动重装,那么在保证THx和TLx都不溢出的情况下,使用THx += 初值高8位,TLx += 初值低8位,来避免少算计数个数。 如果再想提高精度,那么必须使用高精度的晶振。晶振和电阻一样,也是有误差的。 |
|
|
|
中断中设定定时初值时,可以先关定时器,设定后再开定时器,设定值在计算值基础上加12(根据精度调节),另外如果其他方面能接受,10ms中断改成40ms中断,定时装载的误差可以更小。另外普通晶振稳定度是100ppm,极限误差2个多小时1秒。
|
|
|
|
晕死,用时钟芯片精度并不见得会高,你现在用的也是晶振,时钟芯片上用的也是晶振
精度高低完全取决于所用晶振的精度 如果你用的晶振精度高于时钟芯片上的晶振,你完全可以获得更好的计时精度 软件上完全可以做到没有误差,也没有什么累积误差 在中断中重设定时器初值的方法不是很好,需要修正,还要防止更高级中断打断,用c语言写程序时不方便修正等等 你完全可以用16位方式,不需要重新设置初值 这样一来定时器中断频率是18432000/12/256/256=6000/256 也就是说6000次循环时间是256秒 你在你的中断函数中设置一个静态变量,每次加上256,发现大于6000就减去6000,同时秒数加1 这样的程序不管是c还是汇编都很容易实现,也没有累积误差 也不需要特殊调整 |
|
|
|
看看 正在弄这个。。
|
|
|
|
呵呵 期待解决方案
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12011 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 21:45 , Processed in 0.674994 second(s), Total 87, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号