Hallo

ich habe ein kleines Problem mit dem AD- Wandler meines Atmega32. Ich verwende die interne Referenzspannung dem Atmega (2,56V). Nun habe ich an den PortA.0 mein Netzgerät bzw. auch Batterien angehängt. Masse des Netzgerätes bzw. Masse des Akkus hab ich auch mit Masse meines Experimentierboards verbunden. Mein Problem ist nun, dass bei etwas höheren Spannungen die Messungenauigkeit sehr hoch ist. Ich hänge beispielsweise 1,4V an, und bekomme 1150 angezeigt (entspricht 1,150V, das Komma fehlt noch). Das wäre eine Abweichung von ca. 0,3V. Ich finde, dass das etwas viel ist, zumal ich die interne Referenzspannung von 2,56V benutze, die doch relativ genau ist, oder? Bei Spannungen bis so ca. 0,4V sind die Werte noch akzeptabel bzw. genau. An was könnte das liegen?
Ich benutze einen Teilungsfaktor von 128 und messe die Spannung 64mal und teile sie dann wieder durch 64. Um die Spannung zu bekommen, multipliziere ich den gelesenen Wert mit 2,56 und teile mit 1024. Danach übergebe ich den Wert dieser Funktion:

void lcd_putsint(uint16_t zahl)
{
char puffer[6];
itoa(zahl, puffer, 10);
lcd_puts(puffer);
}

Der int Wert wird in ein char Array geschrieben und auf dem Display ausgegeben. Um ständig einen Wert zu bekommen habe ich das ganze in eine while(1) Schleife gesteckt:

int main(void)
{

lcd_init(LCD_DISP_ON);

uint16_t result;
while(1)
{
result = readADC(0)*2,56/1024;

lcd_putsint(result);
sleep(1000);
lcd_clrscr(); //löscht das Display

}

return 0;
}

Was könnte daran falsch sein?

Gruß micro5