Free-Running Mode für ADC (ATmega640)

Gast #2070078
Lesenswert?

Hallo,

ich versuche gerade den ADC eines ATmega640 im free-running mode zu 
betreiben, dazu habe ich ihn so konfiguriert:

1
  ADMUX=0x40;    // REF=Vcc-Pin
2
  ADCSRB=0x00;  // FREE-Running Mode
3
  DIDR0=0x00;
4
  DIDR2=0x00;
5
  ADMUX=ADMUX&0xE0;    //Kanal einstellen
6
  ADMUX=ADMUX|0x00;    //ADC0 (PIN F0)
7
  ADMUX |= (1 << ADLAR);  //8 MSBits in ADCH Register ("8-Bit Mode")
8
  ADCSRA=0xC7;  // ADC-Enable, Clk-Frq=125 Khz

allerdings muss ich trotzdem noch Messungen starten indem ich das ADSC 
bit setze:
1
ADCSRA|=0x40;
ansonsten wird nur einmal nach dem Start des Programms ein Wert 
gemessen.

Laut Datenblatt muss man aber das ADSC bit im free-running mode nicht 
setzen.
Gast #2070534
Lesenswert?

Hi

>ja hab ich auch gemacht aber funktioniert trotzdem nicht.

Dann liegt der Hund mit großer Wahrscheinlichkeit in dem Teil des Codes 
begraben, den du nicht gezeigt hast. Free-Running-Mode macht übrigens 
nur in Verbindung mit dem ADC-Complete-Interrupt Sinn.

MfG Spess
Gast #2071038
Lesenswert?

Is das nicht der Trick? Man kann das ADC-Register immer auslesen, weil 
immer n relativ aktueller Wert drinn steht!? Ich hab mich damit auch 
noch nicht beschäftigt, dachte aber das es laufen würde!?



Gruß Knut
Gast #2072009
Lesenswert?

spess53 schrieb:
> Wie willst du sinnvoll feststellen, wann der ADC fertig ist.
gar nicht, ist mir egal, wie I. L. schon sagt, man Man kann das 
ADC-Register immer auslesen, weil immer ein relativ aktueller Wert drin 
steht.

Es sein denn durch das schreiben der ADC-Register wird das laufende 
Programm unterbrochen, das wäre natürlich ein Grund gegen den 
free-running mode.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren