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.







Zitieren

Lesezeichen