Moin.
Ich hab es immer noch nicht hinbekommen. Ich hab jetzt einen Kondensator mit 100nF zwischen AREF und GND geschaltet und im Programm alles mögliche gemacht:
Ich werde mich heute auf jeden Fall noch mal ransetzen und ganz in ruhe versuchen das mal im Single Convention Mode zu programieren.Code:#include <avr/io.h> #include <stdint.h> #define F_CPU 1000000UL int main(void) { DDRC = (1<<PC0); uint16_t x; SFIOR = ((0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0)); ADCSRA = ((1<<ADEN) | (1<<ADATE) | (1<<ADPS0) | (1<<ADPS1)); ADMUX = (1<<REFS0); ADMUX = ((0<<MUX0) | (0<<MUX1) | (0<<MUX2) | (0<<MUX3) | (0<<MUX4)); //damit ist ADC0-Eingang //gewählt ADCSRA |= (1<<ADSC); //hiermit wird die Messung initialisiert und gestartet while(1) { while (ADCSRA & (1<<ADSC)) { ; } x = ADCL; x += (ADCH<<8); if (x >= 8000) { PORTC |= (1<<PC0); } else { PORTC &= ~(1<<PC0); } } }
Das ergebnis wird doch in 16 bit dargestellt sein, wobei 8000 doch ca. 2,5V bedeuten, wenn ich an AREF 5V Anlege, oder?
MfG Jan







Zitieren

Lesezeichen