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
Lesezeichen