Forum: Mikrocontroller und Digitale Elektronik CAN BUS XC167 ARbitration Register


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 Alex (Gast)


Lesenswert?

Liebe Freunde
Ich beschäftigte mich momentan zum ersten mal mit dem CAN an einem XC167 
von Infinion und habe nun da erste Problem, was ich leider nicht allein 
verstehen kann, deswegen bin auf eure Unterstützung angewiesen.
Im Folgenden Code versuche ich die Arbitration Register zu verstehen. So 
wie ich das verstehe besteht dieser Register aus 12 Bit ( 11 Bit ID+ 1 
BIT RTR)??
Wenn Die ID 0X305 ist und RTR 0 habe ich gedacht dass, CAN_MSGARH1=60A, 
dies ist leider falsch,  Richtig wäre wie im Programm CAN_MSGARH1    = 
0x0C14 wieso???
Ich freue mich auf euere Unterstützung

/// 
-----------------------------------------------------------------------
  ///  Configuration of Message Object 1:  Kennzeichnung der Empfangs 
Nachricht mit Identifier 773
  /// 
-----------------------------------------------------------------------
  ///  - message object 1 is valid
  CAN_MSGCTRL1   =  0x5595;      // load message control register low, 
Message Object Daten gültig
  CAN_MSGCTRH1   =  0x0000;      // load message control register High 
-> Zähler für Messageobject

  ///  - message object is used as EMPFANGS object
  ///  - standard 11-bit identifier
  ///  - 8 valid data bytes
  ///  - this message object works with CAN node A
  ///  - remote monitoring is disabled
  CAN_MSGCFGL1   =  0x0080;      // load message configuration register 
low
  CAN_MSGCFGH1   =  0x0000;      // load message configuration register 
high, keine Interrupt Node wird gesetzt

  ///  - acceptance mask 11-bit: 0x7FF
  CAN_MSGAMRL1   =  0xFFFF;      // load acceptance mask register low, 
-> alle ankommenden Nachrichten werden bearbeitet
  CAN_MSGAMRH1   =  0xFFFF;      // load acceptance mask register high, 
-> alle ankommenden Nachrichten werden bearbeitet

  ///  - identifier 11-bit:      0x305 = 773
  CAN_MSGARL1    =  0x0000;      // load arbitration register low
  CAN_MSGARH1    =  0x0C14;      // load arbitration register high 
11bit Bit 28-18

von Alex (Gast)


Lesenswert?

hat keiner von euch  eine Idee :-(

von Thomas O. (kosmos)


Lesenswert?

wozu benötigt man das? Wenn eine Nachricht die Arbitrierung verliert, 
wird sie doch nochmals gesendet. Ich könnte mir nur vorstellen das hier 
mitgezählt wird wie oft die Nachricht die Arbitrierung verloren hat um 
sie dann evtl. zu löschen da inzwischen die Werte nicht mehr aktuell 
sind und man neue auf den Weg schicken will.

von B. J. (bjue)


Lesenswert?

Im Register CAN_MSGARH1 stehen die Bits 28..16. Bei 11 Bit Identifiern 
werden laut Handbuch XC167 nur die Bits 28..18 benutzt. Also den 
Identifier 0x305 mal zwei Bits nach links schieben und schon wird 0xC14 
daraus :-)

von Alex (Gast)


Lesenswert?

B. J. schrieb:
> Im Register CAN_MSGARH1 stehen die Bits 28..16. Bei 11 Bit
> Identifiern
> werden laut Handbuch XC167 nur die Bits 28..18 benutzt. Also den
> Identifier 0x305 mal zwei Bits nach links schieben und schon wird 0xC14
> daraus :-)

Perfekt nun ist der Denkknoten gelöst, dafür bin ich dir sehr dankbar
Gruß
Alex

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.