Estoy usando una MCU de 16 bits, PIC24HJ64GP504 , para escribir una aplicación basada en CAN. Básicamente, es la comunicación entre mi placa y otro nodo que continuamente envía datos a mi placa utilizando CAN a 1 Mbit / s. Estoy configurando el módulo ECAN en mi PIC24 para trabajar a 1 Mbit / s. He escrito el código de tal manera que durante los primeros 10 ms el módulo ECAN aceptará todos los mensajes que lleguen desde el otro lado, y después de eso he reconfigurado el módulo ECAN para aceptar solo aquellos mensajes con ID de mensaje 0x13.
Ahora aquí viene el problema. El otro nodo y mi placa se encienden en el mismo instante. El otro nodo comienza a transmitir mensajes después de 40 ms aproximadamente después del encendido. Pero no puedo recibir ningún mensaje de él en mi tablero. Ahora, si enciendo mi placa primero, dedique algo de tiempo para reconfigurar el módulo ECAN con nuevos filtros y estabilizar y luego encender el otro nodo, entonces todo funciona perfectamente.
Ahora la parte más extraña ... Si tengo un analizador de bus CAN conectado entre mi placa y el otro nodo e incluso si enciendo ambos nodos al mismo tiempo, todo funciona bien ... no es necesario encender mi placa primero. He intentado esto con tres analizadores de bus diferentes de diferentes fabricantes y obtuve los mismos resultados.
Para mí, parece que durante la reconfiguración del módulo ECAN, lleva algún tiempo asentarse. Y con la introducción del analizador de bus en el bus, esta vez se interrumpe de alguna manera para que todo funcione perfectamente. Pero no estoy seguro de cuál podría ser exactamente el problema.
He estado luchando con este problema durante los últimos siete días.
PD: Hoy verifiqué con un alcance y descubrí que si el otro nodo comienza a transmitir después de 170 ms después del encendido, todo funciona bien. Antes de eso, mi dispositivo no recibirá ningún mensaje de él a menos que el analizador de bus esté conectado. La peor parte es que no puedo retrasar la transmisión del otro nodo, el firmware de ese nodo es propietario.
También leí en un foro hoy que CAN necesita la resistencia de 120 Ω en el nodo para que funcione (a pesar de que mi nodo no tiene uno y funciona bien, siempre que tenga tiempo para instalarse después de la reconfiguración). Sospecho que la introducción del analizador de bus de alguna manera cambia algunos parámetros eléctricos de la red, de modo que el tiempo que tarda mi nodo en establecerse después de la reconfiguración se acorta. Pero no estoy seguro.. :(