找回密码
 立即注册

QQ登录

只需一步,快速开始

开启左侧

M487计时器抖动是怎么来的?

[复制链接]
BOEINGNG 发表于 2024-5-8 16:47:27 | 显示全部楼层 |阅读模式
我用M487的TIMER产生了一个10kHz的周期性的中断,TIMER用的是外部晶振触发,我在每次中断进入的时候反转一个GPIO位,然后在示波器上观测这个GPIO位,发现相邻边沿之间有大约200ns的抖动,请问这个抖动主要是由于晶振的抖动引起的吗?还是因为别的原因?
回复

使用道具 举报

chrishu 发表于 2024-5-8 17:01:22 | 显示全部楼层
你这是软件写实现引脚翻转,执行代码是需要时间的,如果又别的优先级高的中断存在,误差会更大。可以用定时器的触发输出功能,定时到后硬件触发引脚翻转,不需要软件参与更准确。
回复 支持 反对

使用道具 举报

 楼主| BOEINGNG 发表于 2024-5-8 17:29:06 | 显示全部楼层
chrishu 发表于 2024-5-8 17:01
你这是软件写实现引脚翻转,执行代码是需要时间的,如果又别的优先级高的中断存在,误差会更大。可以用定时 ...

执行代码需要的时间会引起抖动吗?难道不是固定的吗?
回复 支持 反对

使用道具 举报

chrishu 发表于 2024-5-9 09:13:25 | 显示全部楼层
BOEINGNG 发表于 2024-5-8 17:29
执行代码需要的时间会引起抖动吗?难道不是固定的吗?

那你说的抖动是指什么,可以把图贴出来看一下
回复 支持 反对

使用道具 举报

 楼主| BOEINGNG 发表于 2024-5-9 09:26:01 | 显示全部楼层
chrishu 发表于 2024-5-9 09:13
那你说的抖动是指什么,可以把图贴出来看一下

就这个下降沿的抖动,这个是周期性的信号,用第一个信号做触发,观察第二个信号的抖动 screenshot-20240509-092500.png
回复 支持 反对

使用道具 举报

chrishu 发表于 2024-5-9 10:35:17 | 显示全部楼层
你这个是不是中断函数里翻转数据得位置写得不对啊?感觉像是多次进中断反复在进行翻转。你可以参考下面这个代码

main.zip (1.42 KB, 下载次数: 281)
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU