Forum: Mikrocontroller und Digitale Elektronik PIC24H vermischt CAN-IDs von Tx-Puffer


von Dosmo (Gast)


Angehängte Dateien:

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?

von PICfan (Gast)


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.

von Dosmo (Gast)


Lesenswert?

Stimmt.
Hatte ins falsche Errata Sheet (das vom PIC24HJ64GO506A mit "A") 
geschaut und dort nichts gefunden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.