mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zustände aus CAN Message extrahieren


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen Gemeinde!
Ich bräuchte einmal eure Hilfe im Bezug auf das Handling einer CAN 
Message.
Folgendes ist gegeben!
Ich bekomme über den CAN Bus eine Nachricht in welcher Zustände von 
Tasten übertragen werden. Jeweils ein Byte überträgt zwei Tasten, sprich 
ich könnte max. 16 Tasten auswerten. Für eine Taste wird jeweils ein 
nibble genutzt d.h.
wenn eine Nachricht zum Beispiel 0x11 enthält sind Taste 1 und 2 high. 
Oder anders 0x10 dann Taste 1 low Taste 2 high.
Wie kann ich jetzt am einfachsten in meiner Applikation einer Variable 
den Zustand high bzw. low zuweisen.

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meinst du sowas in der Art:

VariableTaste1 = 0x11 & 0xF
VariableTaste2 = (0x11 >> 8) & 0xF

Oder geht es dir eher um das handling der CAN message?

Christian

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also das CAN Handling mit Nachrichten abhohlen zwischenspeichern und so 
weiter klappt eigentlich. Habe auch kein Problem z.B. Variablen zu 
verarbeiten die über den Bus kommen, aber gerade habe ich wohl ein Brett 
vorm Kopf.
Also die Sache die du aufgeführt hast geht schon in die Richtung in der 
ich Suche!

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klappt es denn, dass du einzelne Bytes in der Botschaft ausliest und 
darauf zugreifst bzw sie einer Variablen zuweist, oder hast du bisher 
nur immer die gesamten Daten (max 8Byte) ausgelesen?

übrigens:
> Jeweils ein Byte überträgt zwei Tasten,

Warum das denn überhaupt? Hast du einfluss darauf? Ist ja nicht gerade 
sparsam....

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also auf die Übertragung habe ich keinen Einfluss. Eine Message kann ja 
8 Byte Übertragen. Natürlich könnte man das auch auf bit ebene machen 
aber das ist nicht notwendig weil die Buslast relativ gering ist mit 
knapp 10%.
Eigentlich brauche ich nur die Info wie ich die nibble einzel 
extrahieren kann.

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Byte1 = (Message >> 24) & 0xFF;
Byte2 = (Message >> 16) & 0xFF;
Byte3 = (Message >>  8) & 0xFF;
Byte4 =  Message & 0xFF;

So wie ich dich verstanden habe sind die Stati immer in Bit 0 und Bit 4 
eines Bytes enthalten. ( also wenn beide Tasten gedrückt sind --> 0001 
0001)

Die einzelnen Bits kriegst du dann wie folgt raus (hab mich beim letzten 
Post vertippt):

VariableTaste1 = ByteX & 0x1;
VariableTaste2 = (ByteX >> 4) & 0x1;

So funktioniert das dann für alle Statusvariablen für die einzelnen 
Taster. Du musst nur wissen welches Bit genau für welchen Taster steht.

Christian

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.