Ich führe den Befehl Sleep(); aus Während er den Befehl Sleep(); ausführt ( C18 ) benötigt der Pic 30mA hole ich den Pic per INT aus dem Schlaf brauch er ebenso 30mA? Im Sleep sollte er doch nahezu nix verbrauchen. Was könnte das sein?
Kann es sein, dass die Ausgänge so beschaltet sind, dass sie im Moment des Abschaltens etwas treiben müssen? Kenne zwar nicht die PICs, aber gewöhnlich bleiben Ausgänge beim Schlafen aktiv und treiben weiter fröhlich angeschlossene LEDs, Transistoren usw.
Sleep hält (beim AVR jedenfalls) je nach Modus nur die Taktfrequenz an. Wenn du die IO-Pins hochohmig schalten willst, dann führe einen Brown-Out-Interrupt aus (Flag setzen) und lege den µC in dieser ISR Schlafen.
Welche Aussenbeschaltung hängt denn am PIC und wie ist der Zustand der Ports vor der SLEEP-Anweisung ? Kann es sein, dass der Controller sofort wieder aufgeweckt wird, dass er also nur ganz kurz im SLEEP-Zustand ist ? Kannst Du den SLEEP-Zustand erkennen ? Um welchen Baustein handelt es sich denn genau ?
@Armin atm hängt nur eine LED zum testen dran. Nein der bleibt im Sleep weil ich nach dem Sleep ein breakp gesezt habe und er nur das sleep verläßt nach austritt sleep wie erkennen? p18f
Die LED wird aber vorm Schlafenlegen ausgeschaltet, oder ? Breakpoint gesetzt ? Dein Controller hängt also am Debugger dran, dann würde ich den Strommesswerten keinen Glauben schenken, das sind völlig andere Rand- bedingungen. Flashe das Teil doch mal und lass es ohne Debugger laufen und dann nochmal messen. Wie den SLEEP-Zustand feststellen ? Bei externen Quarz dürfte im SLEEP-Zustand kein Systemtakt mehr messbar sein.
die LED wird erst bei verlassen des Sleep angeschalten davor passiert nix. Den Debuger habe ich auch abgezogen und dort verhält es sich gleich. Reicht es vor dem Sleep mode alle Pins auf Low zu setzen?
Welcher Typ ist es denn genau (P18F???) und auf welche Art und wie schnell ist er denn getaktet ? Sind die 30mA im Normalbetrieb eigentlich ok, was sagt das Datenblatt dazu ? Könnte man Deinen Code sehen, habe zwar wenig mit den PICs zu tun, aber man hätte zumindest mehr Anhaltspunkte.
Takt 20mhz und 30mA sind im normalbetrieb okay jedoch nicht im µSleep bereich. Code ist etwas zu lang schon. Aber vielleicht per email?
Hast du evtl. den Spannungsregler mitgemessen? Der 'schluckt' auch einiges im Leerlauf.
@gast: Um das Problem einzukreisen würde ich den Code erstmal (per Auskommentierung) so reduzieren, dass nichts anderes passiert als dass man definiert in den SLEEP-Modus kommt und diesen mittels Deiner Bedingung auch wieder verlassen kann. Das sind sicher nur ein paar Zeilen Code, die dann übrigbleiben. Dann würde ich feststellen ob der Controller sich tatsächlich im SLEEP-Modus befindet, z.B. mittels Messung des Taktes, und diesen auch wie gewünscht wieder verlässt. Wenn die beiden Zustände sicher sind, dann den Strom direkt in der VDD-Leitung zum Controller messen, natürlich ohne angeschlossenen Debugger und ohne externe Lasten zu treiben. Es gibt vermutlich auch bei den PICs verschiedene SLEEP-Modi mit unterschiedlichen Auswirkungen. Ich hätte ja gerne mal ins Datasheet geschau, aber scheinbar willst Du den genauen Controllertyp nicht verraten. :-)
also ich habe jetzt nur den sleep befehl laufen lassen und an allen Pins gemessen. Dabei ist mir aufgefallen das am OSC Pin 20mA getrieben werden. Der versuch fand auf einem EV. Board statt. Also der Quarz wird während er sleep ausführt mit 20mA versorgt. ?
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.