Hasta ahora he trabajado con muchos otros microcontroladores pero no con la familia PIC. Estoy teniendo problemas para despertarme del sueño mediante el watchdog en un PIC10F200. Lo estoy programando en C usando el MPLAB X IDE v2.35. Todas las funciones y macros son parte de las bibliotecas de línea de base de microchip para el procesador.
Aquí hay un ejemplo mínimo de cuál es mi problema:
#include <xc.h>
#pragma config CP = OFF // Code protection off
#pragma config MCLRE = OFF // GP3/MCLR pin fuction is digital I/O
#pragma config WDTE = ON // Watchdog Timer enabled
#define _XTAL_FREQ 4000000
void main(void) {
OPTION = 0 | nGPWU | nGPPU & ~T0CS & ~T0SE | PSA | PS2 | PS1 | PS0; // bits: 7: no wake-up on pin change; 6: no weak pullups; 5: internal clock; 4: incremnt low to high; 3: prescale on wdt (Timer0 if cleared); 2-0: clock division by 128
TRISGPIO = 0b00000000; // set all to output
while(1) {
GP0 = 1; GP1 = 1; GP2 = 1; SLEEP(); // set all high and sleep a bit
GP0 = 0; GP1 = 0; GP2 = 0; SLEEP(); // set all low and sleep a bit
}
}
Básicamente, este es un ejemplo clásico de pin-toggle (parpadeo del LED) que usa el perro guardián. Sólo los pines son altos todo el tiempo. ¿Qué hice mal?