dsPIC33 ECAN Sendeprobleme

Gast #1240957
Lesenswert?

Hallo,

ich kämpfe gerade etwas mit dem ECAN-Modul des dsPIC33F...

Als Grundlage dient die AN1249 von Microchip (hier Beschreibung und 
Code)
http://ww1.microchip.com/downloads/en/AppNotes/01249A.pdf
http://ww1.microchip.com/downloads/en/AppNotes/AN1249%20Source%20Code.zip

Die AN beschreibt die Konfiguration für 4 ECAN-Buffer: 1x Sendepuffer 
(buffer-0) und 3x Empfangspuffer (buffer-1..3).


Für meine Anwendung möchte ich mehrere Sendepuffer haben, also wurde die 
Anzahl der Buffer auf 8 geändert:
'ecan.h'
1
#define ECAN1_MSG_BUF_LENGTH  8

und 'ecan.c' Funktion 'initECAN'
1
C1FCTRLbits.DMABS = 0b010; // 8 CAN Messages to be buffered in DMA RAM
2
...
3
_TXEN4 = 1; // ECAN1 Buffer 4 is a Tx Buffer
4
_TXEN5 = 1; // ECAN1 Buffer 5 is a Tx Buffer
5
_TXEN6 = 1; // ECAN1 Buffer 6 is a Tx Buffer
6
_TXEN7 = 1; // ECAN1 Buffer 7 is a Tx Buffer
(Die Prioritäten für die Sendepuffer seien mal vernachlässigt)

Jetzt tritt nun folgender Effekt auf:
- Sende ich eine Botschaft mit Buffer-0 ('ursprünglicher' Tx-Buffer) 
dann funktioniert die Geschichte wunderbar

- Sende ich jedoch mit einem meiner 'neuen' Buffer senden, also Buf4..7, 
dann funktioniert dies NICHT zuverlässig.
Es wird nur etwa jede 5te Botschaft richtig abgesendet - bei den 4 
fehlerhaften stimmt zwar die Länge und die Nutzdaten, jedoch wird ein 
standard Identifier (11-bit) mit 0x00 0x00 0x00 0x00 verschickt und 
NICHT die eigentliche Msg-ID der Nachricht.

So, nun die eigentliche Frage;
Ist das ein generelles Problem, oder habe ich 'nur' eine wichtige 
Konfiguration vergessen?

Was mich an der Sache so stört ist, dass es mit der ID ja ab und zu 
funktioniert, dann wieder nicht - jedoch DLC und Nutzdaten IMMER passen.

Gruß
#1251903
Lesenswert?

Hallo Manuel,
nein, Lösung habe ich leider keine gefunden.
Als workaround verwende ich halt nur einen Tx Puffer (0) und mache meine 
Sende-queue unsinnigerweise wieder im RAM als FiFo Ringpuffer...

Das Errata-Sheet kannte ich noch gar nicht, danke der Info! Scheint ja 
echt ein Hardware-Bug zu sein.

Gruß
Christian

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