Autor Tema: uso de RESTART_CAUSE()  (Leído 2818 veces)

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

Desconectado berlanga

  • PIC10
  • *
  • Mensajes: 5
uso de RESTART_CAUSE()
« en: 26 de Agosto de 2010, 15:20:58 »
muy buenas a todos. primero presentarme ya que estoy recién registrado, aunque me haya estado metiendo por aqui desde hace un par de semanas. Primero decir que soy nuevo con ccs aunque en assembler llevaba programando varios años. Me dió la cosa de hacerlo en c por eso de aprender y aquí estoy... preguntando... XDD

en estos devaneos y visto que hay una instrucción que devuelve el motivo del reset me pareció útil el ver cómo funcionaba, a mano solo tengo un 16F84. al hacer un pequeño programita y llevarlo a proteus funciona perfecto. si el reset es por alimentacion me enciende un led, y si es por un pulso bajo en MCLR me enciende otro.

el problema viene al llevarlo al PIC, que me detecta ambos casos como si fueran un pulso bajo por MCLR...

si alguien fuera tan amable de explicarme eso (decir que he mirado el data y no le veo el fallo, ya no se si es que estoy obcecado o es que soy un inutil.. XD)

os pongo un ejemplo

Código: [Seleccionar]
void main ()
{
     set_tris_b(0x00);

     int reinicio=0;
     reinicio = restart_cause();

     if(reinicio == NORMAL_POWER_UP){
          output_high(pin_b0);
     }
     else if (reinicio == MCLR_FROM_RUN){
          output_high(pin_b1);
     }

}


y extracto de la libreria del 16f84

Código: [Seleccionar]
////////////////////////////////////////////////////////////////// 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 25    
#define BROWNOUT_RESTART 26  

antes de nada muchas gracias por la ayuda que me podáis prestar. y decir que sois la leche... este foro me ha ayudado muchísimo a la hora de empezar y aclarar dudas.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: uso de RESTART_CAUSE()
« Respuesta #1 en: 27 de Agosto de 2010, 09:03:32 »
Hola.

Una pregunta: Como hiciste para quitar la alimentación del PIC en el ISIS?

Saludos
El papel lo aguanta todo

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: uso de RESTART_CAUSE()
« Respuesta #2 en: 27 de Agosto de 2010, 10:52:11 »
Le pones una tecla entre el pin y la alimentacion...
Antes debes entrar en las propiedades del pic y activar las casillas de mostrar todos los pines.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: uso de RESTART_CAUSE()
« Respuesta #3 en: 27 de Agosto de 2010, 15:43:10 »
Antes debes entrar en las propiedades del pic y activar las casillas de mostrar todos los pines.

Gracias  ;-)
El papel lo aguanta todo

Desconectado berlanga

  • PIC10
  • *
  • Mensajes: 5
Re: uso de RESTART_CAUSE()
« Respuesta #4 en: 28 de Agosto de 2010, 15:38:19 »
Hola.

Una pregunta: Como hiciste para quitar la alimentación del PIC en el ISIS?

Saludos

la verdad que no pensé en eso. lo hago directamente al arrancar la simulación. y lo hace bien. la funcion restart cause te devuelve el NORMAL_POWER_UP y cuando lo haces apretando un pulsador en reset te devuelve el MCLR_FROM_RUN.

el problema viene al ir al pic, que toma todos como un MCLR_FROM_RUN ya sea quitandole la alimentación o haciendole un reset...