李鑫发 发表于 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。

草木灰06 发表于 2025-3-29 16:53:03

学习学习

黎明的曙光 发表于 2025-4-3 09:40:59

学习一下{:4_174:}

AHBbGao 发表于 2025-5-16 18:18:15

我将程序下载到单片机中,发送L1,500,1   ,理论是只发一个脉冲就结束吧,但是实际,我用示波器看,P10口会持续发很多,时间大约有10多秒钟,一直有脉冲波形产生。频率是与命令相符的    。问题找到了,应该是示波器没调好,造 成看的波形不对。
页: 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22
查看完整版本: 51开源,步进电机驱动 程序, 直接驱动, 或驱动步进电机驱动器 一共8个程序