TODOPIC

Microcontroladores PIC => dsPIC => Mensaje iniciado por: fdinezza en 28 de Marzo de 2011, 23:38:00

Título: programar DSPIC33FJ128MC802 con CCs
Publicado por: fdinezza en 28 de Marzo de 2011, 23:38:00
Hola:

Estoy haciendo un proyecto y necesito pasar un soft escrito para el 18f2523 al DSPIC33FJ128MC802, pero en CCS se me esta haciendo impposible configurar el reloj a 8o MZ (40 Mips).
El proyecto es simple leeun encoder y testea dos analógicos cada 1 ms.

Si alguien me puede dar una mano desde ya Gracias!!

Fernando
 
Título: Re: programar DSPIC33FJ128MC802 con CCs
Publicado por: fram_22 en 29 de Marzo de 2011, 02:33:19
no te resultaria mas facil hacerlo en c30? ahi no es tan complicado configurar el oscilador

saludos
Título: Re: programar DSPIC33FJ128MC802 con CCs
Publicado por: fdinezza en 31 de Marzo de 2011, 00:45:57
El problema es que mi conocimientos se limitan al CCS y necesito hacer andar un programa simple.

No puedoo hacer que funcione a la velocidad que necesito.

 
Título: Re: programar DSPIC33FJ128MC802 con CCs
Publicado por: Nocturno en 31 de Marzo de 2011, 01:29:37
¿Porqué no usas el Project Wizard de CCS?, así te saldrá automáticamente ya hecha toda la parte de configuración.
Título: Re: programar DSPIC33FJ128MC802 con CCs
Publicado por: Suky en 31 de Marzo de 2011, 01:30:20
El problema es que mi conocimientos se limitan al CCS y necesito hacer andar un programa simple.

No puedoo hacer que funcione a la velocidad que necesito.

 

Toma el datasheet del dsPIC, y en la sección de oscilador podes ver que registros modificar para setear el PLL, luego defines los registros mediante #WORD y escribes los valores que corresponde  :?

Saludos!
Título: Re: programar DSPIC33FJ128MC802 con CCs
Publicado por: fdinezza en 01 de Abril de 2011, 23:37:51


He copiado este programa de una discución anterior para buscar la manera de que funcione el reloj y pueda hacer parpadear el led, pero lo único que consigo en el osciloscopio, es un pico de de 1 us cada 15 us.

El circuito tienen un xtal de 8mhz.

Gracias de antemano,

Fernando

Código: CSS
  1. #include "33FJ128MC802.h"
  2.  
  3.  
  4. #FUSES PR_PLL, XT, NOWDT, NOPUT //Orig
  5.  
  6. #WORD CLKDIV = 0x0744   //PLLPOST(6,7) - PLLPRE(0,1,2,3,4)
  7. #BIT PLLPOST_1 = CLKDIV.6
  8. #BIT PLLPOST_2 = CLKDIV.7
  9.  
  10. #BIT PLLPRE_1 = CLKDIV.0
  11. #BIT PLLPRE_2 = CLKDIV.1
  12. #BIT PLLPRE_3 = CLKDIV.2
  13. #BIT PLLPRE_4 = CLKDIV.3
  14. #BIT PLLPRE_5 = CLKDIV.4
  15.  
  16. #WORD PLLFBD = 0x0746   //PLLDIV(0,1,2,3,4,5,6,7,8)
  17. #BIT PLLDIV_1 = PLLFBD.0
  18. #BIT PLLDIV_2 = PLLFBD.1
  19. #BIT PLLDIV_3 = PLLFBD.2
  20. #BIT PLLDIV_4 = PLLFBD.3
  21. #BIT PLLDIV_5 = PLLFBD.4
  22. #BIT PLLDIV_6 = PLLFBD.5
  23. #BIT PLLDIV_7 = PLLFBD.6
  24. #BIT PLLDIV_8 = PLLFBD.7
  25. #BIT PLLDIV_9 = PLLFBD.8
  26.  
  27.  
  28.  
  29. #use delay(clock = 80000000)
  30.  
  31. #use standard_io(B)
  32.  
  33. void main()
  34. {  
  35.  
  36.    // PLLPRE /2
  37.    PLLPRE_1 = 0;
  38.    PLLPRE_2 = 0;
  39.    PLLPRE_3 = 0;
  40.    PLLPRE_4 = 0;
  41.    PLLPRE_5 = 0;
  42.    
  43.    // PLLDIV *40
  44.    PLLDIV_1 = 0;
  45.    PLLDIV_2 = 1;
  46.    PLLDIV_3 = 1;
  47.    PLLDIV_4 = 0;
  48.    PLLDIV_5 = 0;
  49.    PLLDIV_6 = 1;
  50.    PLLDIV_7 = 0;
  51.    PLLDIV_8 = 0;
  52.    PLLDIV_9 = 0;
  53.    
  54.    // PLLPOST /2
  55.    PLLPOST_1 = 0;
  56.    PLLPOST_2 = 0;
  57.    
  58.  
  59.    while (true)
  60.    {
  61.  
  62.       output_high(pin_b3) ;
  63.       output_high(pin_b4) ;
  64.       delay_ms (500) ;
  65.       output_low(pin_b3) ;
  66.       output_low(pin_b4) ;
  67.       delay_ms (500) ;
  68.    }
  69.  
  70. }
Título: Re: programar DSPIC33FJ128MC802 con CCs
Publicado por: Suky en 02 de Abril de 2011, 11:32:19
Cristal de 8Mhz -> Fuse HS.


Saludos!
Título: Re: programar DSPIC33FJ128MC802 con CCs
Publicado por: brutto en 04 de Mayo de 2011, 11:45:34
creo recordar que a 8mhz se configura asi el dspic33:
_FOSCSEL (IESO_OFF & FNOSC_FRC);
_FOSC (FCKSM_CSECMD & IOL1WAY_OFF & OSCIOFNC_OFF & POSCMD_XT);


   //Perform a clock switch to 40MIPS (80Mhz)
   PLLFBD = 38;         //M=PLLFBD+2       = 38
   CLKDIVbits.PLLPOST = 0;   //N2=2(PLLPOST+1)  = 2
   CLKDIVbits.PLLPRE = 0;   //N1=PLLPRE+2      = 2
  
   //unlock OSCCON register
   __builtin_write_OSCCONH(0x03);
   __builtin_write_OSCCONL(0x01);
  
    //wait for clock to stabilize  
   while(OSCCONbits.COSC != 0b011);
   //wait for PLL to lock
   while(OSCCONbits.LOCK !=1);
    //clock switch finished

ademas el delay_ms solo acepta de maximo 100ms con lo qeu si quieres 500ms tienes que hacer un bucle de 5x100.


Título: Re: programar DSPIC33FJ128MC802 con CCs
Publicado por: Suky en 04 de Mayo de 2011, 12:18:27
Trabaja en CCS  ;-)


Saludos!
Título: Re: programar DSPIC33FJ128MC802 con CCs
Publicado por: brutto en 08 de Mayo de 2011, 12:37:09
cierto, me confundi ya no se ni en que lenguaje programo jejej
Título: Re: programar DSPIC33FJ128MC802 con CCs
Publicado por: marqueses en 15 de Diciembre de 2011, 06:46:26
Hola Fernando,

me encuentro en la misma tesitura que tu, trabajando con CCS y con el dspic33fj128mc802, y sin conseguir hacer funcionar el PLL. Con los fuses es imposible, no sé cual será el problema, supongo que mal programado por parte del compilador. De todas formas, he probado el código que indicas mas arriba, y no me funciona tampoco. Y ademas tampoco lo entiendo. ¿Como se puede indicar los valores del PLL dentro del main? Se supone que ya debe estar corriendo a una frecuencia cuando ejecute esas instrucciones, por lo tanto, se crea hay un conflicto, ¿no? No sé, me resulta raro.

Si conseguiste la solución, o si alguien ha conseguido programar el PLL, por favor, que dé alguna indicacion. Gracias y saludos!
Título: Re: programar DSPIC33FJ128MC802 con CCs
Publicado por: marqueses en 15 de Diciembre de 2011, 09:10:54
Hola,

acabo de darme cuenta de mi error. El código expuesto funciona correctamente. El problema viene en el programador, aunque no estoy seguro que sea de éste. El programador que uso es el winpic800 - GTP-USB+ y cuando inserto el código y me voy a configuración me indica que el oscilador al iniciar el dsp será interno y no XT como yo tengo puesto en el código. Por lo tanto, no sé si es culpa de CCS que no indica bien que trabajo con XT y PLL o del programador que no lo lee bien. Aun así, modifico esta configuración, indico que trabajo con XT y PLL y va a las mil maravillas. Adjunto imagen por si alguien tiene el mismo problema y mismo programador.

Gracias y saludos.
Título: Re: programar DSPIC33FJ128MC802 con CCs
Publicado por: Andres__Ricardo en 12 de Marzo de 2013, 11:42:29
Hola,

acabo de darme cuenta de mi error. El código expuesto funciona correctamente. El problema viene en el programador, aunque no estoy seguro que sea de éste. El programador que uso es el winpic800 - GTP-USB+ y cuando inserto el código y me voy a configuración me indica que el oscilador al iniciar el dsp será interno y no XT como yo tengo puesto en el código. Por lo tanto, no sé si es culpa de CCS que no indica bien que trabajo con XT y PLL o del programador que no lo lee bien. Aun así, modifico esta configuración, indico que trabajo con XT y PLL y va a las mil maravillas. Adjunto imagen por si alguien tiene el mismo problema y mismo programador.

Gracias y saludos.

Hola a mi el ccs me coloca error con tan solo incluir el 33fj128mc802, no se que hacer, por favor ayudenme, el error que aparece es el siguiente.

*** Error 24 "C:\PROGRA~1\PICC\devices\33fj128mc802.h" Line 2(9,26): Unknown device type  "DSPIC33FJ128MC802"

gracias de antemano
Título: Re: programar DSPIC33FJ128MC802 con CCs
Publicado por: marqueses en 13 de Marzo de 2013, 18:43:10
Andres, ¿estás seguro que la versión de CCS que estás usando soporta ese dspic? Da la impresión de que no, y que por eso no lo encuentra en la librería de controladores.

Un saludo.
Título: Re: programar DSPIC33FJ128MC802 con CCs
Publicado por: skormel en 21 de Marzo de 2013, 08:36:51
Muy buenas,

Hace tiempo publiqué una aplicación para configurar los Mhz que desees en la familia dspic33F échale un ojo.

Calculadora dsPic33F (http://www.todopic.com.ar/foros/index.php?topic=40062.0)

Te digo si quieres usar exactamente 80Mhz necesitas un cristal, ya que con el oscilador interno, no puedes obtener exactamente los 80mhz

También te digo una cosa, no le tengas miedo a C30, al principio cuesta un poco, pero va genial.

Un saludo.
Título: envio de datos desde lanbiew a pic por perto serie
Publicado por: heli2g en 29 de Abril de 2013, 17:07:03
hola a todos soy nuevo en programación ccs y en labview, tengo que desarrollar un programa en labview donde mande mande dos datos generados por dos barras horizontales, y esos datos tengo que mandarlos a un dspic por el puerto serie, tengo entendido que los datos van al visa de escritura en labview pero no se como mandar dos datossi simultáneamente, ahora la otra duda es como hago para que en el dspic 33fj128mc lea los dos datos y así en el mismo dspic con esos datos me genere dos señales independientes  pwm de salida del dspic independientes. siendo la frecuencia de los pwm  de 8khz
Título: Re: envio de datos desde lanbiew a pic por perto serie
Publicado por: marqueses en 30 de Abril de 2013, 16:00:27
hola a todos soy nuevo en programación ccs y en labview, tengo que desarrollar un programa en labview donde mande mande dos datos generados por dos barras horizontales, y esos datos tengo que mandarlos a un dspic por el puerto serie, tengo entendido que los datos van al visa de escritura en labview pero no se como mandar dos datossi simultáneamente, ahora la otra duda es como hago para que en el dspic 33fj128mc lea los dos datos y así en el mismo dspic con esos datos me genere dos señales independientes  pwm de salida del dspic independientes. siendo la frecuencia de los pwm  de 8khz

Hola,

Creo que tu duda es bastante general, estás pidiendo el codigo de tu programa directamente. Intenta crear tu codigo a partir de ejemplos y cuando se te planteen dudas especificas podremos ayudarte.

Un saludo y animo!