PIC Problem nach Sleep (Variablen zurückgesetzt)

OP #2931715
Lesenswert?
• ▲
▼
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 #2931731
Lesenswert?
• ▲
▼
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 #2931751
Lesenswert?
• ▲
▼
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
OP #2931791
Lesenswert?
• ▲
▼
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 #2932360
Lesenswert?
• ▲
▼
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

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.

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.