@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. :-)