qwertz schrieb:
> uint8_t mm_data[4] = {0};
> uint8_t *mm_data_ptr;
>
> mm_data_ptr = mm_data;
> memcpy((void*)&mm_data, &vm, sizeof(float));
Da kopierst du ja schon die Bytes ins Array
> for(uint8_t i=0;i<4;i++)
> {
> msg.data[i] = *mm_data_ptr;
> mm_data_ptr++;
> }
wozu dann nochmal kopieren?
wozu eigentlich die extra Pointer Variable und das extra Array? Wenn in
msg sowieso schon ein Byte Array enthalten ist, warum lässt du memcpy
die Bytes nicht gleich dort hinein kopieren?
> Bekomme irgendwie nicht das richtige angezeigt beim printf() ....
Dann lass dir halt mal die Bytes ausgeben und sieh nach, ob die beim
Sender und beim Empfänger identisch sind.
Wenn sie es sind, dann verwenden die beiden Parteien wohl
unterschiedliche Floating Point Darstellungen. Muss nicht sein, kann
aber sein. Der Bytevergleich macht dich sicher. Denn dann weißt du
zumindest schon mal, dass auf der CAN Übertragung nichts passiert ist
und der Empfänger genau das zu sehen kriegt, was der Sender auch
weggeschickt hat.