Autor Tema: leer el reset  (Leído 2914 veces)

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

Desconectado simon365

  • PIC10
  • *
  • Mensajes: 16
leer el reset
« en: 12 de Septiembre de 2008, 12:55:19 »
Hola a todos:
                  Como puedo usar las funciones de lectura de reset en un 12f508?Estoy aplicando la sleep(), y quiero atender la interrupcion por cambio en los pin, luego de un reset por sleep.Pero no logro aplicar las constantes en el .h.
Agradeceria la ayuda, ya q termine un proyecto y deseo cambiar a este micro.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: leer el reset
« Respuesta #1 en: 12 de Septiembre de 2008, 14:17:39 »
que tal simon265,

No logro entender bien tu duda con eso de leer el Reset.  Te refieres a utilizar el pin del MCLR como un pin de entrada ya que ahi estas conectando un pulsador?

Si es asi, lo que tienes que hacer es que al momento de programar el micro debes indicarle en lo fusibles que MCLR es interno, es decir habilitar ese pin como puerto de entrada.

Seria bueno que pudieras explicarte un poquito mejor y si te es posible tambien colocar el codigo.

Saludos.

Elreypic.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: leer el reset
« Respuesta #2 en: 12 de Septiembre de 2008, 15:01:10 »
Hola.

O sera a caso que quieres usar la funcion RESTART_CAUSE() ????

Saludos
El papel lo aguanta todo

Desconectado simon365

  • PIC10
  • *
  • Mensajes: 16
Re: leer el reset
« Respuesta #3 en: 12 de Septiembre de 2008, 16:45:26 »
Lo q trato de hacer en CCS es por medio de pulsadores leer las interrupciones previamente habilitadas en el OPTION bit 7 y sacarlo del sleep, al f508.Leyendo el .h busque la funcion q podria leer como en el caso del F84 #RB pero no logro dar en la tecla.

////////////////////////////////////////////////////////////////// Control
// Control Functions:  RESET_CPU(), SLEEP(), RESTART_CAUSE()
// Constants returned from RESTART_CAUSE() are:
#define WDT_FROM_SLEEP  3     
#define WDT_TIMEOUT     11   
#define MCLR_FROM_SLEEP 19   
#define MCLR_FROM_RUN   27   
#define NORMAL_POWER_UP 24   
#define BROWNOUT_RESTART 26   

/ Watch Dog Timer Functions: SETUP_WDT() or SETUP_COUNTERS() (see above)
//                            RESTART_WDT()
//

#define WDT_18MS        0x8000   
#define WDT_36MS        9   
#define WDT_72MS       10   
#define WDT_144MS      11   
#define WDT_288MS      12   
#define WDT_576MS      13   
#define WDT_1152MS     14   
#define WDT_2304MS     15   

#define DISABLE_PULLUPS            0x40  // for 508 and 509 only
#define DISABLE_WAKEUP_ON_CHANGE   0x80  // for 508 and 509 only
#ifndef PIN_CHANGE_FROM_SLEEP
#define PIN_CHANGE_FROM_SLEEP      0x90  // for 508 and 509

Como se utilizan estas funciones y constantes ? Para aplicarlas a otros programas.
En el programa con el F84 hago sleep y espero una interrup. por el pin 4-7 del ptob.Cuando ocurre leo por medio de la constante #RB, y continuo la rutina hasta volver al prog ppal.
Espero q me entiendan claro.
MLO_ podría ser la funcion RESTART_CAUSE.


Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: leer el reset
« Respuesta #4 en: 12 de Septiembre de 2008, 17:13:24 »
Hola.

Las constantes:

Código: [Seleccionar]
#define WDT_TIMEOUT       7   
#define MCLR_FROM_SLEEP  11   
#define MCLR_FROM_RUN    15   
#define NORMAL_POWER_UP  12   
#define BROWNOUT_RESTART 14   
#define WDT_FROM_SLEEP   3     
#define RESET_INSTRUCTION 0

se usan con la funcion de control RESTART_CAUSE(), de tal manera que si lo colocas al inico del programa puedes saber por cual de las situaciones se reseteo el pic, por ejemplo:

Código: [Seleccionar]
void main (void)
{
 switch ( restart_cause() ) {

   case WDT_FROM_SLEEP: ..// codigo a realizar si el reset fue por esta causa
   case WDT_TIMEOUT: .. // codigo a realizar si el reset fue por esta causa
   ....
  }
}

Creo que el micro sale del modo sleep al activarse el flagg de la interrupcion.
Saludos
El papel lo aguanta todo

Desconectado simon365

  • PIC10
  • *
  • Mensajes: 16
Re: leer el reset
« Respuesta #5 en: 12 de Septiembre de 2008, 18:18:33 »
gracias MLO_, lo habia hecho pero lo colocaba luego de la sleep por eso no me andaba.Lo estoy haciendo correr luego te cuento.

Desconectado simon365

  • PIC10
  • *
  • Mensajes: 16
Re: leer el reset
« Respuesta #6 en: 14 de Septiembre de 2008, 00:12:28 »
Hoy termine!!!!!!! Luego de luchar con el viejo 12C508JW pude pasar el codigo del f84 a este.La aplicacion de la lectura de la causa del reset anda de 10.En lo ultimo q tuve problema es q para activar en alto una salida debi cambiar de bit_set a output_high sino no salia el dato.Lo dejo  como ayuda si a alguien le pasa, use el  standard_io(B) para definir el puerto.
Gracias  y saludos a todos.