OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6418|回复: 11

定时器输入捕获的溢出问题

[复制链接]

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2020-2-24
在线时间
21 小时
发表于 2022-8-17 10:48:24 | 显示全部楼层 |阅读模式
5金钱
我用STM32F407的TIM4的四个通道捕获遥控器接收机发出的PWM波,希望得到占空比,但是经常有溢出的情况出现。板子上接舵机和电机之后这种现象更为明显,调试了很长时间也没有解决

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2020-2-24
在线时间
21 小时
 楼主| 发表于 2022-8-17 10:48:56 | 显示全部楼层
  1.                 if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1)
  2.                 {
  3.                         if(GPIOD->IDR & GPIO_PIN_12)
  4.                                 ch1_cap1 = TIM4->CCR1;
  5.                         else
  6.                         {
  7.                                 ch1_cap2 = TIM4->CCR1;
  8.                                
  9.                                 if(ch1_cap2>ch1_cap1)
  10.                                 CH1 = ch1_cap2-ch1_cap1;
  11.                                 if(ch1_cap2<ch1_cap1)
  12.                                 CH1 = ch1_cap2+50000-ch1_cap1;
  13.                         }
  14.                 }
复制代码
回复

使用道具 举报

11

主题

2143

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4874
金钱
4874
注册时间
2015-1-10
在线时间
610 小时
发表于 2022-8-17 13:50:36 | 显示全部楼层
参考原子的定时器输入捕获,外部再加个定时器溢出中断,一个粗计时,一个精计时
回复

使用道具 举报

12

主题

3387

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8632
金钱
8632
注册时间
2020-5-11
在线时间
4073 小时
发表于 2022-8-17 16:20:27 | 显示全部楼层
没看到你计算占空比的代码。
“溢出的情况”具体是指什么?
专治疑难杂症
回复

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2020-2-24
在线时间
21 小时
 楼主| 发表于 2022-8-17 19:45:21 | 显示全部楼层
上面贴了一段代码,我其实只需要计算占空比,所以才这样写,我把TIM4的频率设置的远低于需要捕获的信号的频率,这样在信号高电平时期,TIM4至多溢出一次,也也在代码中考虑进来了。用上下沿中断时捕获的CCR相减得到的数值就可以代表占空比的大小。正常来说这个数值在1000到2000之间,但经常会跳变到负一万多,这明显是不对的。
回复

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2020-2-24
在线时间
21 小时
 楼主| 发表于 2022-8-17 19:51:26 | 显示全部楼层
还有一个特别奇怪的现象,这个也是困扰我最长时间的,就是我在板子上接舵机、电机这种需要输出PWM信号的设备时,这种干扰会十分严重,换了个相同的板子也是这样的原因
回复

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2020-2-24
在线时间
21 小时
 楼主| 发表于 2022-8-17 19:51:49 | 显示全部楼层
LcwSwust 发表于 2022-8-17 16:20
没看到你计算占空比的代码。
“溢出的情况”具体是指什么?

我贴了一段代码,不知道你那里能不能看见
回复

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2020-2-24
在线时间
21 小时
 楼主| 发表于 2022-8-17 19:52:47 | 显示全部楼层
我的工程是用CUBEMX配置的,TIM4四个通道和TIM1的四个通道都有捕获
回复

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2020-2-24
在线时间
21 小时
 楼主| 发表于 2022-8-17 19:53:43 | 显示全部楼层
这个就是用上位机看的捕获的占空比,一接上电机、舵机就有这种现象
微信图片_20220817194606.jpg
回复

使用道具 举报

12

主题

3387

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8632
金钱
8632
注册时间
2020-5-11
在线时间
4073 小时
发表于 2022-8-23 10:56:04 | 显示全部楼层
OrangerLee 发表于 2022-8-17 19:51
我贴了一段代码,不知道你那里能不能看见

代码能看见,我以为你要算占空比,但代码是计算高电平宽度的,所以说没看见计算占空比的代码。
舵机的控制也是只需看高电平宽度的,不需要占空比,所以估计你是口误了,这里所说的“占空比”应改为“高电平宽度”,或“脉宽”。
从代码看是没问题的,但有个注意事项,捕获定时器的周期要配置为50000,另外你可以再监测一下ch1_cap2、ch1_cap1的值,看溢出时它们是多少,找到原因。
专治疑难杂症
回复

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2020-2-24
在线时间
21 小时
 楼主| 发表于 2022-9-5 15:54:24 | 显示全部楼层
LcwSwust 发表于 2022-8-23 10:56
代码能看见,我以为你要算占空比,但代码是计算高电平宽度的,所以说没看见计算占空比的代码。
舵机的控 ...

谢谢,我后来在调试的时候发现如果板子不接舵机,程序没有问题,接上两个舵机之后得到的高电平值就会经常跳变,有没有可能是电压不稳导致的问题
回复

使用道具 举报

12

主题

3387

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8632
金钱
8632
注册时间
2020-5-11
在线时间
4073 小时
发表于 2022-9-5 17:14:48 | 显示全部楼层
OrangerLee 发表于 2022-9-5 15:54
谢谢,我后来在调试的时候发现如果板子不接舵机,程序没有问题,接上两个舵机之后得到的高电平值就会经常 ...

那你得保证单片机电源的稳定,比如给它单独供电。
舵机、电机可能会在动作瞬间有大电流产生,注意滤波。
专治疑难杂症
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-14 22:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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