Autor Tema: Modo Sleep en Hi Tech y temporizadores  (Leído 1661 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Clemen89

  • PIC10
  • *
  • Mensajes: 30
Modo Sleep en Hi Tech y temporizadores
« en: 08 de Junio de 2012, 12:56:29 »
Hola

Tengo una duda sobre el compilador Hi tech, que es ¿como puedo poner el pic en sleep (bajo consumo)?, hasta hoy para hacer pruebas he utilizado al final de los programas un "while(1)" pero no se si eso lo traduce en sleep, también he visto una macro que es SLEEP(), no se si sera lo correcto.

Y otra duda, yo utilizo un cristal externo de 10MHz, y tengo que usar un temporizador en mi programa, ¿si esta en modo sleep el temporizador dejará de funcionar o al tener un cristal externo cuenta como reloj externo? Es que recuerdo que en clase nos insistían en esto, que si usabas el reloj interno en el temporizador no funcionarían las interrupciones de este cuando vayas al modo sleep porque deja de funcionar el reloj interno en modo sleep, pero no se si el cristal externo cuenta como reloj externo o simplemente sirve para cambiar la frecuencia de reloj.

Un saludo y muchas gracias como siempre estais siendo mi guia para el proyecto de final de carrera jeje

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Modo Sleep en Hi Tech y temporizadores
« Respuesta #1 en: 08 de Junio de 2012, 18:40:08 »
  Seguramente la macro SLEEP() genere el código asm necesario para entrar en modo sleep.

  En cuanto a lo del oscilador, debería estar detallado en el datasheet del pic en cuestión.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Palomino86

  • PIC16
  • ***
  • Mensajes: 180
Re: Modo Sleep en Hi Tech y temporizadores
« Respuesta #2 en: 09 de Junio de 2012, 12:52:53 »
Yo he utilizado el modo de bajo consumo en Hi Tech.....

efectivamente tienes que utilizar la funcion SLEEP(); pero previamente a esto tienes que configurar un modo para sacar al PIC del modo de bajo consumo, el cual puede ser una interrupción en RB0 y por un temporizador del Watchdog.

Yo utilizo un PIC16f88

y los registros asociados son:

SWDTEN  ---->  Sirve para habilitar o deshabilitar el software watchdog

PSA=1;  ---->  Habilita el postcale para el watchdog
PS2=1;  ---->  Postcaler watchdog
PS1=1;
PS0=1;

WDTPS3=1;  ---->  Prescaler watchdog
WDTPS2=0;
WDTPS1=0;
WDTPS0=1;


ejemplo:
Código: [Seleccionar]
SWDTEN=1; //Watchdog por software habilitado
SLEEP(); //Pone al MCU en modo de bajo consumo
SWDTEN=0; //Watchdog por software deshabilitado

previo al ejemplo ya debiste haber configurado el tiempo del sleep con los registros de postcaler y prescaler

Saludos
Lo que no me destruye, me fortalece


 

anything