Tengo una pregunta sobre el control del motor paso a paso mientras uso la pila TCP / IP.
En el pasado, he usado un temporizador para el control de mi motor paso a paso. Configuro el período de un temporizador al tiempo requerido entre impulsos y luego cambio las salidas de fase del motor según sea necesario en el temporizador ISR. En los casos en los que hice esto, mi paso a paso se movía a una velocidad máxima de alrededor de 400 pulsos por segundo, lo que significa que la interrupción se producía cada 2.5 milisegundos. Y estaba usando USB para comunicarme con el host.
Ahora estoy trabajando en un nuevo producto que utilizará la pila TCP / IP para comunicarse con una PC a través de Ethernet. También se comunicará con otros dispositivos a través de los módulos SPI y UART. Este nuevo dispositivo debe ser capaz de operar un paso a paso hasta 2000 pulsos por segundo, lo que significa que la interrupción puede dispararse cada .5 milisegundos si uso el mismo enfoque de temporizador / ISR para conducir el paso a paso. El paso a paso se activa y desactiva según los comandos recibidos del host, por lo que la comunicación con el host y el funcionamiento del motor deben realizarse de forma armoniosa y simultánea. Si la velocidad paso a paso varía ligeramente, eso no sería un problema, pero no es lo ideal. Además, si el paso a paso se detuviera por unos 30 ms en medio de su movimiento, no sería aceptable.
Estoy considerando usar un PIC24F con la velocidad de reloj de instrucción de 16MHz (32Mhz / 2 usando el FRC + PLL interno) para este proyecto. ¿Crees que las interrupciones del paso a paso interrumpirán la comunicación de Ethernet o viceversa? ¿Hay una mejor manera de hacer esto?
He considerado usar un PIC separado para el control paso a paso y luego podría enviar los comandos de posición de destino de imagen o detener los comandos para iniciar y detener el movimiento, pero eso agregaría otro firmware a la mezcla y complicaría las cosas.