Johnwoo 发表于 2013-8-11 14:08:32

求助, 如何在51系统上实现长时间的精确延时?

大家好,我有一个数据采集监控的设备, 用STC 12C5A60实现的, 主循环里面我自己做了一个任务调度的机制, 在主循环里跑 采集数据到内存缓冲区/ 更新LCD显示 这两个任务, 同时通过一个外部中断输入用来触发MCU进行数据采集, 现在的需求是我需要每隔5分钟周期(具体周期多长需要能够配置)进行数据上报(通过GPRS完成), 可是板上资源没有实时时钟可以用, 大家觉得这种情况下如何实现相对比较精确的定时任务?

我现在想到的是通过片内的定时器做成每隔比如10ms中断一次, 设置一个unsigned long的计数器变量, 在定时器中断里面每次将变量+1, 然后判断是否达到5分钟周期.

用这种方案的话精度怎么样, 能做到多少?有更好实现方式的麻烦指点一下, 谢谢!

NJ8888 发表于 2013-8-11 15:31:28

更好的是换掉,51你用16位重装精度是你晶体精度

cjunrong 发表于 2013-8-11 15:37:11

看你精度需求···!用过STC12C的芯片,基本上你所说的方法在5分钟的到达的时候个人认为误差是比较大的,具体十多少太久我忘记了···!建议不要用long型···!

kevincoxee 发表于 2013-8-11 15:54:56

ms级精度没问题的

wajlh 发表于 2013-8-11 16:22:17

关键是累积误差会比较大,单次的误差好说

xiaobendan001 发表于 2013-8-11 17:26:30

这样要求累积误差也没什么关系吧

Johnwoo 发表于 2013-8-11 21:15:30

wajlh 发表于 2013-8-11 16:22 static/image/common/back.gif
关键是累积误差会比较大,单次的误差好说

谢谢!
今天学习了一下Keil的嵌入式操作系统RTX Tiny, 准备把系统移植到tiny上, 用系统提供的os_wait(IVL) 实现了间隔延时,不精确,不过粗略测了一下基本可以满足需求。
页: [1]
查看完整版本: 求助, 如何在51系统上实现长时间的精确延时?