Hallo. Ich habe ein kleines Problem und zwar: Ich möchte eine Variable vom Typ Float in 4 Bytes zerlegen, im I2C EEPROM ablegen,auslesen und am Display anzeigen. Das Problem ist nicht das Senden und Empfangen,sondern das Umwandeln der float variable in die 4 Bytes bzw. umgekehrt. Lg Toni.
Hi Toni! Ich weiss nicht ob es gerade die einfachste und schönste Lösung ist, aber Du könntest das Konvertieren zum Beispiel so machen: // float in 4 bytes zerlegen float x = 3.141596; unsigned char * float_pointer = (unsigned char*)&x; unsigned char b[4]; b[0] = *float_pointer++; b[1] = *float_pointer++; b[2] = *float_pointer++; b[3] = *float_pointer++; // und die 4 bytes wieder zu einem float zusammensetzen float y; float_pointer = (unsigned char*)&y; *float_pointer++ = b[0]; *float_pointer++ = b[1]; *float_pointer++ = b[2]; *float_pointer++ = b[3]; // zur Kontrolle ausgeben printf("%e %e\n", x, y); Dabei wird einfach über einen Zeiger auf den Speicherplatz des Floats zugegriffen und die Werte der 4 Bytes der Reihe nach ausgelesen und in das Array b gespeichert. Das Rückschreiben funktioniert genauso, nur sind die Zuweisungen andersherum... MfG Daniel Jelkmann
Hi nochmal, das printf(); hatte ich übrigens nur zur Kontrolle reingesetzt, um zu verifizieren, dass der Code auch macht was er soll... Das printf() gibt Text auf der Standardausgabe aus, beim AVR wird das mit dem printf() daher wohl schwierig ;) einfach wegdenken die Zeile... MfG Daniel Jelkmann
Hi Daniel. Danke für deine rasche Hilfe. Habe soeben deinen Teil ausprobiert. Funktioniert. Lg Toni.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.