¿Cómo reinicio el registro de desplazamiento de lectura SPI de un AVR?

3

Estoy usando un chip AVR (es decir, Arduino Uno) para monitorear el tráfico SPI en un dispositivo externo y tengo un problema debido a que el dispositivo externo se reinicia periódicamente (por diseño). Esto resulta en una caída momentánea de voltaje en el pin CLK que mi AVR confunde con un bit adicional. El resultado neto es que el registro de cambios SPI se desincroniza en la secuencia de datos entrantes en 1 bit cada vez que se reinicia el dispositivo.

Puedo detectar estos eventos de reinicio debido al retraso en el inicio donde no se está enviando el tráfico SPI. ¿Hay alguna manera fácil de restablecer el registro de desplazamiento cuando esto sucede para hacer que las lecturas SPI se reinicien en el bit 0?

    
pregunta Mark Feldman

1 respuesta

1

Parece que hay poca información sobre cómo utiliza el arduino para monitorear la comunicación. Pero, probablemente también debería monitorear el \ $ \ overline {\ textrm {CS}} \ $ pin. Cuando \ $ \ overline {\ textrm {CS}} \ $ baja la comunicación SPI está al comienzo de cada transmisión, por lo tanto, debería poder usar eso para sincronizar cada paquete y restablecer el registro de cambios de entrada. Cuando \ $ \ overline {\ textrm {CS}} \ $ pasa a nivel alto, se termina la comunicación, por lo que debe vaciar su salida incluso si no obtuvo un byte completo. (\ $ \ overline {\ textrm {CS}} \ $ también se conoce como \ $ \ overline {\ textrm {SS}} \ $).

    
respondido por el HKOB

Lea otras preguntas en las etiquetas