我有一个问题,关于在使用Microchip TCP/IP堆栈时控制步进电机。以前我使用定时器来控制步进电机,我将定时器的周期设置为脉冲之间所需的时间,然后在定时器滴答ISR中根据需要更改电机相位输出。在我这样做的情况下,我的步进电机最大速率约为每秒400个脉冲,这意味着中断发生每2.5毫秒一次。而我是使用USB进行与主机通信。
现在我正在开发一个新产品,它将使用TCP/IP堆栈通过以太网与PC通信,并通过SPI和UART模块与其他设备通信。这个新设备必须能够操作高达每秒2000个脉冲的步进电机,这意味着如果我使用相同的定时器/ISR方法驱动步进电机,则中断可能每0.5毫秒触发一次。根据从主机接收到的命令打开和关闭步进电机,因此主机通信和电机操作需要协调和同时进行。如果步进电机速度略有变化,那么不会有问题,但这并不理想。另外,如果步进电机在移动过程中停顿了30毫秒,那是不可接受的。
我考虑在这个项目中使用带有16MHz指令时钟速度(使用内部FRC + PLL的32Mhz / 2)的PIC24F。您认为步进电机的中断会干扰以太网通信或反之亦然吗?有更好的方法吗?
我考虑使用单独的PIC来控制步进电机,然后我可以向该PIC发送目标位置命令或停止命令以启动和停止运动,但这将添加另一个固件并使一切都变得复杂。
现在我正在开发一个新产品,它将使用TCP/IP堆栈通过以太网与PC通信,并通过SPI和UART模块与其他设备通信。这个新设备必须能够操作高达每秒2000个脉冲的步进电机,这意味着如果我使用相同的定时器/ISR方法驱动步进电机,则中断可能每0.5毫秒触发一次。根据从主机接收到的命令打开和关闭步进电机,因此主机通信和电机操作需要协调和同时进行。如果步进电机速度略有变化,那么不会有问题,但这并不理想。另外,如果步进电机在移动过程中停顿了30毫秒,那是不可接受的。
我考虑在这个项目中使用带有16MHz指令时钟速度(使用内部FRC + PLL的32Mhz / 2)的PIC24F。您认为步进电机的中断会干扰以太网通信或反之亦然吗?有更好的方法吗?
我考虑使用单独的PIC来控制步进电机,然后我可以向该PIC发送目标位置命令或停止命令以启动和停止运动,但这将添加另一个固件并使一切都变得复杂。