SID5 fehlt mit Renesas CAN API

Gast #1296617
Ich verwende die Renesas CAN API um zwischen zwei M16C Controllern CAN 
zu benutzen.

Mir ist aufgefallen, dass Bit 5 der SID (CAN-ID) immer 0 bleibt. Wenn 
ich also eine SID 111 1111 1111 schicke, kommt 111 1110 1111 an.

Ich weiß es klingt verrückt, aber es ist tatsächlich so!

In den Sourcen der Renesas CAN API werden die ID-Register der slots so 
gesetzt:

c1slot[slot_nr].ba.sidh = ((in_trm_data_p->id)>>6) & 0x1f;  // SID10-6
c1slot[slot_nr].ba.sidl = (in_trm_data_p->id) & 0x3f;       // SID5-0

und so gelesen:

in_rec_data_p->id = ((unsigned short)c0slot[slot_nr].ba.sidh<<6) + 
c0slot[slot_nr].ba.sidl;

Sieht irgendwie korrekt aus und ich weiß mir nicht mehr anders zu 
helfen, als Bit 5 nicht mehr zu verwenden. Das sollte aber nicht die 
Lösung sein. Kennt jemand das Problem im Zusammenhang mit der Renesas 
CAN-API für M16C ?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.