mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hex oder Bin?


Autor: Flak (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin!
Ich durchstöbere gerade das DB vom DS1721 (Temperatursensor von
Dallas).

Wie wird denn nun die gemessene Temperatur ausgegeben? Hex, oder bin?

Ich muß ja den eingehenden Wert (2er Komplement mit MSB first)
umwandeln. Das fällt ja bei Hex leichter , da ich in diesem Fall (in C)
einfach nach float oder double konvertieren und durch 256 teilen muß.

Oder habe ich da etwas nihct verstanden?!?!

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was willst du da noch konvertieren? - Die Daten kommen doch schon als
signed Integer (Zweierkomplement, 16 Bit).

...

Autor: Flak (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Öhh, ich will doch wissen wie hoch die Temp ist. Also ins Dezimalsystem
konvertieren.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und? Wo liegt das Problem?

Meinst Du, daß es einen reellen Unterschied zwischen folgenden
C-Anweisungen gibt?

  int a;

  a = 0x40;
  a = 64;

Also. Der Wandler liefert eine Zahl, fertig.

Wenn Du diese in einer auch für Dich verständlichen Form anzeigen
willst, musst Du nur bei der Textausgabe entsprechend vorgehen.

Ganz simpel, wenn auch etwas Codeintensiv:

  printf("%d", Zahl);

Alternativ könntest Du Dir auch mal ansehen, was die Funktion itoa so
alles macht.

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Sensoren gibt es mit unterschiedlicher Auflösung, meist ist es 0,5°C
pro Zahlenwert. Du brauchst daher eine Skalierung auf die Auflösung. Das
hat aber nix mit HEX zu tun. Zur Anzeige brauchst du dann noch die
Umwandlung in ASCII (ITOA). Inwieweit die ASCII-Umwandlung bzw. Ausgabe
in der Lage ist, vor der letzten Stelle ein Dezimalkomma auszugeben,
kann ich nicht beurteilen, ich kann kein C. In ASM geht das (bei 0,5°C
pro Einheit), indem man den Wert durch 2 teilt (asr h und ror l) und
anhand des Carrys die Nachkommastelle (0 oder 5) definiert.

Schau dir doch mal in der Codesammlung die Beiträge von Peter Dannegger
zum Thema 1820 an, ich glaube mich zu erinnern, dass da auch was in C
dabei war. Kann aber auch sein, dass das auf seiner HP war.

...

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Rufus...

Da war ich Legasteniker wohl wieder zu langsam... ;-D

...

Autor: Flak (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm, okay: wenn das nur ein darstellungs"problemchen" ist...
wahrscheinlich sehe ich probleme, wo gar keine sind.
trotzdem besten dank

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.