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);
dt * (c6+50) passt nicht in ein uint16_t. Am besten die Berechnungen auf uint32_t casten.
Das Zwischenergebnis von 3915*(6+50) ist 219240. Das passt nicht in einen uint16_t.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.