www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik dsPIC33 ECAN Sendeprobleme


Autor: Gast-n (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/AN1...

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'
#define ECAN1_MSG_BUF_LENGTH  8


und 'ecan.c' Funktion 'initECAN'
C1FCTRLbits.DMABS = 0b010; // 8 CAN Messages to be buffered in DMA RAM
...
_TXEN4 = 1; // ECAN1 Buffer 4 is a Tx Buffer
_TXEN5 = 1; // ECAN1 Buffer 5 is a Tx Buffer
_TXEN6 = 1; // ECAN1 Buffer 6 is a Tx Buffer
_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ß

Autor: manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hoi
Ich bin in exakt dasselbe Problem reingerasselt. Hast du inzwischen eine 
Lösung gefunden?
Gruss,
Manuel

Autor: manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habe gerade noch folgendes gefunden:
http://ww1.microchip.com/downloads/en/DeviceDoc/80306E.pdf

Autor: C. H. (_ch_)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

Habt Ihr auch brav im CiFCTRL ECAN FIFO Control Register
die FSAbits angepasst? (FIFO Start Area bits)?

Evtl ziegen die noch auf die vorherigen Buffer!

MfG,
Franz

Autor: Ruslan K. (idrisk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es eine Lösung für das Problem von oben, denn ich bin genau an der 
selben stelle angekommen und es geht net weiter!

Gruß

Autor: Ruslan K. (idrisk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

hab die Lösung schon selber gefunden!

die fkt. sendECAN am ende anpassen z.B.

  /* set the message for transmission */
  if(message->buffer == 0)
    C1TR01CONbits.TXREQ0=1;
  else if(message->buffer == 2)
    C1TR23CONbits.TXREQ2=1;

Autor: Salmolin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du das File CO_CANDRV.c angepasst , damit man dies auf einen 
dspic33 bringt!?
oder wie hast du das gelöst?

Gruss
salmolin

Autor: vorgon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls jemand braucht kann ich ne Lib posten die Auf AN1249 basiert und 8 
Sendebuffer sowie 16 Empfangsbuffer benutzt.

Autor: kopeika (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo vargon,

das wäre super, ich stehe momentan auch vor dem gleichen Problem

Grüße
kopeika

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.