Estoy haciendo una aplicación en la que enciendo algunos ws2812 LED con mi microcontrolador pic y quiero que hable con mi teléfono inteligente a través de bluetooth. Ahora, tengo el código para los LEDs de
y puedo iluminar los LED con los colores que quiero (a través de la codificación de un valor RGB) y por separado, puedo enviar un mensaje a mi teléfono (a través del terminal bluetooth) y mi microcontrolador recibe el mensaje completo (inspeccionado por el depurador ).
Sin embargo, el problema es cuando pongo los dos juntos. El código LED que obtuve requiere que se habilite el PLL, pero estoy descubriendo que cuando coloco la línea para habilitar el PLL
OSCTUNEbits.PLLEN=1;
el mensaje de recepción del microcontrolador se confunde.
Ya intenté encender y apagar el PLL después de que el microcontrolador recibe el mensaje, es decir,
//Receives the message from smart phone
for(i=0;i<10;i++){
while(!RCIF);
receiveArray[i]=RCREG;
}
//Turns on lights
OSCTUNEbits.PLLEN=1;
OSCCONbits.IRCF = 0b110;
SetAllRGB(0,0,100);
writePinMain(0);
DelayMs(5000);
OSCTUNEbits.PLLEN=0;
OSCCONbits.IRCF = 0b000;
Sin embargo, esto hace que los colores de los LED sean inexactos, lo que me lleva a creer que la frecuencia está desactivada o que el PLL se ha estropeado.
También debo tener en cuenta que el código se ejecuta en un XTAL_FREQ de 8MHz. Los bits de configuración no han cambiado en absoluto cuando cambié entre la iluminación LED y el código UART (comente uno u otro), así que no creo que los bits de configuración sean un problema, pero aparte de eso, me he quedado sin ideas sobre lo que podría causar esto.
¿Hay algo que no estoy viendo?