www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zwei 8b zu einer 16Bit Zahl zusammensetzen


Autor: Sven Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich bekomme von einem I2C AD Wandler zwei 8 Bit worte zurück. wie packe
ich die jetzt in eine Int Zahl? Ich will ja meine Spannung berechnen
und laut Datenblatt ist der min Code -32,768. das verstehe ich so dass
das 0V entspricht und 32,767 der Referenzspannung.

Ich habe es mit zahl = (upper<<8) | lower; probiert, aber irgendwie
kommt das nicht hin..

Was mache ich falsch?

Danke schonmal.

Autor: leo9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
als welcher type sind zahl, upper und lower definiert.
Wenn upper nur ein 8-Bit Typ ist kommt beim shift immer 0 heraus.

grüsse leo9

Autor: Dieter B (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

volatile   unsigned char  wert_1;
volatile   unsigned char  wert_2;
volatile   unsigned int   wert;

           wert_1 = 0x34;
           wert_2 = 0x23;

           wert = ( wert_1 << 8) + wert_2;  //wert = 0x3423

Das volatile nur zum Test.

MFG
Dieter

Autor: Sven Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Upper und lower sind als unsigned int definiert..

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achte mal auf Dieters Posting!
Der Fehler wird bei Dir wohl im ODER liegen, da muss nämlich eine
addition erfolgen!

Gruß,
Patrick...

Autor: Khani (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Old Bug
"Plus" oder "Oder" oder "exclusiv Oder" ist hier egal. Die
unteren acht bit solltren eh leer sein, daher ist hier ein ODER schon
angebracht.
@Dieter
Wenn das geht ist das Compiler-Zufall. Nicht jeder Compiler behandelt
unsigned char als 16bit-Werte.

besser so :
unsigned wert = ((unsigned int)MSB_byte << 8)|(unsigned int)LSB_Byte;

MfG, Khani

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.