TODOPIC
Microcontroladores PIC => dsPIC => Mensaje iniciado por: fram_22 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.
#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;
}
}
-
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!
-
Lo intentare haber que pasa.
saludos!
-
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
#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
-
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.
-
Hola MerLiNz:
tambien he intentado con ese ejemplo, es de dodne sque el mio y tengo el mismo problema. Empiezo a sospechar del dspic...
-
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() ?
-
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
-
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?
-
Hola por ejemplor el siguiente codigo funciona sin problemas
#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!!
-
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!
-
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);
-
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.
-
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...
-
Hola!
Efectivamente era el cristal. Lo he cambiado y comienza afuncionar.
Sin embargo pasa una cosa que me aprece extraña. Segun mis calculos no esta aguantando que lo lleve a mas de 37.5 MIPS (75 MHz).
El crista nuevo es de 20 MHz *de momento es el unico que he tenido a la mano y el cogido nuevo es el siguiente.
#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;
TRISE=0;
PORTE=0;
//Cambio de oscilador RC a xtal con PLL para operacion a 60 MIPS
// Configure PLL prescaler, PLL postscaler, PLL divisor
PLLFBD=28;// M = 30
CLKDIVbits.PLLPOST=0;// N2 = 2
CLKDIVbits.PLLPRE=2;// N1 = 4
// 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++;
c=a+b;
PORTE=c;
}
}
Cuando pongo valores mayores en el PLLFBD, es cuando el dsPIC deja de responder, pero ya es un avance.
saludos!
-
si, es logico que te de 75mhz, haz tu mismo las cuentas
osc*((M+2)/((N1+2)*(N2+2)))
osea 20*(30/8)=75
a cuanto lo quieres llevar? 60MIPS? 40MIPS??
para 60 seria:
120=20*((M+2)/(2*4));
120*8/20=M+2;
M=48-2=46;
para 40:
80=20((M+2)/(2*4));
80*8/20=M+2;
M=32-2=30;
A todo esto tienes que mirar que la frecuencia no sea menor que, o mayor que lo que te especifica el datasheet en cada paso, miralo por encima y veras a que me refiero, yo los calculos los he hecho de cabeza, pero no me he parado a ver si el PLL acepta los resultados o hay que cambiar los N1 y N2, se que el N1 esta bien, porque llega 5Mhz y eso si lo acepta.
-
si, es logico que te de 75mhz, haz tu mismo las cuentas
osc*((M+2)/((N1+2)*(N2+2)))
osea 20*(30/8)=75
a cuanto lo quieres llevar? 60MIPS? 40MIPS??
para 60 seria:
120=20*((M+2)/(2*4));
120*8/20=M+2;
M=48-2=46;
para 40:
80=20((M+2)/(2*4));
80*8/20=M+2;
M=32-2=30;
A todo esto tienes que mirar que la frecuencia no sea menor que, o mayor que lo que te especifica el datasheet en cada paso, miralo por encima y veras a que me refiero, yo los calculos los he hecho de cabeza, pero no me he parado a ver si el PLL acepta los resultados o hay que cambiar los N1 y N2, se que el N1 esta bien, porque llega 5Mhz y eso si lo acepta.
Hola Merlinz, gracias por tu respuesta:
La intencion es llevarlo a 60 MIPS.
Checando la hoja de datos. los rangos de frecuencia aceptados por el dsPIC son:
0.8 MHz<Fref<8 MHz (La frecuencia de entrada al PLL)
120 MHz<Fvco<340 MHz (Frecuenciad e salida del PLL)
Fosc<120 MHz (Frecuecnia del dspic)
Entonces para 60 MIPS se requiere:
N1=4 para que Fref sea =a 5 MHZ (PLLPRE=2)
M=48 para que Fvco sea = a 240 MHZ (PLLdiv=46)
N2=2 para que Focs sea = 120 MHZ (PLLpost=0)
Sin embargo si pongo valoes de PLLDIV mayores a 36 como en el ejemplo el dspic no responde, se resetea cuando intenta hacer el cambio de reloj.
Es por eso que solamente he podido llegar a ls 75 MHz que comentas. Lo cual aun no lo entiendo ya que los valores de frecuencia estan dentro de los rangos especificados por el datasheet. Esto no me cuadra del todo, espero que alguien tenga alguna idea de que sea lo que estoy haciendo mal.
saludos
-
Una cosa mas, he cambiado el codigo para arrancar inicialmente con el oscilador primario (_FOSC(FNOSC_PRI))
y he logrado subir un poco mas la freciuencia hasta 95 MHz, pero nuevamente cualquier intento de elevarlamas alla de este punto (PLLFBD>36) termina en fallo.
Checando la hoja de datos, aun tengo las frecuencias dentro de los rangos, asi que no se que esta ocurriendo.
Realmente estoy confundido con lo que esta pasando.
Anexo el nuev ocodigo.
saludos
#include <p33EP256MU806.h>
#include "dsp.h"
#include "libq.h"
void Init_Timer1( void );
////////////////////////////////////////////////////////Fusibles de operacion/////////////////////////////////////////////////////////////
_FOSCSEL( FNOSC_PRI )//oscilador primario sin PLL en incio
_FOSC( POSCMD_HS & 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){
TRISE=0;
PORTE=0;
//Cambio de oscilador RC a xtal con PLL para operacion a 60 MIPS
// Configure PLL prescaler, PLL postscaler, PLL divisor
PLLFBD=36;// M = 38
CLKDIVbits.PLLPOST=0;// N2 = 1
CLKDIVbits.PLLPRE=2;// N1 = 4
// 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//////////////////////////////////////////
Init_Timer1();
while(1){
}
}
/* ISR ROUTINE FOR THE TIMER1 INTERRUPT */
void __attribute__((interrupt,no_auto_psv)) _T1Interrupt( void )
{
LATEbits.LATE1 = !LATEbits.LATE1;
IFS0bits.T1IF = 0;
/* reset Timer 1 interrupt flag */
}
/*-----------------------*/
void Init_Timer1( void )
{
T1CON = 0; // Timer reset
IFS0bits.T1IF = 0; // Reset Timer1 interrupt flag
IPC0bits.T1IP = 6; // Timer1 Interrupt priority level=4
IEC0bits.T1IE = 1; // Enable Timer1 interrupt
TMR1= 0x0000;
PR1 = 6000; // Timer1 period register = 0.1 mS a 60 MIPS
T1CONbits.TON = 1; // Enable Timer1 and start the counter
}
-
puedes poner un esquema electrico de como conectas el pic? para frecuencias bajas he visto que no dan problemas por no poner condensadores, pero para frecuencias tan altas puede que necesite un buen filtrado y alimentacion, como minimo deberias poner la alimentacion tal y como pone en el datasheet.
-
puedes poner un esquema electrico de como conectas el pic? para frecuencias bajas he visto que no dan problemas por no poner condensadores, pero para frecuencias tan altas puede que necesite un buen filtrado y alimentacion, como minimo deberias poner la alimentacion tal y como pone en el datasheet.
Hola:
Anexo el esquema, tambien anexo una foto de la tarjeta donde tengo montado el dsPIC. La fuente es una fuente comercial de laboratorio (BK precision), asi que no sospecho mucho de ella, de todas formas la tarjeta cuenta con un capacitor extra de 1000 uf, asi no creo que sea el ruido o al menos no lo habia considerado, quizas sea el moneto de checar con mas detenimineto esto. Haber que opinas.
Saludos!
-
no cabia la foto asi que la pongo en este otro post
saludos
-
el problema es que para un filtrado correcto que pongas un capacitador grande no quiere decir que filtre mejor, para altas frecuencias se requieren condensadores con baja ESR (baja resistencia).
En el apartado 2.2 puedes ver lo minimo recomendado por microchip, como ves son 6 condensadores de 0.1uf (excepto el vcap que es mayor). Que tu pongas uno de 10uf no quiere decir que hagas lo mismo que 6 condensadores de 0.1uf, a altas frecuencias importa mas que la resistencia del capacitador sea la minima, antes que su capacidad, y poniendo 6 condensadores consigues que la resistencia de estos disminuya (como poniendo resistencias en paralelo). A 120Mhz creo que deberias respetar todo esto, incluso si tienes problemas de ruido recomiendan ponerle un segundo condensador en paralelo a los actuales de 0.01uf, ademas de que los condensadores deben estar lo mas cerca posible de los pines de alimentacion.
Prueba a ponerle unos cuantos condensadores mas, sobretodo el de VCAP, es el regulador interno del pic (por dentro el pic trabaja a 1.8V), y tambien ponerle a todos los pines de alimentacion su respectiva alimentacion, y su condensador.
-
Aclarar nada más que es conveniente hablar de impedancia a cierta frecuencia y no de resistencia ;-) fram_22, para más detalles, por ejemplo uno de los documentos que podes encontrar es el siguiente: http://www.freescale.com/files/microcontrollers/doc/app_note/AN2321.pdf
Saludos!
-
Hola
El capacitor que es utilizado con el regulador interno de 1.8 V ya esta puesto en la tarjta, creo que no se nota desde el angulo en que lo puse. faltaraan de poner los capacitores de desacople de 0.1 uf. Espero que terminen de solucionar el problema.
En cuanto tenga novedad lesw avizo. Muchas gras por esa informacion se me estaba pasando por completo.
saludos!
-
Hola!
Ya tengo novedades para reportar. He agregado los capacitores y tambien he cambiado la fuente.
Tenia una fuente conmutada comercial y la he cambiando por una fuente lineal BK precision. Pero no he tenido cambio alguno en el comportamiento del dsPIC.
Por otro lado, los de microchip finalmente me han respondido a la peticion de soporte soporte tecnico. (Despues de haber estado fuera de servicio por su fin de semana largo). Anexo la respuesta que me han dado por lo pronto.
I'm just starting to look at the issue, so I can't yet say for sure that this is the problem,
but it looks like you used the "MPLAB C30" directory libraries for your project.
These won't support dsPIC33E devices. You will need the libraries in the "mplabc30" directory.
Also, you should be using C30 v3.30c and MPLAB IDE v8.80.
I would suggest using the default library locations rather than specifying them.
Also, I see references to COFF and ELF libraries; you should be using ELF as we go forward.
He checado mis versiones de MPLAB y C30. Ambas son correctas (8.8 y 3.30c)
Lo que me saca un poco de onda es lo que mencionan del directorio "mplabc30" en lugar de "MPLAB C30".
He buscado por todos lados y no logro encontrar el dichoso directorio que me mencionan. Alguien me podria hacer el favor de señalarme a que se refieren?
Tambien les anexo mi proyecto en caso de que alguien quiera jugar con el.
Les agradesco su ayuda e interes.
saludos!
-
Hola:
Bueno finalmente he logrado hacer que funcione el dspiC a 60 MIPS!.
Utilizé el ejemplo de cambio de reloj de microchip y lo modifique para funcionar a 60 MIPS.
El cristal que utilizo es de 8 MHz. Aparentemente estaba usando cristales de mala calidad o algo asi.
Quiero aprovechar para agradecer por la ayuda que me brindaron.
Espero a alguien le sirva el proyecto por si se animan a empezar con los dsPIC33E.
Saludos!
-
parte dos del archivo.
Por cierto si algun moderador pudiera agregar la palabra resuelto al tema, se los agradeceria.
saludos!
-
Entonces fue el cristal que estaba malo :?.
Ya me llegan pic24E esperame ;-).
-
Entonces fue el cristal que estaba malo :?.
Ya me llegan pic24E esperame ;-).
si como siemrpe resulto ser una tonteria. Pero bueno a la roxime tendre mas cuidado con el material reciclado.
cuando te lleguen los pic24e, si te puedo ayudar en algo no dudes en preguntar!
-
Entonces fue el cristal que estaba malo :?.
Ya me llegan pic24E esperame ;-).
si como siemrpe resulto ser una tonteria. Pero bueno a la roxime tendre mas cuidado con el material reciclado.
cuando te lleguen los pic24e, si te puedo ayudar en algo no dudes en preguntar!
No lo dudo, te preguntaré ;-)
saludos!!
-
Hoy he estado probando con un dspic33ep512mu810 y tambien se me quedaba pillado al cambiar a 40MIPS, tengo 2 placas iguales una con condensadores y otra sin, la de sin condensadores se me queda pillada al hacer el cambio de velocidad, la que tiene condensadores (ceramicos y de tantalo) llega hasta los 60MIPS sin problema, todo con el oscilador interno.
La que no tiene condensadores a 20MIPS va bien, pero si lo subes de eso se queda bloqueado en el cambio de oscilador.
__builtin_write_OSCCONH(0x01);
__builtin_write_OSCCONL(0x01);
---> AQUI
while (OSCCONbits.COSC!= 0b001);
Es curioso saber que por una tonteria te puedes volver loco xD
-
Si estoy de acuerdo.
La electronica es sumamente temperamental cuando no se tiene el cuidado pertinente con el ruido.
-
buenas tengo una pregunta, yo genere mi .hex con mikroc pero al entrar al pickit3 standalone no veo el 33ep256mu806, como haría para grabarlo, gracias
-
Hola, en el soft del pickit3 V1.0.0 no esta incluido. Deberás hacer el código en mplab y desde alli si lo puedes grabar con el pickit3.
saludos
-
ah ok, gracias, pero el codigo lo tengo hecho como mencione en mikroc, se podria cargar el hex en mplab?
-
si se puede, por lo menos en el mplab (sin X) se podia
-
saludos he hecho un programa sencillo para prender y apagar un led con mikroc, luego he cargado el .hex generado al mplabx y cuando intento grabar con el pickit 3 me arroja esto
*****************************************************
Connecting to MPLAB PICkit 3...
Firmware Suite Version.....01.27.04
Firmware type..............dsPIC33E/24E
Target device was not found. You must connect to a target device to use PICkit 3.
agradezco cualquier sugerencia
-
Eso lo dice cuando el pic no esta alimentado, utilizas una fuente externa? O utilizas el mismo pickit como fuente?
-
mas que no estar alimentado dice que no se ha detectad el dispositivo.
Esto puede ser por falta de alimentación como menciona merlinz o porque alguna de las terminales del pickit no esta haciendo contacto.
-
gracias era eso, no tenia la fuente conectada, pero ahora que la conecte tampoc quiere programar, me arroja esto: Target Device ID (0x0) does not match expected Device ID (0x18610000).
tengo una resistencia de 330 a vcc en el pin 7, vcc en el pin 10, gnd en el pin 9, cristal en el pin 40 y 39, capacitor de 10uf en el pin 56, y el pin 35 a vcc, vcc es de 3,10v
-
no te puedo decir bien, pero quizas necesitas conectar todos los vdd y los vss, ademas de tambien conectar el avdd (19) y avss (20), la resistencia de mclr deberia ser de 4.7kohm segun microchip
-
listo, solo le conecte el avss y el avdd y sustitui la resistencia, tambien aumente la fuente a 3.7v y lo programe esta vez con MPLAB IPE, se programa igual que con el pickit standalone, solo debo cargar el hex
-
saludos, tengo otra duda, he hecho un programa simple para encender y apagar leds pero he visto que no todos los puertos responden como quiero, es decir si pongo 1 en la programacion el puerto sigue estando en cero, aclarenme si me hace falta configurar algo mas aparte de los tris
esto es lo unico que tengo configurado
CORCONbits.IPL3=0; //CPU interrupt priority level is 7 or less
SRbits.IPL=0; //CPU Interrupt Priority Level is 0 (8)
INTCON1bits.NSTDIS=1; //Interrupt nesting is disabled
INTCON2bits.GIE=0; //Interrupts are disabled, but traps are still enabled
TRISFbits.TRISF4=1; //s0
TRISFbits.TRISF5=1; //s1
TRISDbits.TRISD5=0; //a0
TRISFbits.TRISF1=0; //a1
TRISDbits.TRISD1=0; //a2
TRISCbits.TRISC13=0; //a3
TRISDbits.TRISD9=0; //a4
TRISEbits.TRISE4=0; //o1
TRISDbits.TRISD3=0; //o2
TRISDbits.TRISD10=0; //o3
estoy usando mikroc for dspic 5.70, saludos
-
el TRIS es para elegir si el puerto es de entrada o salida, para cambiar el estado lo tienes que poner como salida (0) y luego PORTx.Rxn=1 para que sea 1 y =0 para 0.
-
exactamente asi lo hago pero el puerto no me hace caso, por ejemplo el rd11 y rd0
-
tienes el ANSELC=0; ?? Yo he tenido problemas por esto muchas veces, es la seleccion de puertos analogicos.
-
No se usan los registros LAT?
-
Tengo un pic24EP512GU810 configurado como sigue:
FRC : 7.37 OSCTUN = 0
N1 : 2
N2 : 2
M : 94
Segun calculos
Fosc = Fin*(M/N1*N2) = 7.37*(94/2*2) = 173.195 Mhz = 86.5975 MIPS
Mas rápido que un pic32.
Y el micro va trabajando bien, no presenta calentamiento ni nada. 8) 8)
Seguiré trabajando y probando los diferentes módulos que necesito por si encuentro algo y deba reducir a 70 MIPS nominales.
saludos!!!
-
Yo también estoy empezando, o eso quisiera, con el 33EP256MU806, pero no hay manera de que me funcione. El pickit3 no lo detecta nunca, o me da un código 0 o me da uno que no es el esperado. Los micros son pedidos a microchip como samples. El condensador de tántalo que recomienda el datasheet he probado con diferentes valores, ya que no tengo de ese valor exacto por casa. Puede que sea eso, lo que provoca que no funcione? Los demás condensadores de 0,1 uF sí que estan todos, así como las alimentaciones y gnds. Lo probé en una placa hecha por mi y en un acaptador comprado de tqfp a thru-hole, pero no consigo que funcione funca.
Fram_22, tu que hace tiempo que usas este micro, crees que es por no usar el condensador de tántalo del valor exacto?
-
Si te refieres al condensador que va en Vcap, yo uso electrolitico de 10 uF comun y corriente, ese me funciona con los pic24F, pic24HJ, pic24EP, pic32.
Verifica que la conexion de programación sea la correcta y no olvides la resistencia de 10K entre MCLR y VCC (3volt). Esto a mi me hacia que no reconozca el chip.
Saludos.
-
buenas, ¿alguien podría orientarme acerca de la conexión usb para este dspic?, específicamente cdc o hid, gracias de antemano
-
buenas, ¿alguien podría orientarme acerca de la conexión usb para este dspic?, específicamente cdc o hid, gracias de antemano
http://ww1.microchip.com/downloads/en/DeviceDoc/S25.pdf.
saludos
-
buenas ya lei eso pero no explican como debo configurarlo para trabajarlo en algun modo ni tampoco que debo hacer para obtener el driver para la pc
-
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2651¶m=en534494
-
saludos alguien podria poner por favor algun codigo basico para el uso del usb, ya que he leido los ejemplo de microchip pero no los entiendo, gracias