Hola:
Estoy comenzando a migrar al la familia dspic33e. Particulamente con el dspic33EP256MU806.
Como primer ejemplo estoy tratando de hechar a andar el dspic a 60 mips con un cristal de 10 MHz. Sin embargo cuando cargo el debugger (utilizo un pickit3)
Ese simplemente se resetea en la linea "__builtin_write_OSCCONL(0x01);".
Anexo el codigo haber si alguien me pude guiar a encontrar que he hecho mal. Como pueden ver este ejemplo esta basado en el family reference manual.
#include <p33EP256MU806.h>
#include "dsp.h"
#include "libq.h"
////////////////////////////////////////////////////////Fusibles de operacion/////////////////////////////////////////////////////////////
_FOSCSEL( FNOSC_FRC )//oscilador RC en incio
_FOSC( POSCMD_XT & FCKSM_CSECMD & OSCIOFNC_OFF & IOL1WAY_OFF )//cambio posterior a xtal con pll y multiples programaciones de pines IO
_FWDT( FWDTEN_OFF )//watchdog disabled
//
///////////////////////////////////////////////////////////MAIN///////////////////////////////////////////////////////////////////////
int main(void){
int a,b,c;
//Cambio de oscilador RC a xtal con PLL para operacion a 60 MIPS
// Configure PLL prescaler, PLL postscaler, PLL divisor
PLLFBD=46;// M = 48
CLKDIVbits.PLLPOST=0;// N2 = 2
CLKDIVbits.PLLPRE=0;// N1 = 2
// Initiate Clock Switch to Primary Oscillator with PLL (NOSC = 0b011)
__builtin_write_OSCCONH(0x03);
__builtin_write_OSCCONL(0x01);
// Wait for Clock switch to occur
while (OSCCONbits.COSC!= 0b011);
// Wait for PLL to lock
while(OSCCONbits.LOCK!=1) {};
/////////////////////////////////////////////// Aqui termina la conficuracion del dsPIC a 60 MIPS//////////////////////////////////////////
while(1){
a=5;
b=15;
c=a+b;
}
}