Sto usando un MCU a 16 bit, PIC24HJ64GP504 , per scrivere un'applicazione basata su CAN. Fondamentalmente è la comunicazione tra la mia scheda e un altro nodo che continua continuamente a inviare dati alla mia scheda utilizzando CAN a 1 Mbit / s. Sto configurando il modulo ECAN nel mio PIC24 per funzionare a 1 Mbit / s. Ho scritto il codice in modo tale che per i primi 10 ms il modulo ECAN accetti tutti i messaggi che arrivano dall'altra parte, e successivamente ho riconfigurato il modulo ECAN per accettare solo quei messaggi con ID messaggio 0x13.
Ora ecco che arriva il problema. L'altro nodo e la mia scheda sono accesi nello stesso istante. L'altro nodo inizia a trasmettere messaggi dopo circa 40 ms dopo l'accensione. Ma non riesco a ricevere alcun messaggio dalla mia bacheca. Ora, se accendo prima la mia scheda, concedo del tempo per riconfigurare il modulo ECAN con nuovi filtri e sistemarsi e quindi accendere l'altro nodo, quindi tutto funziona perfettamente.
Ora la parte più strana .. Se ho un analizzatore di bus CAN collegato tra la mia scheda e l'altro nodo e anche se accendo entrambi i nodi allo stesso tempo, tutto funziona bene ... non è necessario accendere prima la mia scheda. Ho provato questo con tre diversi analizzatori di bus di diversi produttori e ho ottenuto gli stessi risultati.
A me sembra che durante la riconfigurazione del modulo ECAN, ci voglia del tempo per sistemarsi. E con l'introduzione dell'analizzatore del bus nel bus, questa volta viene in qualche modo abbreviato in modo che tutto funzioni perfettamente. Ma non sono sicuro di quale potrebbe essere esattamente il problema.
Ho avuto problemi con questo problema negli ultimi sette giorni.
PS: Oggi ho verificato con un ambito e ho scoperto che se l'altro nodo inizia a trasmettere dopo 170 ms dopo l'accensione, allora tutto funziona perfettamente. Prima di ciò, il mio dispositivo non riceverà alcun messaggio da esso a meno che l'analizzatore del bus non sia collegato. La parte peggiore è che non riesco a ritardare la trasmissione dell'altro nodo, il firmware di quel nodo è proprietario.
Oggi ho anche letto in un forum che CAN ha bisogno del resistore da 120 Ω sul nodo per farlo funzionare (anche se il mio nodo non ne ha uno e funziona benissimo, a condizione che abbia il tempo di sistemarsi dopo la riconfigurazione). Sospetto che l'introduzione dell'analizzatore di bus modifichi in qualche modo alcuni parametri elettrici della rete in modo tale che il tempo impiegato dal mio nodo per stabilizzarsi dopo la riconfigurazione sia ridotto. Ma non sono sicuro.. :(