mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Float-Zahlenbereich --> 8bit Hexzahl


Autor: Brillitsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe ein riesen Problem.
Ein Zahlenbereich von -3,0 bis +3,0 soll in 255 Schritten als Hexwert
umgewandelt werden.
Also -3,0 entspricht 0x00 = 0d
      0,0 entspricht 0x7F = 127d
     +3,0 entspricht 0xFF = 255d

Bei einer Spanne von 6,0 erreiche ich bei Division durch 255 eine
Schrittweite von 0,0235...
Naiverweise habe ich an eine Tabelle gedacht. Aber das währe doch eine
zu plumpe Lösung , oder?

Was sagen die mathematischen Genies in diesem Forum dazu?

Es soll zwar in C programmiert werden, mich interessiert aber vorerst
das Prinzip zu einer Mathematischen Lösung.


Schönen Gruß    Brillitsch

Autor: bratsand (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(wert+3)/255 muesste hinhauen. und wenn du es nicht immer berechnen
willst, dann nimm ne tabelle.

Autor: sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein nein

float wert;
char neuerwert

wert += 3;
wert *= 42.5;
wert /= 255;
neuerwert = (char)wert;

Autor: Schmidle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich würde sagen mathematisch ist das
f(x) = 127 + 42.33 * x

Gruß
Schmidle

Autor: sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
halt
hab au n fehler :-P
ohne die zeile
wert /= 255;!!!!!!!!

zum prinzip:

0-6 soll 0-255 entsprechen

255/6 = 42.5

daher bsp: wert = 0 (127 soll ergebnis sein)

wert += 3;   // wert = 3

wert *= 42.5;  //wert = 127.5

neuerwert = (char)wert //neuerwert = 127


also:

float wert;
char neuerwert

wert += 3;
wert *= 42.5;
neuerwert = (char)wert;

Autor: Brillitsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, vielen Dank, für Eure Hilfe,

ich habe das Verfahren von User Schmidle gewählt. Funktioniert
ohne Probleme.

Schönen Gruß   Brillitsch

Autor: Hanes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin kein grosser Fan von so gebrochenen Zahlen.

Ich würde pro Bit mit 0.025 rechnen. bei 240 Schritten kannst du den
Breich von +3V bis -3V ausnutzen und hast noch reserve für Übersteuern
des Wertebereichs.

Autor: Hanes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
0.025V meinte ich. Die Edit-Funktion fehlt eindeutig.

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.