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); } } }






Zitieren

Lesezeichen