Forum: Mikrocontroller und Digitale Elektronik Free-Running Mode für ADC (ATmega640)


von ben (Gast)


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.

von spess53 (Gast)


Lesenswert?

Hi

>Laut Datenblatt muss man aber das ADSC bit im free-running mode nicht
>setzen.

Der Free-Running-Mode muss einmalig gestartet werden.

MfG Spess

von ben (Gast)


Lesenswert?

ja hab ich auch gemacht aber funktioniert trotzdem nicht.

von Christopher G. (cbg)


Lesenswert?

ADATE Bit gesetzt? Wennst nicht die Werte in HEX hingeschrieben hättest, 
hätt ich selber nachgeschaut.

von spess53 (Gast)


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

von ben (Gast)


Lesenswert?

Christopher G. schrieb:
> ADATE Bit gesetzt?

nein, daran lag es, Danke.

spess53 schrieb:
> Free-Running-Mode macht übrigens
> nur in Verbindung mit dem ADC-Complete-Interrupt Sinn.

kannst du das genauer erläutern?

von spess53 (Gast)


Lesenswert?

Hi

>kannst du das genauer erläutern?

Wie willst du sinnvoll feststellen, wann der ADC fertig ist. Durch 
pollen?

MfG Spess

von I. L. (Gast)


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

von typ (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.