Hola amigos, estoy programando el microcontrolador para un proyecto que tengo y tengo un problema al inicializar el oscilador del microcontrolador, mi codigo es el siguiente:
void InitOsc(void)
{
WDTCTL = WDTPW | WDTHOLD; // Paramos el watchdog timer
BCSCTL1 |= XTS; // XT1 ~ high-frequency
_BIC_SR(OSCOFF); // turn on XT1 oscillator
do // wait in loop until crystal is stable
{
IFG1 &= ~OFIFG;
for (ii = 0xFFFF; ii > 0; ii--);
}
while (IFG1 & OFIFG);
BCSCTL1 |= DIVA1 | DIVA0; // ACLK = XT1 / 8 = 1 MHz
IE1 &= ~WDTIE; // desactiva WDT int.
WDTCTL = WDTPW | WDTTMSEL | WDTCNTCL | WDTSSEL | WDTIS1;
// use WDT as timer, flag each. 512 pulses from ACLK
IFG1 &= ~WDTIFG; // clear WDT int. flag
while ((IFG1 & WDTIFG)!=0); // cuenta 1024 pulsos XT1 <---Problema
IFG1 &= ~OFIFG; // clear osc. fault int. flag
DCOCTL |= DCO2 | DCO1 | DCO0;
BCSCTL1 |= RSEL2 | RSEL1 | RSEL0;// MCLK = DCO, 8 MHz (MCLK=Reloj de la CPU)
}
Y el problema se encuentra en el segundo while [while ((IFG1 & WDTIFG)!=0);] en donde se queda trabado y no se como haerle salir de ahi.
Espero que podais ayudarme amigos. Saludos!!!