Forum: Mikrocontroller und Digitale Elektronik PIC18F258 float Zahlen über CAN ausgeben


von Jörg B. (joerg0046)


Lesenswert?

Hallo

ich mache mit dem PIC eine PWM Messung. Das Ergebnis gebe ich als float 
Zahl (45.63) über die RS232 Schnittstelle aus. Gleichzeitig wird auch 
noch Frequenz, High_Cycle und Low_Cycle-Time ausgegeben. Funktioniert 
auch wunderbar. Allerdings brauch ich das auch auf CAN.
Für die CAN Ausgabe kann ich einen 8Byte großen Buffer befüllen. Dieser 
akzeptiert aber kein FLOAT.
D.h. ich möchte einen Floatzahl (345,937ms)in 4 einzelne Bytes zerlegen 
in buffer[0]...buffer[3] schreiben und über die CAN-Schnittstelle 
ausgeben. Zum einlesen habe ich eine Datenbasis, die die 4 Bytes als 
Float interpretieren kann.
Aber wie wandel ich die Floatzahl in int um, bzw. wie kann ich float 
(Komma)zahlen über CAN ausgeben?

Hat da jemand ein Bsp oder eine Funktion oder eine Idee?


Danke

von H.Joachim S. (crazyhorse)


Lesenswert?

union test {
            unsigned char data_byte[4];
            float  data_float;
            } convert;


convert.float_data=1.23;
can_buffer[0]=convert.data_byte[0];
can_buffer[1]=convert.data_byte[1];
can_buffer[2]=convert.data_byte[2];
can_buffer[3]=convert.data_byte[3];

LSB/MSB first musst du selbst rausfinden,

von Martin (Gast)


Lesenswert?

Oder mit einem Char-Pointer die Daten verschieben.

von joerg0046 (Gast)


Lesenswert?

HI

danke werd ich gleich mal ausprobieren.

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.