找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于STC单片机1us定时误差问题

查看数: 3162 | 评论数: 14 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-11-8 11:21

正文摘要:

芯片型号STC15W4K48S4  时钟采用内部时钟24M  模式16位自动重载 用定时器定时1us,变量做累加,发现定时时间一直存在误差,后修改代码做验证 注释掉部分代码之后,周期终于对了,所以 ...

回复

ID:401564 发表于 2022-11-10 00:26
24MHZ在1T模式下,误差最多就是1/24
做1uS肯定是没有问题的
问题是,你要这1uS又是可调的干嘛?
如果是计时,可以用定时器
如果输出PWM......很少有用到1MHZ的PWM的
也许,你想要的功能,可以通过其它方式来实现,还不如说说你要做什么好点
ID:123289 发表于 2022-11-9 14:18
1、已经设置为自动从装了,为何还要重置时常路,不合理。
2、每个us反转输出就完成2us的周期脉冲输出了,为何还要用NUM数数,也不合理。
两个不合理,导致程序执行时间过长,超出中断时间!
根本问题:中断时间不能太短,当中断服务程序运行时间>中断时间时,时序就控制不了了。
ID:1051174 发表于 2022-11-9 13:12
自动重装初值模式,中断内不要赋值 TH0、TL0寄存器。
ID:688692 发表于 2022-11-9 12:55
所有的锅都甩给八位机,就是不提系统架构设计,应用合理性。
你STM32做1us的中断也不见得中断程序里面你能多跑几条代码
ID:883242 发表于 2022-11-8 20:09
发送连续波形完全可以用定时器自身的功能。只有单次输出才需要中断。
ID:1034262 发表于 2022-11-8 17:44
时间太短了,进中断处理、退出中断,总时间已经超过1us,所以会不准。
ID:1047954 发表于 2022-11-8 16:53
STC的下载软件内都有范例程序的,你可以用范例试试呢

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

下载软件.png
ID:213173 发表于 2022-11-8 16:36
自动重装不需要再给TH0、TL0赋值,2us周期脉冲也不适合用定时器中断。改用高速脉冲输出功能为宜。
ID:619250 发表于 2022-11-8 15:29

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

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表