Vai al contenuto
PLC Forum


Microcontrollore Pic18F45K80


OzneD

Messaggi consigliati

Cari amici del forum sono nuovo e non sò se è corretto postare quì questa domanda, sto usando due schede elettroniche con microcontrollori PIC18F45K80 e stò cercando di trasmettere un DATA FRAME attraverso il MODULO ECAN in modalità "REQUESTS NORMAL MODE" da un microcontrollore all'altro, impostando l'ID del DATA FRAME da trasmettere (su un microcontrollore) uguale a quello del FILTRO associato al BUFFER IN RICEZIONE (sull'altro microcontrollore) la trasmissione avviene correttamente e l'ACKNOWLEDGE SLOT viene settato con un bit dominante "0", invece mettendo due ID diversi tra loro non si causa l'ACKNOWLEDGE ERROR come dice il protocollo bosch, premetto che il DATA FRAME che trasmetto quando imposto gli ID diversi non viene ricevuto da nessun buffer in ricezione su l'altra scheda e quindi stando a quanto dice il protocollo "Se nessun nodo ha ricevuto correttamente il frame si verifica un ACKNOWLEDGE ERROR e un error frame è generato e il messaggio (data frame) viene ripetuto, io controllando con l'oscilloscopio sulla connessione del CAN BUS ho notato che mettendo gli ID diversi il messaggio che invio non viene ripetuto non rispettando il protocollo ma se scollego il CAN BUS dalla scheda preposta a ricevere il messaggio viene ripetuto come dice il protocollo, SPERANDO CHE LA DESCRIZIONE DEL MIO PROBLEMA SIA STATA CHIARA ,SPERO CHE QUALCUNO MI POSSA AIUTARE A CAPIRE COME RIUSCIRE A FAR RIPETERE IL MESSAGGIO QUANDO NON VIENE RICEVUTO (cioè quando imposto gli ID diversi), RINGRAZIANDOVI ANTICIPATAMENTE ASPETTO UNA RISPOSTA.

Link al commento
Condividi su altri siti


Hai aperto 2 discussioni sul medesimo argomento. Pratica vioetata dal regolamento perchè causa confusione e disguidi. Se invitato a non reiterare comportamenti contrari al regolamento.

Il regolamento lo hai accettato liberamente e dovresti averlo letto; se non lo hai fatto affrettati a farlo e leggi anche le FAQ.

Link al commento
Condividi su altri siti

Non ho capito molto bene il tuo problema, ma ti sottopongo alcune considerazioni:

1) in risposta ad un messaggio inviato si avra' un ACK se un nodo QUALUNQUE nella rete riceve il messaggio

(ACK indica che il msg e' corretto; non vuol dire che il messaggio inviato e' sato "raccolto" dal nodo interessato)

2) se hai ID e filtri corretti ti ritrovi il msg nel nodo destinatario (tramite interrupt o polling)

3) per informare il nodo mittente della avvenuta ricezione, il destinatario DEVE spedire un messaggio al mittente.

Buon lavoro

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...