CAN BUS XC167 ARbitration Register

Gast #5155570
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
#5155673
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.
Gast #5155850
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren