Sleep PIC18F4550

Hola a todos,
Vuelvo a escribiros para perfilar los ultimos ajustes de mi dispositivo Datalogger.
Para reducuir el consumo de este dispositivo, despues de realizar las tareas de adquisicion y almazenamiento de dados, me gustaria poner-lo en modo Sleep. Despertar-lo con la interrupcion de Timer1 cada segundo que funciona como RTC por oscilador externo. Consultar si tiene tareas pendientes, si es el caso realizarlas, y volver a bajo consumo (Sleep). Antes de dormir-lo y despues de despertarlo por interrupcion se configuran los registros necessarios para entrar el el modo necessario respectivamente.
Mi primera prueba, para simplificar el codigo, consiste en un programa que cada unterripcion de timer1 (cada segundo) voy cambiando el modo del dispositivo, Activo y sleep alternativamente. Para comprovar su validacion del modo sleep antes de ejecutar la instruccion Sleep() enciendo 3 leds del puerto D. Teoricamente, por mi conocimiento todos los perifericos y la CPU quedan inactivos en modo sleep. Así los leds del periferico del puerto D deberian apagarse. En mi caso no lo hacen porque?
Solo quedan apagador al despertar cuando el codigo lo impone.

Codigo:
(sleep es una variable que se activa antes de poner el PIC en Sleep y se desactiva al despertar)
...
if ((PIR1bits.TMR1IF)&&(PIE1bits.TMR1IE))
{
if(sleep)
{
OSCCONbits.IDLEN=1;
OSCCONbits.SCS0=0;
OSCCONbits.SCS1=0;
mLED_2_Off();
mLED_3_Off();
mLED_4_Off();
sleep=0;
}
else
{
mLED_2_On();
mLED_3_On();
mLED_4_On();
OSCCONbits.IDLEN=0;
sleep=1;
Nop();
Nop();
Sleep();
Nop();
Nop();
}
...

Mi preguntas son las siguientes:

Deben apagarse los leds activos del puerto D (al pertenecer a un periferico) al ejecutar un Sleep?
Como puedo comprovar que estoy en modo Sleep, sin tener que mirar la corriente de consumo del PIC?
Tiene algun error la configuracion de los registros o el modo de ejecutar la funcion Sleep en mi codigo?

Muchas gracias por su atencion.
Esperando respuesta
 
Atrás
Arriba