Hallo,

auf http://embedit.de/content/view/47/26/ ist eine pdf mit der beschreibung.
ein kondensator ist dran.

Die zeile wo pb5-7eingeschalten werden (PORTB |= (1<<PB7) | (1<<PB5) | (1<<PB6); ) hab ich shcon rauskommentiert. das ist nicht schuld.

Spielt die reihenflger wie ich die Register setze eine rolle? wie kann ich es wenns eine rolle spielt den code so schnell wie möglich durchführen lassen (also so wenig wie möglich register setzen zu müssen pro durchlauf).

Ihrkönnt mir auch helfen wenn ihr mir funktionierenden singleconversation c code von euch wo rauskopiert den ich dann vergleichen kann.

ich habe die avr.c etwas verändert, jedoch soll dies nicht die entgültige lösung sein:
Code:
#include <avr/io.h>
#include <util/delay.h>    // definiert _delay_ms()

void adcstart(void);
void adcstop(void);

void adcstart(void) {
// 	ADCSRA |= ((1<<ADEN) | (1<<ADPS0) | (1<<ADPS1) | (1<<ADPS2));//ADPS0-2(Vorteiler 128), ADEN (Enable)
// 	
// 	ADMUX = 0;
// 	ADMUX |= (1<<REFS1) | (1<<REFS0);
// 	
// 	ADCSRA |= (1<<ADSC);              	// eine ADC-Wandlung als Dummy zum warmlaufen
// 	while ( ADCSRA & (1<<ADSC) ) {
// 	;     					// auf Abschluss der Konvertierung warten 
// 	}
}

void adcstop(void) {
	ADCSRA &= ~(1<<ADEN);
}

uint16_t adcget(uint8_t kanal) {
	

ADMUX =  0xC0; //0b1100 0000
ADCSRA = 0xC7;	//0b1100 0111


uint16_t ergebnis = 0;

// 	ADMUX = kanal;            		// Kanal waehlen
// 	ADMUX |= (1<<REFS1) | (1<<REFS0);	// interne Referenzspannung nutzen 
// // 	ADCSRA |= (1<<ADEN);
// 	ADCSRA |= (1<<ADSC);			// eine Wandlung "single conversion"
	while ( ADCSRA & (1<<ADSC) );	 // auf Abschluss der Konvertierung warten
	
	ergebnis=ADC;
	adcstop();
	return ergebnis;
}
Was da passiert, außer dass es nicht funktioniert kann ich leider nicht mehr sagen da mein akku leer wurde.

mfg
Thomas