Forum: Mikrocontroller und Digitale Elektronik CAN Botschaft erstellen


von M. H. (maiggl)


Lesenswert?

Hallo zusammen,

vielleicht stelle ich mich echt nur blöd an, aber ich weiß nicht weiter.

Ich will eine Drehzahl, die in einer uint16_t Variablen gespeichert ist 
in eine CAN-Nachricht verpacken und senden.
Bsp: Die Drehzahl sei 1470 rpm, was hexadezimal 0x5BE entspricht.

Jetzt weiß ich nicht, wie ich es funktioniert, dass ich zunächst mal den 
HEXwert bekomme.
Die nächste Schwierigkeit ist, dass BE im ersten Byte und 05 im zweiten 
Byte stehen soll.

Grüße

1
message.id = 0x631; //formatted in HEX
2
message.header.rtr = 0;
3
message.header.length = 2; //formatted in DEC
4
        
5
message.data[0] = 0xBE;
6
message.data[1] = 0x05;

von M. H. (maiggl)


Lesenswert?

ich habe eine Lösung gefunden:

[c]

         message.data[0] = drehzahl;
         message.data[1] = (drehzahl>>8);
[c/]

von PaSi (Gast)


Lesenswert?

Moin,

um was für einen Controller geht es denn überhaupt?

Gruß

von A. (Gast)


Lesenswert?

42!

von Rolf M. (rmagnus)


Lesenswert?

Michael H. schrieb:
> Ich will eine Drehzahl, die in einer uint16_t Variablen gespeichert ist
> in eine CAN-Nachricht verpacken und senden.
> Bsp: Die Drehzahl sei 1470 rpm, was hexadezimal 0x5BE entspricht.
>
> Jetzt weiß ich nicht, wie ich es funktioniert, dass ich zunächst mal den
> HEXwert bekomme.

Der Wert ist einfach nur eine Zahl. Hex ist eine Darstellungsform.

> Die nächste Schwierigkeit ist, dass BE im ersten Byte und 05 im zweiten
> Byte stehen soll.

Siehe Bitmanipulation.

> message.id = 0x631; //formatted in HEX

"formatted in HEX" ist das nur im Quellcode. Dem Prozessor ist völlig 
wurscht, ob du das dort in dezimal oder in hexadezimal angegeben hast.

von Thomas (kosmos)


Lesenswert?

übertrage doch einfach die beiden Bytes 00000101 10111110, einfach dem 
CAN Controller die Byteanzahl mitteilen.

Denke die Drehzahl liegt eh irgendwo als 16 bit Wert vor.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.