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).
Nun habe ich mir in meinem einen AD Kanal ausgelesen und möchte ihn anzeigen.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; }
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.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); ...
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







Zitieren
Lesezeichen