www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Sleep-Funktion


Autor: Thomas H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

um Wandlungsfehler durch den Takt zu vermeiden moechte ich gerne meinen 
Controller waehrend der Wandlung in den sleep-Modus versetzten. Leider 
"haengt" er sich an dieser Stelle immer auf und setzt seine Arbeit nicht 
weiter fort. Ich habe den Modus im Idle-Status initialisiert.

Weiss da jemand Rat? Hier ein vereinfachter Programmauszug:

ldi  temp, Kanal  ; Kanalauswahl
out  ADMUX, temp

sbi  ADCSR, ADFR  ; Free Run einschalten

sbi  ADCSR, ADSC  ; Start der Wandlung

sleep                                       ; soll bei Wandlung in 
sleep-Modus gehen

wait:
sbis  ADCSR, ADIF  ; warten bis Flag gesetzt
rjmp  wait    ; weiter, wenn Flag gesetzt

in             wert1, ADCL             ; auslesen der H und L-Bits
in             wert2, ADCH

Tschuess,

Thomas H.

Autor: Lothar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im SLEEP-MODUS führt der Prozessor bekanntlich keine weiteren Befehle 
aus.
Daher auch nicht deine Abfrage des Flags. Er Schläft einfach tief und 
fest.
Um ihn zu wecken, muss schon jemand recht kräftig an die Tür klopfen und 
einen
Interrupt des Schläfers auslösen.

Und hier liegt die Lösung.
Der ADC kann durch setzen des Bit ADIF im Controll- und Statusregister 
ADCSR zu dieser
Aktion veranlasst werden. In der entsprechenden Interruptroutine "ADC 
Conversation complete"
$00E       RJMP   ADC_Int
braucht hierbei nur ein IRET stehen. Hauptsache der Prozessor wacht auf.

Sinnvollerweise legt man hier die Abfrage "Welcher Kanal" und "Welcher 
Wert"
hin und speichert die Werte entsprechend.

- Lothar

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.