www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik sleep Modus bei PIC


Autor: Axel F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Leute,

ich versuche gerade meinen PIC18F258 in den sleep Modus zu versetzen 
aber er will nicht so richtig. Er scheint den Befehl einfach zu 
überspringen.

Welche Randbedingungen sind denn zu beachten. Setze jetzt nur genau vor 
dem sleep Befehl das GIE auf disable und nach dem sleep Befehl gleich 
wieder auf enable.

Gibt es noch mehr zu beachten? Zum Beispiel im Konfigurationswort oder 
weitere Flags die gesetzt/rückgesetzt werden müssen?

Vielen dank schonmal für die Hilfe,

MfG Axel

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, setzte das GIE in einem loop auf disable, sonst kann es sein, daß 
es
nicht disabilitiert wird. Ev. kann das der Grund sein. Ein anderer Grund 
kann wake on pin change sein, d.h. wenn du das Port nicht eingelesen 
hast und es hat sich seit dem letzten einlesen verändert, dann geht er 
auch nicht in den sleep. Das sind mal die 2 Gründe, welche mir am 
warscheinlichsten vorkommen.

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aus dem Manual:

24.3.2 WAKE-UP USING INTERRUPTS
When global interrupts are disabled (GIE cleared) and
any interrupt source has both its interrupt enable bit
and interrupt flag bit set, one of the following will occur:

• If an interrupt condition (interrupt flag bit and
interrupt enable bits are set) occurs before the
execution of a SLEEP instruction, the SLEEP
instruction will complete as a NOP. Therefore, the
WDT and WDT postscaler will not be cleared, the
TO bit will not be set and the PD bit will not be
cleared.

• If the interrupt condition occurs during or after
the execution of a SLEEP instruction, the device
will immediately wake-up from Sleep. The SLEEP
instruction will be completely executed before the
wake-up. Therefore, the WDT and WDT
postscaler will be cleared, the TO bit will be set
and the PD bit will be cleared.

Even if the flag bits were checked before executing a
SLEEP instruction, it may be possible for flag bits to
become set before the SLEEP instruction completes. To
determine whether a SLEEP instruction executed, test
the PD bit. If the PD bit is set, the SLEEP instruction
was executed as a NOP.
To ensure that the WDT is cleared, a CLRWDT
instruction should be executed before a SLEEP
instruction

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.