硬汉嵌入式论坛

 找回密码
 立即注册
查看: 575|回复: 5
收起左侧

[技术讨论] 请教:需要输出精确数量的脉冲时,从定时器是否可以回过头来作为主定时器的门控?

[复制链接]

3

主题

11

回帖

20

积分

新手上路

积分
20
发表于 2023-3-5 01:16:54 | 显示全部楼层 |阅读模式
大家好,事情是这样的

f103 pwm -> 细分驱动器 -> 42电机

目前实现:
TIM8 CH1 PWM 输出步进脉冲,作为主定时器;TIM5 作为从定时器,ETR 模式,prescaler 和 counter perriod 根据细分倍数和预期转动角度计算好
启动时设定 TIM5,开启 TIM5,开启 TIM8 pwm,脉冲够数量后进 TIM5 update 中断,在中断服务里关闭 TIM8 pwm,关闭 TIM5
目前测试 128 细分下,25600 个脉冲一圈,1 秒 1 圈,每次转一圈,重复几百次,没有观察到累计误差

想优化成不需要中断服务参与的方式:
把从定时器 TIM5 的 Trigger output 打开,Trigger event 选择 update,主定时器 TIM8 slave mode 选择门控,Trigger source 选择 TIM5
此时测试 TIM8 不工作,不输出足够数量的脉冲,TIM5 不会触发 update,门控逻辑是反的
后来把 TIM5 的 Trigger event 改成 Enabe(CNT_EN),测试 TIM8 是可以输出脉冲的,但仍然需要在中断服务参与才能关闭

是否把 TIM5 设为 one pulse mode 就好了?或者有没有方法可以反转门控正负逻辑?


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
发表于 2023-3-5 09:02:53 | 显示全部楼层
这种的不如用TIM UP溢出触发DMA控制任意IO BSRR寄存器实现脉冲控制。
回复

使用道具 举报

3

主题

11

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2023-3-5 20:07:10 | 显示全部楼层
好的硬汉哥,等到了公司试一试
回复

使用道具 举报

210

主题

1043

回帖

1683

积分

至尊会员

More we do, more we can do.

积分
1683
发表于 2023-3-6 22:54:00 | 显示全部楼层
每发出1个Pulse触发1次中断,或者级联TIM触发指定次数后中断
回复

使用道具 举报

210

主题

1043

回帖

1683

积分

至尊会员

More we do, more we can do.

积分
1683
发表于 2023-3-6 23:12:33 | 显示全部楼层
回复

使用道具 举报

3

主题

11

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2023-3-9 09:17:41 | 显示全部楼层
感谢回复,这周在忙别的,实验有了结果再来
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 06:16 , Processed in 0.253760 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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