So, mein Code sieht jetzt so aus:
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);
	  }
    }
  }
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ß.
das müsste doch jetzt auf 0xffff verteilt sein, oder? Ich versteh das nicht.

Gruß Jan