Forum: Mikrocontroller und Digitale Elektronik XC167 - Can, Remote request bearbeiten vor dem versenden.


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von NurEinGast (Gast)


Lesenswert?

Hallo zusammen,

ich könnte Eure Unterstützung gebrauchen.
Mein Problem :

Ich arbeite mit dem CAN Bus auf einem XC167 Prozessor.
Can Senden, Can empfangen - alles gut.

Nun möchte ich aber RTR ( Remote Request ) Objekte, die von anderen Can 
Teilnehmern angefordert werden, erst bearbeiten bevor die Antwort 
verschickt wird. Sprich - ich möchte mitbekommen wenn ein RTR Request 
reinkommt, dann das Sendobjekt mit meinen Daten füllen, und dann erst 
die Antwort versenden.

Der Rx-Interrupt vom Sendeobjekt scheint erst zu kommen nachdem die 
Antwort bereits verschickt ist. Kann ich zwar nicht glauben, erscheint 
mir aber so.

Ich bin sicher, ich habe mich im Registerdickicht des Twincan 
Controllers verheddert und habe irgendwas übersehen.

Hat jemand mit XC167/Can Erfahrung eine Idee oder einen spezielle Trick 
wie ich das am besten einstelle ?

Danke für jede Idee.
NurEinGast

von foo (Gast)


Lesenswert?

Hmm, vielleicht:
If bitfield CPUUPD is set to ‘10’, an incoming remote frame with 
matching identifier is
kept in mind via setting TXRQ internally, but is not immediately 
answered by a
corresponding data frame. The message data, stored in register 
MSGDRn0/MSGDRn4,
can be updated as long as CPUUPD is hold on ‘10’. As soon as CPUUPD is 
reset to ‘01’,
the respective data frame is transmitted by the associated CAN node 
controller.


Und wenn nicht :-)
http://www.microcontrol-blog.net/2013/03/finger-weg-von-can-remote-frames/

von NurEinGast (Gast)


Lesenswert?

Das das ist doch schon mal eine geniale Antwort.
Danke. Werde ich probieren.

Wieso hab ich das nicht in den Datenblättern gefunden :-)

> Und wenn nicht :-)
> http://www.microcontrol-blog.net/2013/03/finger-we...

Ich würde fürchterlich gerne die Finger von Remote Frames weglassen.
Aber ich muss meinen CanOpen Slave an einen uralten CanOpen Master 
anpassen, der halt noch NodeGuarding macht.
Der CanOpen Slave läuft heute mit Heartbeat - alles ist gut.
Aber jetzt muss er halt mit einem alten Master sprechen können, an dem 
ich nichts ändern kann.

Danke für den Hinweis

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]
  • [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.