Forum: Mikrocontroller und Digitale Elektronik Verzweiflung pur., weiss keinen besseren Titel


von Gerhard (Gast)


Lesenswert?

folgendes programmstück treibt micht zur verzweiflung!

uint16_t UT1;
uint16_t dT;
uint16_t TEMP;
char UT1_str[10];
char dt_str[10];
char TEMP_str[10];

UT1=8*c5+20224;
dT=d2-UT1;
TEMP=200+dT*(c6+50)/1024;

ich erhalte UT1=25912, dT=3915 und TEMP=222. (konstanten: c5=711 und 
c6=6)
also UT1 und dT stimmen ja noch aber TEMP...., was ist das wohl los?
ach ja gebe das ganze auf einem LCD display aus, wo vielleciht auch der 
Haken liegen könnte?

utoa(UT1,UT1_str,10);
utoa(dT,dT_str,10);
utoa(TEMP,TEMP_str,10);
set_cursor(0,1);
lcd_string(UT1_str);
set_cursor(7,1);
lcd_string(dT_str);
set_cursor(0,2);
lcd_string(TEMP_str);

von Marvin M. (Gast)


Lesenswert?

dt * (c6+50) passt nicht in ein uint16_t.
Am besten die Berechnungen auf uint32_t casten.

von Uwe .. (uwegw)


Lesenswert?

Das Zwischenergebnis von 3915*(6+50) ist 219240. Das passt nicht in 
einen uint16_t.

von Marvin M. (Gast)


Lesenswert?

Ich war schneller ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.