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
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
////////////////////////////////////////////////////////////////// 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.