float's in den Flash

Gast #499732
Hallo miteinader,

das ist jetzt bestimmt für euch ganz einfach, aber ich weiss nicht wie.
Also ich habe zwei Funktioen SetWordFlash und GetWordFlash, damit kann 
ich word Variablen in den Speicher schreiben. Aber wie muss ich das 
machen wenn ich Kommazahlen in den Speicher schreiben will? Kann man die 
irgend wie umwandeln und dann wieder zurückwandeln? Ich programmiere in 
C mit dem Codewarrior.

Danke, Maike
Persönliche Seite #499741
Jedes im Speicher vorhandene Objekt, sei es eine Variable vom Typ 
uint8_t, int32_t, float oder auch ein String, ist letztlich nur eine 
Folge von einem oder mehreren Bytes im Speicher. Und als genau diese 
kann so ein Objekt auch ins Flash geschrieben werden.


Das kann dann in etwa so aussehen:
1
float Wert;
2
uint8_t* pSpeicher;
3
pSpeicher = (uint8_t *) &Wert;
4

5
for (i = 0; i < sizeof (float); i++)
6
{
7
  write_byte_to_flash(pSpeicher[i], StartadresseImFlash + i);
8
}

(Hier mal angenommen, daß die Flash-Beschreibe-Funktion als ersten 
Parameter das zu schreibende Byte und als zweiten Parameter die Adresse, 
an die dieses Byte geschrieben werden soll, erwartet)

Und umgekehrt siehts ganz genauso aus:
1
float Wert;
2
uint8_t* pSpeicher;
3
pSpeicher = (uint8_t *) &Wert;
4

5
for (i = 0; i < sizeof (float); i++)
6
{
7
  pSpeicher[i] = read_byte_from_flash(StartadresseImFlash + i);
8
}

(hier mal angenommen, daß die Flash-Lese-Funktion als Parameter die zu 
lesende Adresse übergeben bekommt und als Ergebnis das gelesene Byte 
liefert)
Gast #499748
Hallo Rufus,

Wow, das ist ja wie aus einem Lehrbuch. Danke für die Mühe. Jetzt hab 
ich das auch verstanden und funktionieren tut es auch. Dankeschön.

Grüsse, Maike
Gast #499782
>Wie bekomme ich den ausgelesenen Speicherwert, wieder in float >umgewandelt?

Brauchst du doch gar nicht. Die sind duchr die Auslese-Prozedur schon 
gewandelt.
Gast #499785
Hallo Rahul,

Durch die Auslese Prozedur steht ab der Startadresse von pSpeicher die 
Float Zahl z.B als abcd 1234 0000 0001.
Jetzt möchte ich aber gerne das ganze wieder als float Variable. Dazu 
muss ich doch erst noch was machen, oder hab ich da ein Brett vorm Kopf?

Danke, Maike
Gast #499789
>oder hab ich da ein Brett vorm Kopf?

Wenn du quer durch Türöffnungen gehen musst, solltest du überlegen, 
einen Tischler aufzusuchen...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.