李鑫发 发表于 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。
页: 10 11 12 13 14 15 16 17 18 19 [20] 21
查看完整版本: 51开源,步进电机驱动 程序, 直接驱动, 或驱动步进电机驱动器 一共8个程序