Autor Tema: dspic 33ep256mu806 no engancha con PLL (SOLUCIONADO)  (Leído 24224 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
dspic 33ep256mu806 no engancha con PLL (SOLUCIONADO)
« en: 23 de Noviembre de 2011, 12:56:32 »
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.

Código: [Seleccionar]
#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;
}
}
« Última modificación: 09 de Diciembre de 2011, 00:34:27 por fram_22 »

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: dspic 33ep256mu806 no engaarranca con PLL
« Respuesta #1 en: 23 de Noviembre de 2011, 13:23:39 »
Y si probas usando el oscilador primario pero sin PLL, y luego pasar al realizar el cambio? O sea, habría que cambiar el fuse FNOSC_FRC por FNOSC_PRI. Arrancaría con 5 MIPS y después pasaría a 60MIPS (con M = 48).


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
Re: dspic 33ep256mu806 no engaarranca con PLL
« Respuesta #2 en: 23 de Noviembre de 2011, 14:09:05 »
Lo intentare haber que pasa.
saludos!

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
Re: dspic 33ep256mu806 no engaarranca con PLL
« Respuesta #3 en: 23 de Noviembre de 2011, 14:15:23 »
Hola suki:

He hecho el cambio pero sigo con la misma falla. En el momento que realizo el cambio al cristal con PLL el dspic simplemente se resetea. anexo el codigo con el cambio y el error que muestra el debugger al llegar a aeste punto. Es posible que sea un daño del dsPIC?

saludos

Código: [Seleccionar]
#include <p33EP256MU806.h> 
#include "dsp.h"
#include "libq.h"

////////////////////////////////////////////////////////Fusibles de operacion/////////////////////////////////////////////////////////////
_FOSCSEL( FNOSC_PRI )//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(0x23);
__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;
}
}


error:

Stepping target failed
« Última modificación: 23 de Noviembre de 2011, 14:26:46 por fram_22 »

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: dspic 33ep256mu806 no engaarranca con PLL
« Respuesta #4 en: 23 de Noviembre de 2011, 14:52:57 »
el ejemplo que viene en la seccion es este, 60mips con 10mhz:

// Select Internal FRC at POR
_FOSCSEL(FNOSC_FRC);
// Enable Clock Switching and Configure POSC in XT mode
_FOSC(FCKSM_CSECMD & OSCIOFNC_OFF & POSCMD_XT);
int main()
{
// 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) {};
}

solo cambia un fuse, quitalo quizas sea eso.
« Última modificación: 23 de Noviembre de 2011, 14:55:10 por MerLiNz »

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
Re: dspic 33ep256mu806 no engaarranca con PLL
« Respuesta #5 en: 23 de Noviembre de 2011, 15:20:02 »
Hola MerLiNz:

tambien he intentado con ese ejemplo, es de dodne sque el mio y tengo el mismo problema. Empiezo a sospechar del dspic...

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: dspic 33ep256mu806 no engaarranca con PLL
« Respuesta #6 en: 23 de Noviembre de 2011, 15:28:10 »
tienes el cristal bien conectado y tal no?? Puede que tambien sea el cristal, o que no tengas bien filtrada la alimentacion y en el momento de pasar a 60MIPS se resetea, has probado a poner por ejemplo 20MIPS?? O usar otro cristal de 4Mhz por ejemplo??

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: dspic 33ep256mu806 no engaarranca con PLL
« Respuesta #7 en: 23 de Noviembre de 2011, 16:22:33 »
Y sin realizar el debug prendiendo unos leds en el while() ?
No contesto mensajes privados, las consultas en el foro

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
Re: dspic 33ep256mu806 no engaarranca con PLL
« Respuesta #8 en: 23 de Noviembre de 2011, 18:48:39 »
tienes el cristal bien conectado y tal no?? Puede que tambien sea el cristal, o que no tengas bien filtrada la alimentacion y en el momento de pasar a 60MIPS se resetea, has probado a poner por ejemplo 20MIPS?? O usar otro cristal de 4Mhz por ejemplo??
Y sin realizar el debug prendiendo unos leds en el while() ?
intentare ambas cosas haber como se comporta, deseenme suerte

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
Re: dspic 33ep256mu806 no engaarranca con PLL
« Respuesta #9 en: 24 de Noviembre de 2011, 16:44:08 »
Hola he intentado lo de los leds y nada. Ya cambie el dsPIC y sigue igual.
He provado el codigo proveido por Merlinz y me depliega el siguiente error:

RIErr0031: Failed to get PC

estoy complentamente sacado de onda. Alguiene tiene otra idea?

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
Re: dspic 33ep256mu806 no engaarranca con PLL
« Respuesta #10 en: 24 de Noviembre de 2011, 16:48:32 »
Hola por ejemplor el siguiente codigo funciona sin problemas

Código: [Seleccionar]
#include <p33EP256MU806.h> 
#include "dsp.h"
#include "libq.h"

////////////////////////////////////////////////////////Fusibles de operacion/////////////////////////////////////////////////////////////
_FOSCSEL( FNOSC_PRI )//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(0x23);
//__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;
}
}

el problema surgue cuando soicito el cambio de reloj. Cr4eo que tendre que seguir intentando con mas cosas

saludos!!

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: dspic 33ep256mu806 no engaarranca con PLL
« Respuesta #11 en: 24 de Noviembre de 2011, 17:05:30 »
El problema está que no tiene grandes variaciones la configuración, y si no funciona  :2] Tendrías que revisar el ASM que se genera, hilar más fino  :tongue:


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: dspic 33ep256mu806 no engaarranca con PLL
« Respuesta #12 en: 24 de Noviembre de 2011, 18:08:06 »
prueba a arrancar con el cristal interno a 40MIPS por ejemplo, quizas tu problema este en el cristal

_FOSCSEL(FNOSC_FRC);
_FOSC(FCKSM_CSECMD & OSCIOFNC_OFF & POSCMD_XT);

   OSCTUN=0x12; //8Mhz INT
   CLKDIVbits.FRCDIV=1; //4Mhz
   CLKDIVbits.PLLPRE=0; //2
   CLKDIVbits.PLLPOST=0; //2
   PLLFBD=78; //x80
   CLKDIVbits.DOZEN=0; //1:1

   __builtin_write_OSCCONH(0x01);
   __builtin_write_OSCCONL(0x01);
   while (OSCCONbits.COSC!= 0b001);
   while (OSCCONbits.LOCK!= 1);

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
Re: dspic 33ep256mu806 no engaarranca con PLL
« Respuesta #13 en: 24 de Noviembre de 2011, 19:28:02 »
prueba a arrancar con el cristal interno a 40MIPS por ejemplo, quizas tu problema este en el cristal

_FOSCSEL(FNOSC_FRC);
_FOSC(FCKSM_CSECMD & OSCIOFNC_OFF & POSCMD_XT);

   OSCTUN=0x12; //8Mhz INT
   CLKDIVbits.FRCDIV=1; //4Mhz
   CLKDIVbits.PLLPRE=0; //2
   CLKDIVbits.PLLPOST=0; //2
   PLLFBD=78; //x80
   CLKDIVbits.DOZEN=0; //1:1

   __builtin_write_OSCCONH(0x01);
   __builtin_write_OSCCONL(0x01);
   while (OSCCONbits.COSC!= 0b001);
   while (OSCCONbits.LOCK!= 1);
Tambien he intentado eso y sigue la misma falla se queda colgado ene l momento de realizar el cambio de oscilador.
Tambien probe el ejemplo que viene en el family referencia manual con oscilador externo y7 pasa exactamente lo mismo. Sera que en esta familia se tiene que escribir de forma diferente al OSCCON? SIgo leyendo al respecto haber qu8e encuentro.

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
Re: dspic 33ep256mu806 no engaarranca con PLL
« Respuesta #14 en: 24 de Noviembre de 2011, 19:28:31 »
El problema está que no tiene grandes variaciones la configuración, y si no funciona  :2] Tendrías que revisar el ASM que se genera, hilar más fino  :tongue:


Saludos!
Comienzo a considerar seriamente esa alternativa...