Danke Karl Heinz, das hat mir sehr weitergeholfen.
Soweit funktioniert auch alles, bis auf die Ausgabe negativer Zahlen!
Mit ergebnis = (ADC-200)/4; berechne ich die Temperatur. Bei +
Temperaturen funktioniert auch alles. Bei - Temperaturen erhalte ich als
Anzeige z.B. 16376.
Wenn ich die Division weglasse, werden auch die negativen (in dem Fall
um das 4-fache zuviel) Temperaturen angezeigt?
Wo ist der Wurm?
Hier der Code:
1 | while (1)
|
2 | {
|
3 | ADCSRA |= (1<<ADSC); // Start ADC-Wandlung
|
4 | while (ADCSRA & (1<<ADSC)); // auf Abschluss der Konvertierung warten
|
5 |
|
6 | ergebnis = (ADC-200)/4; // Anpassung an die Temperaturkennlinie (y=kx+d)
|
7 |
|
8 | char Buffer[20];
|
9 | itoa(ergebnis,Buffer,10);
|
10 |
|
11 | sekunde(1);
|
12 | lcd_send(BEFEHL, LCD_CLEAR);
|
13 | lcd_write("***Temperatur***");
|
14 |
|
15 | lcd_send(BEFEHL, LCD_SETDDRAM +0x40); // Cursor auf 1.Position Zeile 2
|
16 |
|
17 | lcd_write(Buffer);
|
18 | lcd_write(" C");
|
19 | }
|