Forum: Mikrocontroller und Digitale Elektronik Atmel ADCH update nach Interrupt nur nach Reset


von Erwin (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich hab zwar eine Lösung gefunden, finde die aber nicht elegant.

Aufgabe: Der Atmel soll kontinuierlich den ADC-Wert in einen best.
PWM-Wert wandeln.
Problem: Er führt genau 1ne Umwandlung nach dem Reset durch (eigentlich
führt er dauernd Umwandlungen durch), zumindest sieht das aber von
aussen so aus als ob er nur eine macht.

Die GROSSGESCHRIEBENEN Kommentare gegen Ende der Datei sind die
relevanten Stellen.
Hoffe jemand kennt das Problem.

Übrigens, grad noch getestet, im AVR Simulator tritt das Problem nicht
auf.

von ...HanneS... (Gast)


Lesenswert?

Kann es sein, dass du dir beim Schalten der H-Brücke den Pull-Up von PC1
(dem Analogeingang) schaltest und damit den Analogwert verfälscht?

Ich verstehe auch die Bitzugriffe in adccomplete (sbis adch,7 und sbic
adch,7) auf adch und adcl nicht, soviel ich weiß sollte man auf adch
(und ggf auf adcl) nur per IN zugreifen, damit sich das interne
temporäre Zwischenregister nicht veralbert. Auch die Lesereihenfolge
ist wichtig.

Da der ADC mit Einzelkonversion arbeitet, muss in adccomplete adsc in
adcsra für jede Messung neu gesetzt werden.

...

von Erwin (Gast)


Lesenswert?

> Auch die Lesereihenfolge ist wichtig.

Yeah, danke, das wars!

Dadurch dass der letzte Lesezugriff auf ADCL (mit sbic ADCL,7) erfolgt
wird das Schreiben in ADC gesperrt! Ich hab nur ein "in temp, ADCH"
vor die retis geschrieben und es geht :-)

Auszug aus Datenblatt:
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, neither register is updated and the result from the conversion is
lost. When ADCH is read, ADC access to the ADCH and ADCL Registers is
re-enabled.

Das erklärt auch warum es einmal nach dem Reset funktioniert.


Nochmals vielen Dank

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.