标题: 关于STC单片机1us定时误差问题 [打印本页]

作者: 我的你    时间: 2022-11-8 11:21
标题: 关于STC单片机1us定时误差问题
芯片型号STC15W4K48S4  时钟采用内部时钟24M  模式16位自动重载
用定时器定时1us,变量做累加,发现定时时间一直存在误差,后修改代码做验证

按程序来说,输出波形周期应为2us,实际测试4us多,误差有点大,修改程序继续验证


注释掉部分代码之后,周期终于对了,所以确定是程序执行所需时间导致输出1us时间不准,但我需要1us时间,且需要调节这时间。
芯片速度不够,不知道STM32可不可以做到?准备换方案了

作者: npn    时间: 2022-11-8 12:13
自动重装初值模式,中断内不要赋值 TH0、TL0寄存器。
作者: szb314    时间: 2022-11-8 12:25
1us除了中断,能做的事不多了啊
作者: 蓝魄    时间: 2022-11-8 14:08
赋值、指令执行和判断都是要花时间的;不同的指令执行的时间也不一样;而且1us那么短;对于这种芯片来说还要调时间;肯定是吃不消的,要么用硬件pwm
作者: wisage007    时间: 2022-11-8 14:09
stm32肯定可以达到
作者: 188610329    时间: 2022-11-8 14:11
为什么非要用中断呢?
用 INT_CLKO |= 0x01;  直接输出不好么?
作者: q1114785858    时间: 2022-11-8 15:29

stm32的应该没问题
作者: wulin    时间: 2022-11-8 16:36
自动重装不需要再给TH0、TL0赋值,2us周期脉冲也不适合用定时器中断。改用高速脉冲输出功能为宜。
作者: 余音袅袅    时间: 2022-11-8 16:53
STC的下载软件内都有范例程序的,你可以用范例试试呢

下载软件.png (75.33 KB, 下载次数: 58)

下载软件.png

作者: coody_sz    时间: 2022-11-8 17:44
时间太短了,进中断处理、退出中断,总时间已经超过1us,所以会不准。
作者: Hephaestus    时间: 2022-11-8 20:09
发送连续波形完全可以用定时器自身的功能。只有单次输出才需要中断。
作者: cnos    时间: 2022-11-9 12:55
所有的锅都甩给八位机,就是不提系统架构设计,应用合理性。
你STM32做1us的中断也不见得中断程序里面你能多跑几条代码

作者: zaituniguli    时间: 2022-11-9 13:12
自动重装初值模式,中断内不要赋值 TH0、TL0寄存器。
作者: yzwzfyz    时间: 2022-11-9 14:18
1、已经设置为自动从装了,为何还要重置时常路,不合理。
2、每个us反转输出就完成2us的周期脉冲输出了,为何还要用NUM数数,也不合理。
两个不合理,导致程序执行时间过长,超出中断时间!
根本问题:中断时间不能太短,当中断服务程序运行时间>中断时间时,时序就控制不了了。
作者: Y_G_G    时间: 2022-11-10 00:26
24MHZ在1T模式下,误差最多就是1/24
做1uS肯定是没有问题的
问题是,你要这1uS又是可调的干嘛?
如果是计时,可以用定时器
如果输出PWM......很少有用到1MHZ的PWM的
也许,你想要的功能,可以通过其它方式来实现,还不如说说你要做什么好点




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1