mikrocontroller.net

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


Autor: Erwin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Autor: Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.