So, mein Code sieht jetzt so aus:
Jetzt klappt das auch schon besser, aber wenn ich "if (x<=500)" schreibe geht die Lampe bei etwa 4,2V an. x ist doch aber 16 bit groß.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 |= PA0; ADCSRA |= (1<<ADSC); //hiermit wird die Messung initialisiert und gestartet while(1) { x = ADCW; //hier wird das ADC-Register ausgelesen if (x >= 800) //wenn der gemessene Wert die 128 erreicht oder überschreitet soll die LED //an PC0 leuchten also wenn die Spannung die hälfte von 0V zu AREF //(hier 2,5V) überschreitet { PORTC |= (1<<PC0); } else { PORTC &= ~(1<<PC0); } } }
das müsste doch jetzt auf 0xffff verteilt sein, oder? Ich versteh das nicht.
Gruß Jan







Zitieren

Lesezeichen