搜索
bottom↓
回复: 23

串口中断太频繁会影响到pwm控制电机吗

[复制链接]

出0入0汤圆

发表于 2013-3-8 13:48:03 | 显示全部楼层 |阅读模式
我以前用pwm控制步进电机,一开始好好的,当串口开始接受数据时步进电机就不正常了,一会正转一会反转,速度也有异常,我的串口数据比较频繁,是不是串口中断影响到了pwm呢?改怎么解决呢

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2013-3-8 16:19:39 | 显示全部楼层
中断服务函数不要放太多东西,建议只放一个标志位,然后在主函数查询

出0入0汤圆

 楼主| 发表于 2013-3-8 16:56:09 | 显示全部楼层
tony90 发表于 2013-3-8 16:19
中断服务函数不要放太多东西,建议只放一个标志位,然后在主函数查询

pwm是独立工作的吗还是需要cpu参与?如果是独立工作的,那中断服务怎么会影响到pwm呢?

出0入0汤圆

发表于 2013-3-8 17:24:38 | 显示全部楼层
如果是计数器自动产生PWM,并且是自动刷新,是不需要CPU干预的。设置好计数器值启动即可。如果开了中断,会消耗CPU资源。

出0入0汤圆

发表于 2013-3-8 17:28:46 | 显示全部楼层
PWM控制步进电机?这个没看明白。
控制步进电机是按照一定时序变化四个IO口电平来控制的吧。
头像被屏蔽

出0入0汤圆

发表于 2013-3-8 17:31:27 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

 楼主| 发表于 2013-3-8 17:32:21 | 显示全部楼层
zhujinliang2124 发表于 2013-3-8 17:28
PWM控制步进电机?这个没看明白。
控制步进电机是按照一定时序变化四个IO口电平来控制的吧。 ...

用io口是模拟的时序,当然是pwm好一些

出0入0汤圆

发表于 2013-3-8 18:35:22 来自手机 | 显示全部楼层
pwm的优先级设置高一些,如果你的mcu支持中断嵌套,应该没问题

出0入0汤圆

发表于 2013-3-9 21:26:24 | 显示全部楼层
串口做轮询,用pwm中断轮询串口,pwm的周期ocr比较输出在接近top和bottom是会产生问题的,比如pwm频率较高。

出0入0汤圆

发表于 2013-3-9 22:36:12 | 显示全部楼层
肯定影响到了,我也试过,就是因为串口接收太频繁的原因

出0入0汤圆

发表于 2013-3-10 09:54:58 | 显示全部楼层
PWM也是靠中断来处理的,你的串口优先级如果没有PWM高,那么电机是不会被影响的。
同样在串口中断处理中,尽量不要采用运算,,让主程序区处理才是是真理。
祝你早日解决问题

出0入0汤圆

发表于 2013-3-17 11:47:27 | 显示全部楼层
中断里面的东西工作时间太长的话,会影响主程序运行的了, 建议中断里面少处理点事,多放在主函数里处理,这个影响就不会太大

出0入0汤圆

发表于 2013-3-17 12:51:07 | 显示全部楼层
你的PWM是用定时计数器来做的还是写在主函数里了

出50入0汤圆

发表于 2013-3-17 13:22:54 | 显示全部楼层
你串口中断里面不要做过多的数据处理,最好只是接受数据。
具体处理可以在主程序中。
另外,你需要检查一下电机的控制过程有没有受串口中断或者程序处理干扰,或者是变量有所改变等等

出0入0汤圆

发表于 2013-3-19 16:24:57 | 显示全部楼层
可能进入中断时间过长

出0入0汤圆

发表于 2013-4-12 00:26:58 | 显示全部楼层
如果你的pwm波是靠TIM定时器自己产生的,那应该不会出现问题的,你肯定是用定时器产生中断来改变电平的吧?回复我看看你是怎么产生pwm波的我再进一步帮你分析分析

出0入0汤圆

发表于 2013-4-12 06:07:26 | 显示全部楼层
电机不工作时串口开着,电机工作时关闭串口,改串口接收标志位查询。 总之一点,电机工作时,会对串口的实时性和便利性产生影响,用起串口来没那么爽了!

出0入0汤圆

 楼主| 发表于 2013-4-12 13:47:21 | 显示全部楼层
maochonghao 发表于 2013-4-12 00:26
如果你的pwm波是靠TIM定时器自己产生的,那应该不会出现问题的,你肯定是用定时器产生中断来改变电平的吧? ...

pwm是用定时器自己产生的,不是自己模拟的

出0入0汤圆

发表于 2013-4-12 16:42:18 | 显示全部楼层
那你再查查中断优先级,可能是串口的中断优先级优于TIM,导致TIM进入中断时若串口也发生中断事件的时候会让TIM的中断服务程序延迟,进而导致PWM波变形的问题。

出0入0汤圆

 楼主| 发表于 2013-4-12 16:46:52 | 显示全部楼层
maochonghao 发表于 2013-4-12 16:42
那你再查查中断优先级,可能是串口的中断优先级优于TIM,导致TIM进入中断时若串口也发生中断事件的时候会让 ...

这个我没考虑到,如果我把串口中断优先级调低的话,会不会影响到串口收数据呢?比如定时器进入中断时串口有数据来了,这时串口数据会不会造成丢失呢?

出0入0汤圆

发表于 2013-4-12 16:54:10 | 显示全部楼层
这样的话STM32的中断会在TIM中断服务处理完的第一时间处理串口的事件。TIM产生PWM的中断服务也就是改一下值然后重新写一个Cmd,花不了几个机器周期,串口说不定这个时候还没完成前一个字节的数据传输呢。你可以先调试一下看看效果,有很多中断的时候确实容易乱。

出0入0汤圆

 楼主| 发表于 2013-4-12 18:17:32 | 显示全部楼层
maochonghao 发表于 2013-4-12 16:54
这样的话STM32的中断会在TIM中断服务处理完的第一时间处理串口的事件。TIM产生PWM的中断服务也就是改一下值 ...

我用的avr,感觉中断优先级影响的可能性大一点,有时间试一下

出0入0汤圆

发表于 2013-4-12 18:24:06 | 显示全部楼层
看你的频繁程度了

出0入0汤圆

发表于 2013-4-13 15:22:48 | 显示全部楼层
还是少用为好,多少会有影响的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 13:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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