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


von Gerd (Gast)


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

von Gerd (Gast)


Lesenswert?

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

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.