找回密码
 立即注册
查看: 585|回复: 11

8G1K08A延时及定时器输出有误差

[复制链接]

1

主题

3

回帖

11

积分

新手上路

积分
11
发表于 2024-10-12 15:12:39 | 显示全部楼层 |阅读模式
本帖最后由 DebugLab 于 2024-10-12 15:50 编辑

问题描述:在使用8G1K08A,反转GPIO状态过程中,发现定时器或延时函数大概存在5%的时间误差.时钟源为默认内部高精度IRC,时钟频率为11.0592MHZ,设置方式为通过STC-ISP工具选项选定。硬件方面,只有两个滤波电容和MCU。电源为USB直接供电5V.请教一下误差原因和消除方法。

测试代码

测试代码

延时输出1

延时输出1

延时输出2

延时输出2
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-05-03 00:09:43
已绑定手机

77

主题

4850

回帖

8388

积分

超级版主

DebugLab

积分
8388
发表于 2024-10-12 16:13:00 | 显示全部楼层
截图202410121612337833.jpg

截图202410121612575005.jpg

DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-05-03 00:09:43
已绑定手机

77

主题

4850

回帖

8388

积分

超级版主

DebugLab

积分
8388
发表于 2024-10-12 16:15:35 | 显示全部楼层
100-99.65=0.35
0.35/100*100%=0.35%
是你数学问题
DebugLab
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-05-03 00:09:43
已绑定手机

77

主题

4850

回帖

8388

积分

超级版主

DebugLab

积分
8388
发表于 2024-10-12 16:17:58 | 显示全部楼层
还有测量仪器误差需要考虑
DebugLab
回复 支持 1 反对 0

使用道具 举报 送花

1

主题

3

回帖

11

积分

新手上路

积分
11
发表于 2024-10-12 16:18:30 | 显示全部楼层
本帖最后由 zhangxu 于 2024-10-12 16:28 编辑

哥,内部预置频率就是后面设置的11.0592MHZ还是预设的固定频率。

点评

使用内部预置频率是注意事项,不是导致问题的原因,已经设置一致可忽略,我觉得还是数学问题,0.35%才对 keil的优化等级设置 [attachimg]59597[/attachimg]  详情 回复 发表于 2024-10-12 16:28
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-05-03 00:09:43
已绑定手机

77

主题

4850

回帖

8388

积分

超级版主

DebugLab

积分
8388
发表于 2024-10-12 16:28:11 | 显示全部楼层
zhan*** 发表于 2024-10-12 16:18
哥,内部预置频率就是后面设置的11.0592MHZ还是预设的固定频率,默认优先级设置怎么指令是啥呢。 ...


使用内部预置频率是注意事项,不是导致问题的原因,已经设置一致可忽略,我觉得还是数学问题,0.35%才对
keil的优化等级设置
截图202410121627295008.jpg

DebugLab
回复 支持 反对

使用道具 举报 送花

1

主题

3

回帖

11

积分

新手上路

积分
11
发表于 2024-10-12 16:39:40 | 显示全部楼层
Debu*** 发表于 2024-10-12 16:28
使用内部预置频率是注意事项,不是导致问题的原因,已经设置一致可忽略,我觉得还是数学问题,0.35%才对 ...

我想消除这个误差的话,只能采用外部晶振吗

点评

0.35%误差已经很小了,对于粗略的软件延时来说没有影响,你的测量仪器也会有误差,没有绝对的0误差  详情 回复 发表于 2024-10-12 16:46
晶振也解决不了这个问题,要用硬件,比如定时器和RTC,软件延时也受中断影响,要精确必须关中断,但长时间关中断是不现实的,软件延时一般只是粗略的延时,不应该有过高的要求  详情 回复 发表于 2024-10-12 16:44
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-05-03 00:09:43
已绑定手机

77

主题

4850

回帖

8388

积分

超级版主

DebugLab

积分
8388
发表于 2024-10-12 16:44:28 | 显示全部楼层
zhan*** 发表于 2024-10-12 16:39
我想消除这个误差的话,只能采用外部晶振吗

晶振也解决不了这个问题,要用硬件,比如定时器和RTC,软件延时也受中断影响,要精确必须关中断,但长时间关中断是不现实的,软件延时一般只是粗略的延时,不应该有过高的要求
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-05-03 00:09:43
已绑定手机

77

主题

4850

回帖

8388

积分

超级版主

DebugLab

积分
8388
发表于 2024-10-12 16:46:28 | 显示全部楼层
zhan*** 发表于 2024-10-12 16:39
我想消除这个误差的话,只能采用外部晶振吗

0.35%误差已经很小了,对于粗略的软件延时来说没有影响,你的测量仪器也会有误差,没有绝对的0误差
DebugLab
回复 支持 2 反对 0

使用道具 举报 送花

1

主题

3

回帖

11

积分

新手上路

积分
11
发表于 2024-10-12 16:54:25 | 显示全部楼层
Debu*** 发表于 2024-10-12 16:46
0.35%误差已经很小了,对于粗略的软件延时来说没有影响,你的测量仪器也会有误差,没有绝对的0误差 ...

了解了,我试一下哈,感谢
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 14:56 , Processed in 0.218500 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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