Hi, stimmt ich hätte ja auch mal den kompletten Code nehmen können.
Ist alles der Reihe nach aufgebaut, ohne Interrupts.
Hier noch einmal das, was vor meiner Hauptschleife steht:
Code:
#define F_CPU 8000000UL //Geschwindigkeit des MCs 10MHz da 3.3V Versorgungsspannung
#include <util/delay.h> //Damit Verzögerungszeiten angegeben werden können
#include <avr/io.h> //Für Ein- und Ausgänge
#include <avr/pgmspace.h>
#include <inttypes.h>
#include <math.h>

//////////////////////////////////////////////////////////////////////////

//ADC Messung mit Dummyreadout
uint16_t readADC(uint8_t channel) 
{
	//Variablendefinition ohne Vorzeichen
	uint8_t i;
	uint16_t result = 0;
	
	// Den ADC aktivieren, kein Prescaling
	ADCSRA = (1<<ADEN);
	
	//Kanal des Multiplexers wählen, AVcc als Referenzspannung einstellen
	ADMUX = channel | (1<<REFS0); 
	
	// Dummyreadout
	ADCSRA |= (1<<ADSC);
	while(ADCSRA & (1<<ADSC));
	
	//Spannung auslesen und Durchschnittswert ausrechnen.
	for(i=0; i<3; i++) 
	{
		
		//Einmalige Wandlung
		ADCSRA |= (1<<ADSC); 
		
		//Auf Ergebnis warten
		while(ADCSRA & (1<<ADSC)); 
		
		//Ergebnis in Variable "result" speichern
		result += ADCW;
	}
	
	// ADC wieder deaktivieren
	ADCSRA &= ~(1<<ADEN);
	
	result /= 3;
	
	return result;
}
Ahh klasse habs nun gerafft wie das mit der Box geht...immerhin schonmal das ^^