Forum: Mikrocontroller und Digitale Elektronik AD-Wandler


von Dr. K (Gast)


Lesenswert?

Hallo zusammen

Ich arbeite mit dem ATmega128 und möchte den AD-Wandler dieses
Controllers ansteuern um sechs verschiedene Werte einzulesen. Leider
habe ich es noch nicht geschafft den Wandler so zu intitialisieren,
dass er mir auch nur einen Wert ausspuckt. Ich arbeite mit JTAG, d.h.
ich kann den Ablauf realtime verfolgen. Ich initialisiere ihn wie
folgt:

prescaler 64 (8MHz osz)
enable free running
set MUX
enable ADC
start conversion
wait until complete, ADIF
read ADCL
reasd ADCH

Habe ich etwas vergessen? Hat jemand von euch Erfahrung mit dem Wandler
der AVR's? Falls ja, wie initialisiert ihr das Ding?

Danke

von Dr. No (Gast)


Lesenswert?

int hole_ad(char kanal)  // ca. 5mV pro Bit absolut
{
  ADCSR = 0x86;    /* enable + %64-Vorteiler */
  ADMUX = kanal;
  ADCSR |= 0x40;  /* start ad */
  while(ADCSR & 0x40);  /* warten */
  return(ADC);
}

z.B. so.

von Frank Simon (Gast)


Lesenswert?

Hallo,
ich habe bei einem anderen AVR (4433) erlebt, dass im Gegensatz zum
Datenblatt es doch auf die Reihenfolge des Auslesens (ADCL bzw. ~H)
ankommt, hat mich wahnsinnig gemacht. Einfach mal ausprobieren!
mfg
Frank

von Markus (Gast)


Lesenswert?

@ Frank

im Datenblatt des 4433 steht doch eindeutig, daß ADCL vor ADCH
ausgelesen werden muß.

"When reading data, ADCL must be read first. Once ADCL is read, ADC
access to Data Registers is blocked. This means that if ADCL has been
read and a conversion completes before ADCH is read, none of the
registers are updated and the result from the conversion is lost. When
ADCH is read, ADC access to the ADCH and ADCL Registers is
re-enabled."

Gruß
Markus

von Frank Simon (Gast)


Lesenswert?

@ Markus

...grrr, hast ja recht!

Gruß
Frank

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.