Hallo,
ich bleibe mal bei der idee mit der Einzelmessung, im zweifelsfall kann ich später noch im freilaufenden Modus wechseln.
Hab jetzt noch eine Warteschleife eingefügt und die Wertzuweisung geändert.
Code:
char i=0;
unsigned char volatile j=0;
unsigned short adc_temp=0;
ADMUX = 0x40; // ADC0
for(j=0; j<15; j++) { } // 10us warten (etwas mehr als ein ADC-Takt)
ADCSRA |= (1<<ADSC);
/* Test AD-Wandlung durchführen */
while (ADCSRA & (1<<ADSC))
{
; // Auf Abschluss der Konvertierung warten
}
adc_temp += ADC;
adc_temp =0;
/* Test-Wert löschen */
for(i=0; i<4; i++) // 4 Wandlungen durchführen
{
ADCSRA |= (1<<ADSC); // eine Wandlung "single conversion "
while (ADCSRA & (1<<ADSC))
{
; // Auf Abschluss der Konvertierung warten
}
adc_temp += ADC;
}
adc_temp /= 2; // Summe durch fünf teilen = arithm. Mittelwert
adc_werte[0] = adc_temp;
i=0;
Die Frage ist jetzt:
Ist das Programm schneller wenn ich das in eine Funktion packe und die Funktion 8 mal starte oder ist es schneller wenn es einfach (copy&paste sein dank) 8mal hintereinander steht?
Lesezeichen