Hallo, ich sollte auf einem 8051, in C programmiert, Floatvariablen aus dem Ram (Xdata) über einen I2C-Bus in ein EEPROM schreiben und auch wieder auslesen. Die Kommunikation mit dem EEPROM selbst funktioniert, nur habe ich das Problem, die Floatvariable in einzelne Bytes zu zerlegen bzw. aus den einzelnen Bytes aus dem EEPROM wieder die gewünchte Variable im Ram zusammen zu bauen. Gruss Gregor
also ich würd in vc++ sowas machen.... float *fTmp=new float; char *cTmp=(char *)fTmp; *fTmp=<float-wert>; for (int i=0;i<sizeof(float);i++) { I2C_Write(cTmp[i]); } so in die richtung sollte das hinhaun... einfach einen float-pointer in einen char-pointer umcasten und dann die bytes durchgehn (ich hoff mal es gibt ein sizeof bei dir...sonnst im manual nachschaun wie viele byte der float hat) 73 HG
Also so bekomme ich das nicht zum laufen. Mein Compiler versteht erstens nur reines ANSI-C und zum zweiten sind meine C-Kenntnisse in bezug auf Pointer recht dürftig. Vielleicht hat ja jemand einen fertigen C-Code ?? Gregor
Das ist doch ANSI-C. Aber mit "so bekomme ich das nicht zum laufen" kann keiner was anfangen. Du must Dir schon die Fehlermeldung des Compilers anschauen und im C-Manual nachsehen, was sie bedeutet. Ohne genügend C-Kenntnisse wirst aber nicht weiterkommen bzw. wirst Du nicht in der Lage sein, auch ein fix und fertiges Beispiel in Deinen Code mit einzubinden. Peter
Hallo zusammen, also, ich habe jetzt eine lauffähige Lösung. @Peter: Wenn ich den obigen code compiliert habe, habe ich über 20 Warnungen und Fehler vom Compiler bekommen und wenig Lust verspürt, die alle einzeln zu beheben. Nachdem ich mich jetzt eine Weile mit den Pointern beschäftigt habe, läuft das ganze. Trotzdem vielen Dank. Gregor
Hallo Gregor, für solche Zwecke legt man doch am Besten ein union an: ... union { float f; char c[4]; } u; ... ... u.f = 'float-value'; for ( i = 0; i < 4; i++ ) I2C_Write(u.c[i]); ... Gruß, Olaf
@Gregor, durch die Anzahl der Fehler darf man sich nicht entmutigen lassen. Es kann durchaus sein, daß ein einziger Fehler über 1000 Folgefehler verursacht. Deshalb kann man bei den meisten Compilern einstellen, nach wieviel Fehlern sie abbrechen. Am sinnvollsten ist es daher, nur den ersten Fehler zu beheben und dann neu zu compilieren. Peter
Das da oben ist kein C, sieht wohl eher nach C++ aus. Wenn man die Variablendeklaration repariert sollte es aber funktionieren.
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.