Con respecto a cambiar los bits de OSCCON, cuando estan bloqueados asi y se necesita un procedimiento para desbloquearlos, XC provee algunas funciones como:
void __builtin_write_OSCCONH(unsigned char value);
void __builtin_write_OSCCONL(unsigned char value);
Ya estan incorporados al compilador, asi que si por ejemplo quisiera poner el primer byte con el valor 0x01 haria simplemente:
__builtin_write_OSCCONL(0x01);
O si quisieras que hacer un OSCCON = 0xF82C
__builtin_write_OSCCONH(0xF8);
__builtin_write_OSCCONL(0x2C);
Esto lo podes ver en:
http://ww1.microchip.com/downloads/en/DeviceDoc/50002071E.pdfXC16 User Manual, en la seccion de Built-in functions
---------------------------
Ahora con respecto a CPDIV te tengo la solucion:
PIC24F Family Reference Manual”, Section 6. “Oscillator”- Pagina 6-20
http://ww1.microchip.com/downloads/en/DeviceDoc/39700c.pdfNote 1: These options are not compatible with USB operation. They may be used whenever the PLL branch is selected and the USB module is disabled.
Se refiere a las opciones para cuando el clock es de 8Mhz y 4 Mhz, es decir CPDIV en 10 y 11 , deberas seleccionar una velocidad mayor, es decir 16Mhz (01) o 32Mhz (00). El cual no veo inconveniente al seleccionar estas velocidades.
----------------------------
Una cosa para aprender de microchip:
Saliendo de los PIC16 y PIC18, es decir:
dsPIC , PIC24, PIC32, el datasheet es un "resumen" del PIC, y cada modulo posee su propio PDF, odio cuando ocurre asi, pero es asi.