PIC Problem nach Sleep (Variablen zurückgesetzt)

OP #2931715
Hallo zusammen,

bin bin schon seit Stunden am verzweifeln, weil ich einfach nicht 
schnalle.

Habe einen PIC 16F1827 und kann diesen auch schon in den Sleep-Modus 
setzen. Das Problem ist, dass er, wenn er per WatchDogTimer aufwacht 
(und das möchte ich zu haben) meine vorher definierten Variablen neu 
initalisiert.

Anbei das Beispiel:
1
init fistsetting = 0;
2

3
void main(void) {
4
INTCONbits.GIE=0b0; //disable global interrupt
5
if(firstsetting==0)
6
{
7
    initChannels();
8
    firstsetting =1;
9
}
10
    while (1) {
11
        if(checkAlarmState(checkChannels())==1)
12
        {
13
            SLEEP();
14
        }
15
        NOP();
16
    }
17
}

Meine Funktion initChannels() soll nur 1 mal aufgerufen werden, was ich 
mit der Prüfung der Variable firstsetting abfragen will.

Wenn ich nun aber mit dem Debugger (MPLAPX) durch das Programm gehe, 
dass wird nach dem Sleep die Variable wieder auf Ausgangswert 
zurückgesetzt.

Hat jemand eine Ahnung, woran das liegen kann?!
Habe auch schon das Internet durchforstet, jedoch hat bis jetzt nichts 
geholfen.

Vielen Dank schonmal im Vorraus
Gast
Peter Dannegger schrieb:
> Der Watchdog wird wohl ein Reset machen, wie vorgesehen.
> Irgendwie muß man einstellen, daß der Watchdog kein Reset machen soll.


Datenblatt 10.5 S. 98
When a WDT time-out occurs while the device is in
Sleep, no Reset is generated. Instead, the device
wakes up and resumes operation. The TO and PD bits
in the STATUS register are changed to indicate the
event. WDTE<1:0> SWDTEN See Register 3-1 for more informati

Sieht eher so aus das der WDT an einer anderen Stelle ausgelöst wird, 
würde ich mal nach sleep ausschalten.

Errata sheet gelesen?

Punkt 9.1 S.8

9. Module: BOR
9.1 BOR Reset
This issue affects only the PIC16LF1826/1827
devices. The device may undergo a BOR Reset
when waking-up from Sleep and BOR is reenabled.
A BOR Reset may also occur the
moment the software BOR is enabled.
Under certain voltage and temperature conditions
and when either SBODEN or BOR_NSLEEP is
selected, the devices may occasionally reset when
waking-up from Sleep or BOR is enabled.
Work around
Method 1: In applications where BOR use is
not critical, turn off the BOR in the
Configuration Word
OP
Hallo zusammen,

erstmal vielen Dank für die schnellen Antworten. Habe in der 
Zwischenzeit mal das BOR disabled, dabei hat sich das Programm 
(zumindest MPLABX) nach dem Sleep aufgehängt.

Der WDTtimer müsste sich, wenn ich das Datenblatt richtig gelesen haben, 
beim Eintritt in den Sleep mode wie auch beim Verlassen zurücksetzen. 
Funktioniert auch, das Programm wird periodisch ausgeführt, nur halt 
wieder von neu.

Schaue jetzt nochmal nach dem BOR und hoffe darin die Lösung zu finden.

Beste Grüße
Gast
Rene Ibald schrieb:
> Schaue jetzt nochmal nach dem BOR und hoffe darin die Lösung zu finden.

Bevor hier ne falsche Fährte entsteht, das gilt nur bis Revision A5 (ein 
neuer PIC wird das nicht mehr haben).

Schalte den WDT vor dem Sleep ein und nach dem Sleep aus und schau was 
dann passiert.
OP
So, hier das Ergebnis:

Debugging nicht möglich, wenn BOREN != ON.
WDT per Software vor Sleep anschalten und nach Sleep später ausschalten 
funktioniert nicht, führt wieder den Reset aus.

Für mich heißt das jetzt, da ich auch schon genug Zeit verschwendet 
habe, Controller wechseln.

Vielen Dank für die Mithilfe und noch einen schönen Sonntag
OP
Hallo zusammen,

habe nun jetzt den Fehler gefunden.
MPLABx mit ICD3 kann nicht im Sleep debuggen, bzw. man darf nicht in die 
Sleepfunktion reinspringen.

Aus dem Manual
To step through your code, select either Debug>Step Into or Step Into 
from the
Debug toolbar. Be careful not to step into a Sleep instruction or you 
will have to
perform a processor Reset to resume emulation.

Wieder um eine Erkenntnis schlauer, mensch, die Zeit hätte man sich auch 
sparen können, aber so ist das halt.

Nochmals Danke an alle.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 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.