mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik float's in den Flash


Autor: Maike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
float Wert;
uint8_t* pSpeicher;
pSpeicher = (uint8_t *) &Wert;

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

(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:
float Wert;
uint8_t* pSpeicher;
pSpeicher = (uint8_t *) &Wert;

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

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

Autor: Maike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Maike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

eine Frage hab ich doch noch dazu. Wie bekomme ich den ausgelesenen 
Speicherwert, wieder in float umgewandelt?

Danke, Maike

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wie bekomme ich den ausgelesenen Speicherwert, wieder in float >umgewandelt?

Brauchst du doch gar nicht. Die sind duchr die Auslese-Prozedur schon 
gewandelt.

Autor: Maike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>pSpeicher = (uint8_t *) &Wert;
pSpeicher ist aber auch gleichzeitig die Adresse der Float-Variablen.

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>oder hab ich da ein Brett vorm Kopf?

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

Autor: Maike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Rahul,

ja, so gehts.

Die Türen sind hier so breit da merkt man das manchmal garnicht.

Grüsse, Maike

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.