Forum: Mikrocontroller und Digitale Elektronik Dauer der AD-Wandlung


von Joerg M. (Firma: TU Wien) (pinning)


Lesenswert?

Ich habe beruflich viel mit Micrkontrollern aller Art zu tun, nur der
Atmel ist fuer mich eher Neuland.
Aus diesem Grund habe ich das GCC-Tutorial durchgearbeitet.
Ich habe im Moment ein Problem bei der A/D Wandlung.
Im Tutorial ist ein Beispiel für eine "Single conversion" Funktion
uint16_t ReadChannel (uint8_t mux).
Hier wird der A/D Wandler freigegeben durch das Flag ADEN. Das heisst
doch konkret, dass die nun folgende
erste Wandlung (Ausgelöst durch ADSC) 25 Takte benötigt.
Nun wird am Ende der Funktion das Enable-Flag wieder zurückgesetzt.
Bedeutet dies nicht, das bei einem erneuten Aufruf der Funktion
die Wandlung wieder 25 Takte benötigt?

von Karl heinz B. (kbucheg)


Lesenswert?

Genau das bedeutet es.

von Lutz Müller (Gast)


Lesenswert?

Zumindest beim ATMega8 sind es bei der ersten Wandlung nach setzen von
ADEN 25 Takte. Das Ergebnis dieser ersten "extended conversion" soll
man aber verwerfen, da dabei der ganze Kram initialisiert wird und
quatsch rauskommt. Erst die zweite Messung nach ADEN soll man nutzen.
Diese dauert dann (zumindest wieder beim Mega8) 13 Takte. Schaltest Du
nun am Ende Deiner Funktion ADEN wieder aus, beginnt alles beim
nächsten Setzen von ADEN wieder von vorne.

Gruß
Lutz

von Joerg M. (Firma: TU Wien) (pinning)


Lesenswert?

Dann werde ich den ADC ausserhalb der Funktion zurücksetzen und
freigeben. Kein Wunder das ich  Mist messe!

von Wolfgang Horn (Gast)


Lesenswert?

Hi, Jörg,

Bei einem erneuten Aufruf der Funktion: Ja.
Aber für fortlaufende Wandlungen, mit Interrupt bearbeitet, sinkt die
Zahl auf 13 Zyklen. Quelle: Datenblatt Atmega32, S. 203

Ciao
Wolfgang Horn

von Joerg M. (Firma: TU Wien) (pinning)


Lesenswert?

Vielen Dank für eure Hilfe!

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.