PIC24H vermischt CAN-IDs von Tx-Puffer

Gast #2432298
Lesenswert?

Hallo,

ich hab ein seltsames Problem mit einem PIC24HJ64GP506:
Ich habe die ersten beiden Message-Puffer als Transmit (Tx) mit 
29-Bit-Identifier konfiguriert.
Die CAN-ID des TxBuf[0] ist 0x11111111.
Die CAN-ID des TxBuf[1] ist 0x02222222.
Ich versende nur TxBuf[1] zyklisch.

Meine Gegenstelle empfängt zwei Messages mit den Daten von TxBuf[1] mit 
folgenden CAN-IDs:
0x02222222 (korrekt)
0x11122222 -> Mischmasch aus CAN-ID von TxBuf[0] and TxBuf[1].

Nach einem Tag Fehlersuche sieht es für mich so aus, als ob sich der 
CAN-Controller beim Versenden von TxBuf[1] manchmal fälschlicherweiser 
das erste Wort von TxBuf[0] holt. Dort steht die SID drinn. Daher 
bekomme ich dann eine CAN-ID, die aus der SID von TxBuf[0], und der EID 
und den Daten von TxBuf[1] besteht.

Mir ist es sogar gelungen dieses Problem mit dem Microchip-Beispiel-Code 
aus AN1249 nachzustellen (mußte natürlich eine 2.CAN-TX-Nachricht 
einbauen). Der Code im Anhang.

Hat jemand sowas schon mal gesehen?
Angehängte Dateien:
Gast #2433393
Lesenswert?

hier ein Zitat aus dem Errata zum PIC24HJ64GP506:

>> 10. Module: ECAN
>> If multiple ECAN transmit buffers are enabled
>> (multiple TXREQ or TXEN bits are set to ‘1’
>> simultaneously), then the message transmissions
>> from the enabled buffers may interfere with one
>> another. As a result, incorrect ID and data
>> transmissions will occur intermittently.
>> Work around
>> Enable only Buffer 0 for transmission at any given
>> time. In the user application, this can be ensured
>> by checking that all other TXREQn and TXENn
>> bits are clear, before setting the TXREQn bit or
>> TXENn to Buffer 0.

Also entweder ein anderer PIC nehmen oder nur TXBuf[0] verwenden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren