Atmel ADCH update nach Interrupt nur nach Reset

Gast #146158
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.
Angehängte Dateien:
Gast #146159
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.

...
Gast #146160
> 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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.