Hier ist mal der Code:
Code:
uint16_t readChannel(uint8_t channel){
uint8_t i;
uint16_t result;
// ADC aktivieren, Vorteiler 128 --> 8Mhz/128 = 62.5kHz
ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
ADMUX = channel;
ADMUX = (1<<ADLAR);
// eine Messung durchführen, Ergebnis verwerfen
ADCSRA |= (1<<ADSC);
while(!(ADCSRA & (1<<ADIF)));
result = 0;
//vier mal Messen
for(i=0;i<4;i++){
ADCSRA |= (1<<ADSC);
while(!(ADCSRA & (1<<ADIF)));
result += ADCH;
}
//ADC abstellen
ADCSRA &= ~(1<<ADEN);
result >>= 2; // Mittelwert bilden
//Ergebnis zurückgeben
return result;
}
int main(void){
uint16_t out_lcd = 0;
uint16_t temp = 0;
lcd_init(LCD_DISP_ON_CURSOR_BLINK);
lcd_clrscr();
lcd_home();
while(1){
out_lcd = readChannel(0);
if(temp!=out_lcd){
lcd_clrscr();
lcd_home();
temp = out_lcd;
lcd_puts((char*)out_lcd);
}
}
}
Lesezeichen