MPX4115A Programmierfehler gesucht!

OP #2925774
Hallo,

ich habe den MPX4115A an meinen ATMega16 angeschlossen und bekomme die 
Werte siehe Foto.

Ich verstehe allerdings nicht wieso der "tenBitValue"-Wert richtig ist 
die Umrechnung allerdings nicht.
Rein rechnerisch müsste eigentlich 1013hPa rauskommen, was vom Wert her 
wohl passen sollte. Aber trotz meiner Multiplikation von 10 um von kPa 
zu hPa zu gelangen kommt nur der Wert 105 raus.

An der Auflösung von 10bit kann es ja eigentlich nicht liegen, da der 
Wert von 836 richtig zu sein scheint.

Ich muss wohl irgendwie bei den Datentypen einen Fehler begangen haben. 
Leider kenne ich mich was das betrifft noch nicht sehr gut aus.

Ausschnitte aus der main.c:

float phPa;
char phPa_char[4];
char tenBitValue_char[4];

uint8_t theLow = ADCL; //Need to read ADCL before ADCH

uint16_t tenBitValue = ADCH << 8 | theLow;


  //convert tenBitValue from adc to hPa-Value
phPa = ((tenBitValue/1023+0.095)/0.009)*10; //in hPa

  //Convert the ADC conversion result to a string
itoa(phPa, phPa_char, 10);

  //Value between 0-1023
itoa(tenBitValue, tenBitValue_char, 10);
Angehängte Dateien:
OP
@wind: Super! So funktioniert es! Kannst du mir auch noch erklären was 
es damit auf sich hat, warum benötige ich ".0", bzw was ändert diese 
Schreibweise?

@Thor368 oh entschuldige! Jetzt sehe ich erst diese option!
Kommt nicht nocheinmal vor :)
1
Test
Gast
Bisher war das eine Integer Division.
Mit 1023,0 wird daraus ein Integer / Float Division.
Das Ergebnis ist damit auch Float. Und das willst Du ja in diesem Fall

Grüße
OP
Achso selbst wenn die Variable "phPa" oben als float deklariert ist, 
benötigt jede einzelne Operation eine "Transformation" in den richtigen 
Datentyp.

Folgende Variante wäre dementsprechend funktionsfähig aber ich vermute 
viel zu "Speicherplatz" raubend?
1
float phPa;
2

3
float tenBitValue_float = tenBitValue;
4
float Resolution = 1023;
5

6
phPa = ((tenBitValue_float/Resolution+0.095)/0.009)*10;

Vielen Dank!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 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.