Hallo,

ich möchte mit einem at90can 8 ADC Kanäle so schnell auslesen:

Der ADC-Takt ist 125 kHz. (16.000.000 Hz / 128 Prescaler)

In dem AVRGCC-Tutorial wird geraten eine Dummy-Messung durchzuführen. Gilt das nur nachdem ich den ADEN gesetzt hab oder auch beim wechseln der Kanäle?


Der Code ist teilweise aus dem AVRGCC-Tutorial
Code:
	char i=0;
	
	ADMUX = 0x40; // ADC0
	ADCSRA |= (1<<ADSC);
	/* Test AD-Wandlung durchführen */

	while (ADCSRA & (1<<ADSC))
	{
		;     // Auf Abschluss der Konvertierung warten
	}
  	adc_werte[0] += ADCL;
	adc_werte[0] += (ADCH<<8);

	adc_werte[0] =0;
	/* Test-Wert löschen */
 
	for(i=0; i<5; i++)					// 5 Wandlungen durchführen
	{
		ADCSRA |= (1<<ADSC);            // eine Wandlung "single conversion	"
    	while (ADCSRA & (1<<ADSC))
		{
			;   // Auf Abschluss der Konvertierung warten
    	}

    	adc_werte[0] += ADCL;
		adc_werte[0] += (ADCH<<8);
	}
	adc_werte[0] /= 5;					// Summe durch fünf teilen = arithm. Mittelwert
	i=0;

	ADMUX = 0x41; // ADC1
	ADCSRA |= (1<<ADSC);
	/* Test AD-Wandlung durchführen */

	while (ADCSRA & (1<<ADSC))
	{
		;     // Auf Abschluss der Konvertierung warten
	}
  	adc_werte[1] += ADCL;
	adc_werte[1] += (ADCH<<8);

	adc_werte[1] =0;
	/* Test-Wert löschen */
 
	for(i=0; i<5; i++)					// 5 Wandlungen durchführen
	{
		ADCSRA |= (1<<ADSC);            // eine Wandlung "single conversion	"
    	while (ADCSRA & (1<<ADSC))
		{
			;   // Auf Abschluss der Konvertierung warten
    	}

    	adc_werte[1] += ADCL;
		adc_werte[1] += (ADCH<<8);
	}
	adc_werte[1] /= 5;					// Summe durch fünf teilen = arithm. Mittelwert
	i=0;
// usw.