李鑫发
发表于 2025-3-20 12:42:34
梁工 发表于 2025-2-20 15:43
每个脉冲中断2次,控制1个电机最好不超过50KHz,多个电机最好不超过20KHz。
1.8度的步进电机使用较高的细 ...
梁工,请教一下,PWMA脉冲和MODBUS有冲突,只有在发脉冲时候关闭轮询才能正常使用,不然步进会卡顿,有什么办法解决这个问题吗
梁工
发表于 2025-3-20 14:58:06
李鑫发 发表于 2025-3-20 12:42
梁工,请教一下,PWMA脉冲和MODBUS有冲突,只有在发脉冲时候关闭轮询才能正常使用,不然步进会卡顿,有什 ...
PWM怎么可能跟MODBUS有冲突?PWM是一个数字硬件外设,MODBUS是一个软件协议,风牛马不相及啊!我实在想不到这两会有什么关联,你还是仔细检查一下你的程序逻辑吧。记住:程序中不要频繁使用几十us以上的软件延时,不要等待事件,中断更不能等待。
李鑫发
发表于 2025-3-20 15:03:40
梁工 发表于 2025-3-20 14:58
PWM怎么可能跟MODBUS有冲突?PWM是一个数字硬件外设,MODBUS是一个软件协议,风牛马不相及啊!我实在想不 ...
程序里没有的软件延时的,是上位机和单片机进行MODBUS通讯的时候,如果PWMA在发脉冲,那么脉冲会卡顿,应该是通讯轮询进中断的影响
李鑫发
发表于 2025-3-20 15:06:34
梁工 发表于 2025-3-20 14:58
PWM怎么可能跟MODBUS有冲突?PWM是一个数字硬件外设,MODBUS是一个软件协议,风牛马不相及啊!我实在想不 ...
现在处理方法是把PWMA的中断优先级设最高,并且PWMA发脉冲的时候,关闭通讯轮询,发完脉冲再打开,这样就正常了,但是想问下有没有更好的处理方法
梁工
发表于 2025-3-20 17:39:04
李鑫发 发表于 2025-3-20 15:03
程序里没有的软件延时的,是上位机和单片机进行MODBUS通讯的时候,如果PWMA在发脉冲,那么脉冲会卡顿,应 ...
PWM中断必须是最高优先级。MODBUS轮询应该在主程序中执行,不会影响中断的。
李鑫发
发表于 2025-3-26 15:39:17
梁工 发表于 2025-3-20 17:39
PWM中断必须是最高优先级。MODBUS轮询应该在主程序中执行,不会影响中断的。 ...
PWM中断和算加减速的定时器1已经设为最高优先级了,MODBUS轮询也在主程序中,但是还是有影响{:shui:}
梁工
发表于 2025-3-26 15:53:12
李鑫发 发表于 2025-3-26 15:39
PWM中断和算加减速的定时器1已经设为最高优先级了,MODBUS轮询也在主程序中,但是还是有影响 ...
我实在想不到,什么原因主程序能影响中断的执行,想想都不可能。
李鑫发
发表于 2025-3-26 16:32:30
梁工 发表于 2025-3-26 15:53
我实在想不到,什么原因主程序能影响中断的执行,想想都不可能。
我Modbus是移植的Free-Modbus,已经在STC8上用几年了,现在是想控制步进,所以加上了你写的 匹配翻转输出脉冲控制步进电机驱动器-STC8H-PWMA输出,没搞懂咋回事
李鑫发
发表于 2025-3-28 17:15:19
梁工 发表于 2025-3-26 15:53
我实在想不到,什么原因主程序能影响中断的执行,想想都不可能。
找到问题了,FreeModbus里面好几个EA=0 EA=1,不过他定义了其他名称,删掉就好了{:leiben:}
梁工
发表于 2025-3-28 18:37:45
李鑫发 发表于 2025-3-28 17:15
找到问题了,FreeModbus里面好几个EA=0 EA=1,不过他定义了其他名称,删掉就好了 ...
非必要,中途不要操作EA。