www.mikrocontroller.net

Forum: Compiler & IDEs Logik-Problem


Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin!
Ich habe folgendes Problem:
Beim  MCP 2515 (CAN-Controller) gibt es zwei Register, in denen die
Adresse des Absenders steht.
Da die Adresse etwas komisch aufgeteilt ist, würde ich sie gerne für
Normalsterbliche lesbarer machen.
RXB0SIDL hat in den Bits <7:5> die Bits <2:0> der Adresse stehen.
Im RXB0SIDH stehen die Bits <10:3>.
Mein Code sieht wie folgt aus:
SIDL = read_MCP(RXB0SIDL);// unteres Adress-Byte einlesen SID<2:0>
SIDL = SIDL>>5;    // die obersten 3 Bit nach unten verschieben
SIDH = read_MCP(RXB0SIDH);// oberes Adress-Byte einlesen  SID<10:3>
i = SIDH<<3;
j = (i | SIDL);  // die unteren 5 Bit von SIDH mit modifiziertem SIDL
verodern
i = SIDH>>5;
SIDH = i;// SID modifizieren

Dass man das einfach machen kann, weiß ich.
Mit den unteren Bits von SIDL funktioniert das auch wunderbar, leider
werden die oberen Bits aber nicht übertragen.

Ich steh momentan etwas auf dem Schlauch. Es wäre schön, wenn mir
jemand einen Hinweis geben könnte, was ich falsch mache. An den Typen
liegt es nicht. Die sind alle gleich.

Vielen Dank!
Gruß
Rahul

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SIDL = read_MCP(RXB0SIDL);
SIDH = read_MCP(RXB0SIDH);

Adresse = ((SIDL >> 5) & 7) | (SIDH << 3);

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lösung gefunden:

SIDL = (( SIDL >> 5 ) | (SIDH <<3));
SIDH = (SIDH >>5);

Es war ein Problem der Schieberichtung...
Jetzt fehlt nur noch der Rückweg...

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Information in den Dateien mcp2510.zip und mcp2515.zip von
kvaser.com und die Beispiele von microchip.com ersparen das "Erfinden
neuer Raeder".

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider muß ich gewisse Räder neu erfinden, da die Leute (bis jetzt
einer), der die PC-Seite programmieren soll, nicht wirklich Ahnung hat,
was er überhaupt machen will/soll.
Das Semester ist fast vorbei, und er hat nur ein paar schöne Bilder in
VB gemalt...

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber genau die Routinen die notwendig sind, um die CAN-IDs fuer standard
oder extended Frames zwischen unsigned long und den MCP-Registern hin
und herzuschieben, gehoeren wahrscheinlich kaum zu den Dingen, die man
neu erfinden "muß". Was das mit der PC-Seite zu tun hat, versteh'
ich grad' nicht, aber auch egal. Whatever, sollte ja nur ein Tipp
sein, um Zeit zu sparen.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, warum soll ich in irgendwelchen Bibliotheken suchen, wenn mir die
Lösung selber einfallen kann (s.o.).
Das Protokoll für die PC-Seite muß so einfach wie möglich gehalten
werden. Deswegen passiert die Bit-Verschiebungkomplett im
Mikrocontroller...
Ich hatte vorhin einfach nur ein Brett vor dem Kopf...

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Deswegen passiert die Bit-Verschiebungkomplett im
>Mikrocontroller...

Hm?

Das muss sie doch so oder so...
So weit ich das in Erinnerung habe, sind in einem der Register noch die
Flags für Extd/Std-Frames enthalten usw.
Aber das hat doch überhaupt nichts mit der PC-Seite zu tun!?!?

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, man könnte die Register so wie sie sind an den PC weiterleiten
(CANSniffer), und die "Zerlegung" dort machen. Damit wäre die
PC-Programmierseite aber etwas überfordert...

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.