Hallo,

ich habe mir für eine Funktion erstellt mit der ich die Analogen Eingänge auslesen kann (ist nahezu 1:1 aus dem Tut von mikrocontroller.net übernommen, bis auf einige bezeichnungen).

Code:
//Code zum Auslesen des AD Eingang
uint16_t  analog_lesen(uint8_t kanal)
{
 uint8_t i;
 uint16_t result = 0;
 
 ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<< ADPS1) | (1<< ADPS0); // Frequenvorteiler auf 128 setzen und AD-Wandler aktivieren
 
 ADMUX = kanal;
 ADCSRA |= (1<<ADSC);
 while ( ADCSRA & (1<<ADSC) );
 
 for (i=0;i<4;i++)
   {
    ADCSRA |= (1<<ADSC);
    while( ADCSRA & (1<<ADSC) );
    result += ADCW;   
   }
  ADCSRA &= ~(1<<ADEN); //AD-Wandler deaktivieren
  
  result /= 4;

  return result; 
 }
Nun habe ich mir in meinem einen AD Kanal ausgelesen und möchte ihn anzeigen.

Code:
...
 uint16_t messwert0 = 0; 
 char ausgabe0;
//*** 
 
 messwert0 = analog_lesen(1); 
 itoa(messwert0, ausgabe0, 10);
 
 lcd_gotopos(1,11);
 lcd_writetext("    ");
 lcd_gotopos(1,11);
 lcd_writetext(ausgabe0);
...
Das Anzeigen von Text auf dem Display klappt, die Funktion ist also i.O. ich hatte so auch schon eine Anzeige des Wertes vom AD-Wandler, dann wurden aber plötzlich nur noch wirre Zeichen angezeigt, was ich mir nicht erklären kann.
Meine Frage ist nun :
habe ich einen Fehler in der Funktion zu auslesen des AD-Wandler oder wandelt due itoa() Funktion den Integerwert nicht richtig um?

Danke schon einmal für die Hilfe