Forum: Mikrocontroller und Digitale Elektronik PIC in Sleepmodus


von Max D. (maxime)


Lesenswert?

Hallo Leute,

wie versetze ich meinen PIC16F887 in den Sleepmodus (Powerdown),
sodass ich ihn dann mithilfe eines Atmega resetten kann?
In C bitte...

Freundliche Grüße

von der_ohne_namen (Gast)


Lesenswert?

Indem du die Funktion

Sleep()

aufrufst.

Bitte gern geschehen.

von Max D. (maxime)


Lesenswert?

Und er kann dann ohne einen weiteren Befehl von den Atmega resettet 
werden?

von der_ohne_namen (Gast)


Lesenswert?

Wenn du den Reset Input vom PIC meinst, ja
der hat doch absolut nichts damit zu tun
was das Programm im PIC gerade macht. Dem
ist auch egal ob der Eingang von einem Taster,
AVR oder sonst was getriggert wird.

von Chris B. (dekatz)


Lesenswert?

Wenn der Atmega den MCLR-Pin des PIC auf Low zieht - JA!

von Max D. (maxime)


Lesenswert?

Chris B. schrieb:
> Wenn der Atmega den MCLR-Pin des PIC auf Low zieht - JA!

Und wie mache ich das?

von Chris B. (dekatz)


Lesenswert?

Pullup Widerstand (4k7...10k)am MCLR des PIC und MCLR zu einem Portpin 
beim Atmega und diesen auf LOW schalten. Wie das beim Atmega gemacht 
wird weiss ich nicht, bin PICer.

Vorausgesetzt du möchtest tatsächlich eine RESET des PIC! und nicht den 
PIC aus dem Sleep-Modus holen und mit dem Programm fortfahren.

Datenblatt Kapitel 14.6, Seite 226

von PIC N. (eigo) Benutzerseite


Lesenswert?

Je nachdem ist es evtl. sinnvoller den PIC aufzuwecken statt ihn zu 
resetten. Dafür könnte man den AVR IO an einen Interrupt fähigen PIN des 
PIC hängen, der dann diesen aus dem Schläfchen holt.

Edit: Zu langsam... :-)

von Der Rächer der Transistormorde (Gast)


Lesenswert?

Max D. schrieb:
> Chris B. schrieb:
>> Wenn der Atmega den MCLR-Pin des PIC auf Low zieht - JA!
>
> Und wie mache ich das?

Vielleicht gar nicht da du den (brutal)Reset durch einen anderen 
Prozessor schlecht von anderen Ereignissen (wie z.B. Power On) 
unterscheiden kannst.

Modis wie Sleep, Deep Sleep usw. kann man durch einen Interrupt beenden.
Welche Leitungen das sind steht im Datenblatt,


Dann hat der Pic die Info was ihn aufgeweckt hat und macht hinter dem 
Sleep() Kommando weiter (das kann, muss aber nicht Re-start sein).


Generell benutzt du eine Leitung zwischen den beiden µCs. Ausgang des 
einen auf Eingang des anderen.

von Max D. (maxime)


Lesenswert?

Ahhh sorry! Hab mich falsch ausgedrueckt.
Will den nur ausm Sleep-Modus rausholen und mit den Programm fortfahren.

Edit: Danke schonmal :)

von Max D. (maxime)


Lesenswert?

Den normalen Befehl sleep(); erkennt er bei mir aber nicht?
Was ist zu tun?

Ich will das er einfach in den Sleep-Modus gesetzt wird.

von Holger W. (holgerw)


Lesenswert?

Welcher Compiler denn ?
Sollte auch im Handbuch des Compilers stehen ....

Holger

von Max D. (maxime)


Lesenswert?

HI-TECH C Compiler for PIC10/12/16 MCUs

Gruß

Edit:
Danke, hab gerade selber nachgeschaut!

von Jens M. (Gast)


Lesenswert?

Max D. schrieb:
> Den normalen Befehl sleep(); erkennt er bei mir aber nicht?
> Was ist zu tun?
>
> Ich will das er einfach in den Sleep-Modus gesetzt wird.

Bist du sicher das er nicht gleich wieder aufwacht?

Ansonsten Versuch mal asm ("sleep");

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.