www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CAN-Nachrichten auswerten


Autor: Toby Meier (toby_sx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich würde gerne möglichst effizient CAN Nachrichten auswerten. Diese 
bestehen immer aus 1..8 zusammenhängenden Bytes. Beispielsweise kann ein 
Signal bei bit 2 starten und 10bit lang sein. Ich wollte nun 
schrittweise immer zwei Byte (damit maximal 16Bit breite Worte) mit 
einem Short-Zeiger auswählen und dann mit entsprechender Maskierung 
verUNDen. Leider lässte der kompiler die conversion von char* zu short 
int* nicht zu.

Folgendes wollte ich also tun:

short * block;
char msg[]="ABCDEFG";

/*lenght soll die länge meine wortes in bit angeben, starbit ist 
selbsterklärend*/

block = &msg; // also damit sollte der short auf das untere Byte zeigen
block = block & ((short)(pow(2,length) << startbit));

nun sollte eigentlich meine nachrichtig fertig maskiert in block stehen, 
sodass ich diese nur wieder um startbit in die gegenrichtung shiften 
müsste.

gibt es vielleicht eine elegantere lösung, um aus einem 2er Byteblock 
einen beliebig langen (max16) bitblock zu lesen?

grüße und danke für ideen,
toby

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schonmal die Überschrift dieses Unterforums gelesen:

Wenn ihr eigene Programme oder Anleitungen geschrieben habt könnt ihr 
sie hier posten. Fragen werden gelöscht!


Peter

Autor: Toby Meier (toby_sx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
alles klar, locker bleiben. die andere rubrik ist ja auch nicht 
eineindeutig!

gruß,
toby

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.