PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : POR = 0 trotz MCLR-Reset



konservator
31.05.2007, 06:13
Ich habe an einen PIC zwei LEDs angeschlossen und einen Taster, der einen Reset auslöst(MCLR zu Schalter zu Masse und MCLR zu R zu Vdd). Zusätzlich Spannungsquelle und Schwinger.

Jetzt ist es so, daß im Datenblatt für den 16F628A auf Seite 99 eine Tabelle steht, in der aufgeführt ist, welche Resets es gibt und wie man sie abfragt.

POR = PCON.1
BOR = PCON.0
TO = STATUS.4
PD = STATUS.3



TABLE 14-4: STATUS/PCON BITS AND THEIR SIGNIFICANCE
POR BOR TO PD Condition
0 X 1 1 Power-on Reset
0 X 0 X Illegal, TO is set on POR
0 X X 0 Illegal, PD is set on POR
1 0 X X Brown-out Reset
1 1 0 u WDT Reset
1 1 0 0 WDT Wake-up
1 1 u u MCLR Reset during normal operation
1 1 1 0 MCLR Reset during Sleep
Legend: u = unchanged, x = unknown


Ich habe mir also eine BasicRoutine geschrieben, die genau das tut. Leider ist das Ergebnis, das mir durch LEDs angezeigt wird, immer so, als ob ich nie einen Reset auslösen würde, sondern immer die Spannung ein-, aus-, und wieder einschalten würde. Aber genau das ist der Fall, ich drücke den Taster und der PIC wird neugestartet, zeigt aber eben durch die LEDs an, daß er ein-, aus-, und wieder eingeschaltet worden wäre.

POR im PCON Register bleibt also zumindest immer 0.

Woran kann es liegen - muß ich anders abfragen, andere CONFIG-Bits setzen oder anders beschalten.



IF PCON.1 = 1 AND PCON.0 = 1 THEN
IF STATUS.4 = 1 AND STATUS.3 = 0 THEN
GOTO ResetNachSleep
ELSE
GOTO ResetNormal
ENDIF
ENDIF

IF PCON.1 = 1 AND PCON.0 = 0 THEN
GOTO BrownOut
ENDIF

IF PCON.1 = 0 AND STATUS.4 = 1 AND STATUS.3 = 1 THEN
GOTO NormalStart
ENDIF

konservator
31.05.2007, 17:56
Ich frage anders: Wie finde ich beim PIC heraus, ob ein Reset durch MCLR oder durch ein-, und ausschalten erfolgt ist ?