TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: cgraciae en 12 de Junio de 2007, 15:39:15

Título: Salir de SLEEP con WDT
Publicado por: cgraciae en 12 de Junio de 2007, 15:39:15
 :-/Estoy programando en CCS un 16F737. Necesito leer unas magnitudes AD cada 20 segundos con un micro alimentado con una pila, por lo que me gustaría reducir su consumo utilizando la instrucción sleep(). El problema es que no sé como despertar al micro con el WDT y seguir con el programa donde ha quedado. ¿Alguien puede ayudarme?
Título: Re: Salir de SLEEP con WDT
Publicado por: vszener en 15 de Junio de 2007, 18:49:45
'Mete' al pic en el sleep y se desbordará el WDT, a continuación, ejecutará la instrucción después del sleep.


Suerte!!! ;)
Título: Re: Salir de SLEEP con WDT
Publicado por: chupy en 06 de Agosto de 2008, 22:06:05
tengo entendido que se resetea no? despues que desborda el wdt
Título: Re: Salir de SLEEP con WDT
Publicado por: MLO__ en 06 de Agosto de 2008, 22:46:01
Hola.

Si se usa la interrupcion del ADC directamente saldra del modo sleep no?

Saludos
Título: Re: Salir de SLEEP con WDT
Publicado por: Gonzalo_BlackHawk en 07 de Agosto de 2008, 16:19:35
Hola a todos. Aca tienes que utilizar la interrupcion del timer para lograr que el micro se despierte cada 20 segundos. El WDT
no serviria en este caso porque no es posible alcanzar semejante intervalo de temporización, en general para los 16F es de 2034 ms o 2 seg, aunque no conozco a fondo el 16F737. El seudocogido sería:
Código: [Seleccionar]
Configurar timer

Habilitar interrupción del timer

while(1){
   read_adc()
   sleep()
   delay_cycles(1)
}

Estoy apurado, en otro momento te posteo algun código que tengo almacenado por ahi.

Saludos!
Título: Re: Salir de SLEEP con WDT
Publicado por: reiniertl en 08 de Agosto de 2008, 22:28:43
Utiliza la cobinación TMR1 con reloj externo, te haces una red RC y completas el oscilador externo para que se desborde cada cierto tiempo (creo que 20 s es un tiempo bastante largo, pero bueno). Una vez despierto el uC, comenzaría a trabajar en la instrucción posterior al sleep, pero con el WDT no funcionará.

Tambié puedes hacer un circuito de wake-up con un 555 en configuración astable y conectarlo a INT (típicamente RB0) y con eso si el PIC está soñando el 555 lo despertará más o menos en el tiempo en que hayas diseñado este circuito.

Saludos
Reinier