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?
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
Dann werde ich den ADC ausserhalb der Funktion zurücksetzen und freigeben. Kein Wunder das ich Mist messe!
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.