Wieder mal PIC-Frage

Hallo Experten,
ich muss wieder mal fragen: zwar arbeite ich schon lange mit PICs, habe aber bisher noch nie den Sleep-Befehl benötigt.
Sag niemals nie, jetzt hats mich doch erwischt, ich muss für einen PIC16F877 ein Programm erstellen in dem dieser Befehl drinstehen muss.
Bin auch schon recht weit, bis zum Sleep läuft alles, dann gehen alle Lichter aus, der Stromverbrauch lässt sich mit einem 08/15-Multimeter nicht mehr anzeigen. So weit, so gut. Aber jetzt bekomme ich das Ding nicht wieder zum laufen. Wo liegt hier mein Fehler? An Port-B könnte ich jedes Bit nutzen. Das Ding soll aber am Ende so laufen, dass man, wenn er wieder aufgewacht ist, mit genau diesem Bit wieder zum Schlafen bringt. Hat irgendwer eine Idee dazu? Das Netz habe ich schon durchsucht, aber da kommen auch nur Fragen, genau wie meine.
Als Ergänzung muss ich noch sagen: ich arbeite nur mit Assembler.
Danke für jeden Tip! Gibt auch garantiert ein Sternchen!
cu, jo-enn

Hallo jo-enn,

Bin auch schon recht weit, bis zum Sleep läuft alles, dann
gehen alle Lichter aus, der Stromverbrauch lässt sich mit
einem 08/15-Multimeter nicht mehr anzeigen. So weit, so gut.
Aber jetzt bekomme ich das Ding nicht wieder zum laufen.

Ich kenne den PIC nicht ganz im Detail.

Mit SLEEP schaltest du die CPU ab, je nach Konfiguration kann man meist auch die Peripherie abschalten, bzw. eben nicht.

As dem SLEEP kommst du nur über RESET oder einen Interrupt wieder raus.
Wenns also nicht über RESET gehen soll, musst du den entsprechenden Interrupt freischalten, bevor du in den SLEEP gehst.

MfG Peter(TOO)

Hi Peter(TOO),
Danke erst mal für den Tip! Ich werde jetzt mal weitersuchen, das Datenblatt gibt da, so lang wie es auch ist, auch nicht viel her.
Werde mich wieder melden wenns klappt, oder auch, wenns nicht klappt!
cu, jo-enn

Hallo jo-enn,

Aber jetzt bekomme ich das Ding nicht wieder zum laufen.

Was tust Du denn? M.E. sind die PICs sehr ausführlich dokumentiert, falls Du einen ICD hast, kannst Du Dir die notwendigen Register doch auch vor dem Sleep anschauen.

An Port-B könnte ich jedes Bit nutzen.

Ja

Das Ding soll aber am Ende so laufen, dass man, wenn er wieder
aufgewacht ist, mit genau diesem Bit wieder zum Schlafen
bringt.

Ich weiss nicht, ob ich Dich richtig verstehe: Sagen wir, Du nimmst B1, mit B1=0 (jetzt) und interrupts eingeschaltet.

B1 = 1 bringt den PIC wieder zum laufen.
Du kannst jetzt B1=1 als default setzen, um beim nächsten Schlafen mit B1 = 0 wieder aufzuwachen.

Als Ergänzung muss ich noch sagen: ich arbeite nur mit
Assembler.

das ist gut.

Gruß
achim