folgendes Problem:
ich weiß, dass mein Problem eigentlich recht einfach sein sollte aber ich komm grad irgendwie kein schritt weiter und habe gehofft ihr könntet mir vll helfen. Und zwar habe ich mich nun am ADC probiert aber bin irgendwie an etwas gescheitert...
liegts vll an den registern?

Folgende Pinbelegung:
gesamter PORTD LED's
VREF 100n gegen masse
und ADC 0 - 5 hängen in der luft aund wahlweise an einem POti (mitte)
die anderen beiden Pins des Potis gehen auf masse und VCC

habe folgende Codes getestet:

#include <avr/io.h>

#include <util/delay.h>



Code:
int main()
{
  int sample,i,value;
  DDRD=0xFF;   // PORTD als Ausgabeport
  ADMUX=(0<<REFS1)|(1<<REFS0);  // ADC Ref auf Avcc, PC0 gew?hlt
  ADCSR=(1<<ADEN)|(0<<ADPS0)|(1<<ADPS1)|(1<<ADPS2); // ADC eingeschaltet, 64 Bit Prescale
  while(1)
  {
    sample=0;
    for(i=0;i<64;i++)
    {
      ADCSRA|=0b10000000;  //single conversion mode ein
      while(ADCSRA & (1<<ADSC));  //warten bis konvertierung abgeschlosen
      sample+=ADCW;  //aufsummierung der samplewerte
    }
    value=sample/64;  //aritmethisches mittel der samplewerte
    if (value<300)
      PORTD=0b10000000;  //schaltet LED ein
    else if (value>=300 && value<600)
      PORTD=0b11000000;  //schaltet LED ein
    else
      PORTD=0b11100000;  //schaltet LED ein
  }
}
Code:
#include <avr/io.h>  // Include Datei f?r den ATMega8 
#include <util/delay.h>  // Include Datei f?r die Verz?gerungsfunktion
  
void long_delay(uint16_t ms) 
{
    for(; ms>0; ms--) _delay_ms(1);
}  
  
int main()
{
  int sample,i,value;  // Variablen definitionn
  DDRD=0xFF;   // PORTB als Ausgabeport
  ADMUX=0x00;  // ADC Ref auf Avcc, PC0 gew?hlt, normale Formatierung
  ADCSRA=0x80; // ADC eingeschaltet, kein Prescale  
  // Endlosschleife zur kontinuierlichen Auswertung der Eingangsspannung (am ADC)
  while(1)
  {
    sample=0;  // setzt den Samplewert auf 0
    // Schleife zum Sammeln von 32 Me?werten
    for(i=0;i<32;i++)  
    {
      ADCSRA.6=1;  // single conversion mode ein
      while(ADCSRA.6);  // warten bis konvertierung abgeschlosen
      sample+=ADCW;  // aufsummierung der samplewerte
    }
    value=sample/32;  // Aritmethisches Mittel der Samplewerte    
    // Auswertung der Me?daten
    if (value<300)  // erste Grenze 
      PORTD=0x04;  // schaltet gr?ne LED ein
    else if (value>=300 && value<600)  // zweite Grenze 
      PORTD=0x02;  // schaltet gelbe LED ein
    else
    {  
      PORTD=0x01;  // schaltet rote LED ein
      long_delay(250);  // verz?gerung von 250ms  
      PORTD=0x00;  // schaltet LED aus
      long_delay(250);  // verz?gerung von 250ms
    }
  }
  return 1;
}