Estou usando um MCU de 16 bits, PIC24HJ64GP504 , para escrever um aplicativo baseado em CAN. Basicamente, é a comunicação entre minha placa e um outro nó que continua continuamente enviando dados para minha placa usando CAN a 1 Mbit / s. Estou configurando o módulo ECAN no meu PIC24 para funcionar a 1 Mbit / s. Escrevi o código de maneira que, nos primeiros 10 ms, o módulo ECAN aceite todas as mensagens vindas do outro lado e depois reconfigurei o módulo ECAN para aceitar apenas as mensagens com a mensagem ID 0x13.
Agora, aqui vem a questão. O outro nó e minha placa são ligados no mesmo instante. O outro nó começa a transmitir mensagens após aproximadamente 40 ms após a inicialização. Mas não consigo receber nenhuma mensagem dele no meu quadro. Agora, se eu ligar minha placa primeiro, reserve algum tempo para reconfigurar o módulo ECAN com novos filtros, instalar-se e depois ligar o outro nó, tudo funcionará perfeitamente.
Agora, a parte mais estranha .. Se eu tiver um analisador de barramento CAN conectado entre minha placa e o outro nó e mesmo se eu ligar os dois nós ao mesmo tempo, tudo funciona bem ... não há necessidade de ligar minha placa primeiro. Eu tentei isso com três analisadores de barramento diferentes de fabricantes diferentes e obtive os mesmos resultados.
Para mim, parece que durante a reconfiguração do módulo ECAN, leva algum tempo para se acalmar. E com a introdução do analisador de barramento no barramento, esse tempo é de alguma forma interrompido para que tudo funcione perfeitamente. Mas não tenho certeza de qual seja exatamente o problema.
Eu tenho lutado com esse problema nos últimos sete dias.
PS: Hoje verifiquei com um escopo e descobri que se o outro nó começar a transmitir após 170 ms após a inicialização, tudo funcionará bem. Antes disso, meu dispositivo não receberá nenhuma mensagem a menos que o analisador de barramento esteja conectado. A pior parte é que não posso atrasar a transmissão do outro nó, o firmware desse nó é proprietário.
Também li em um fórum hoje que o CAN precisa do resistor de 120 at no nó para fazê-lo funcionar (mesmo que meu nó não tenha um e funcione bem, desde que haja algum tempo para se estabelecer após a reconfiguração). Suspeito que a introdução do analisador de barramento altere de alguma forma os parâmetros elétricos de algumas redes, de modo que o tempo gasto pelo meu nó para se estabelecer após a reconfiguração seja reduzido. Mas eu não tenho certeza.. :(