李鑫发
发表于 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多秒钟,一直有脉冲波形产生。频率是与命令相符的 。问题找到了,应该是示波器没调好,造 成看的波形不对。