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
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.
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
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... :-)
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.
Ahhh sorry! Hab mich falsch ausgedrueckt. Will den nur ausm Sleep-Modus rausholen und mit den Programm fortfahren. Edit: Danke schonmal :)
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.
Welcher Compiler denn ? Sollte auch im Handbuch des Compilers stehen .... Holger
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.