mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik XC164CM_CAN-Remoteframe in SW beantworten


Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich beschäftige mich mit dem TwinCAN auf dem XC164CM.
Ich benutze 5 Message Objekte und Knoten A und B im LoopBackMode.
Ich kann Datenframes zwischen den Konten senden und empfangen.
Ebenso ein Remoteframe, der mit einem Message Objekt direkt in HW (ohne 
Interrupt) beantwortet wird.

Nun möchte ich mehrere Remoteframes unter SW (mit RX-und TX-Interrupt) 
von EINEM Message Objekt beantworten (um nicht so viele Message Objekte 
dafür zu verschwenden).
Das automatische Aussenden durch die HW soll duch das Setzen von 
'CPUUPD' verhindert werden, gemäss Datenblatt.
Das Transmit-Message-Objekt (Empfänger für den Remoteframe) ist nach 
Reset mit Daten 'vorbelegt'. Im RX-Interrupt werden 'andere' Daten in 
das Transmit-Message-Objekt geladen und durch löschen von CPUUPD 
gesendet. Im TX-Interrupt, also wenn das Datenframe ausgesendet wurde, 
wird CPUUPD wieder gesetzt.

Problem:
Ein Remoteframe wird empfangen. Der RX-Interrupt wird ausgelöst. Aber 
obwohl CPUUPD definitiv gesetzt ist(ich lasse es mir im INT ausgeben), 
empfängt der andere Knoten das Datenframe mit den 'vorbelegten' Daten. 
Ein zweiter Remoteframe bewirkt ein Datenfarme mit den 'anderen' Daten. 
Ein TX-Interrupt wird definitiv ausgelöst=>eine Datenframeaussendung hat 
also stattgefunden.

Wenn die 'anderen' Daten im Interrupt nicht geladen werden (Code 
auskommentiert) und das Datenframe nicht ausgesendet wird, gleiches 
Ergebnis, mit dem Unterschied, dass bei zweimaligen Remoteframe zweimal 
die 'vorbelegten' Daten im anderen Knoten empfangen werden. Ein 
TX-Interrupt wird zweimal sicher erzeugt.

Frage:
Warum wird ein Datenframe ausgesendet, obwohl CPUUPD gesetzt ist? Was 
habe ich falsch gemacht?
Wie sind die Erfahrungen mit dem Aussenden von Datenframes per 
SW-Unterstützung bei Remoteframes?

Gruss
Gerd

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe nichts falsch gemacht.
Im errata für XC164CM bei infineaon gibts ein workaround.
Gruss
Gerd

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.