Autor Tema: Problemas programando un PIC24FV16KM202  (Leído 5313 veces)

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

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Problemas programando un PIC24FV16KM202
« en: 04 de Agosto de 2014, 07:06:55 »
Estoy programando un micro PIC24FV16KM202 y me está dando bastantes problemas.

El micro es muy nuevo, de manera que no se puede programar con el mplab 8.0, hay que pasarse al MPAB X y es bastante diferente.


Cuando he intentado programar el CTMU, me he dado cuenta que las entradas no se pueden activar por flanco, sólo se activan por nivel.
Eso a pesar de que la documentación indica que existen las dos posibilidades:

PIC24FV16KM202:
Citar
REGISTER 24-2: CTMUCON1H: CTMU CONTROL 1 HIGH REGISTER
bit 15   EDG1MOD: Edge 1 Edge-Sensitive Select bit
            1 = Input is edge-sensitive
            0 = Input is level-sensitive
Debe ser una errata de Microchip, porque ese bit no funciona.


Empiezo a entender por qué se utilizan mucho menos los micros de 16 bits a pesar de tener precios equivalentes a los de 8 bit.
(Este micro cuesta 2.50 Euros en Mouser y un PIC18F2550 cuesta 3.97 Euros)

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re: Problemas programando un PIC24FV16KM202
« Respuesta #1 en: 04 de Agosto de 2014, 07:08:38 »
Ahora me estoy peleando con el módulo CCP y lo mismo... muchos problemas.

No consigo que cuente bien los pulsos en modo 32 bits porque en las lecturas hay desfases de -65536 pusos, que luego se corrigen.

Es como si se desbordasen los 16 bits bajos y no se actualizasen los 16 bits altos al pasar la lectura al buffer (estoy leyendo el buffer)

Al cabo de un segundo, vuelvo a leer el buffer y el desfase se ha corregido sólo  :huh:

¿Alguien se ha encontrado con este problema?


Saludos.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Problemas programando un PIC24FV16KM202
« Respuesta #2 en: 04 de Agosto de 2014, 08:12:18 »
Seguro que si sigues peleando encuentras explicación a esos comportamientos extraños. Algunas veces hay erratas, pero me extraña mucho que sean tantas y tan evidentes.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re: Problemas programando un PIC24FV16KM202
« Respuesta #3 en: 04 de Agosto de 2014, 08:39:22 »
Errata sólo he encontrado una (el bit del CTMU) que me gustaría contrastar con Microchip, pero no sé donde enviarle la duda.

El resto son cientos de bits bastante difíciles de manejar.
Lo extraño es que ya he programado lo mismo con un PIC24FV32KA304 y funcionaba bien (tanto el CCP como el CTMU)

Decidí cambiarme a este otro micro porque tenía el módulo CLC (es como una pequeña GAL) y así me ahorraba un circuito externo, pero me está dando muchos problemas.


Yo estoy acostumbrado a programar en MPLAB y el cambio a MPLAB X no ha sido fácil. Lo han cambiado todo de sitio.

Microchip se destaca por ser User-friendly, pero en este caso estoy empezando a dudarlo.
Con unos módulos tan complicados de manejar deberían tener como mínimo programas de ejemplo que ya funcionen, pero casi no hay nada. Y encima la documentación tiene erratas...

Con esfuerzo lo sacaré, pero estoy empezando a cansarme de unos módulos tan caprichosos. En los PIC18 no he tenido nunca tantos problemas.


Saludos.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Problemas programando un PIC24FV16KM202
« Respuesta #4 en: 04 de Agosto de 2014, 10:24:18 »
Hola

Te sugiero levantar tickets en Microchip Support. Fundamenta tu caso. Envíales tu código. Sólo así podrás saber la verdad... que su compilador tiene issues jejej

Yo ahorita ando batallando con issues CDC USB con el 2550.  :(

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re: Problemas programando un PIC24FV16KM202
« Respuesta #5 en: 04 de Agosto de 2014, 10:47:24 »
Ya encontré el problema.

tengo una instrucción para unir los dos números de 16bits en un sólo número de 32 bits:

Código: [Seleccionar]
  unsigned int low, high;

   low = CCP1BUFL;
   high = CCP1BUFH;
   pulsos =  ((unsigned long)high<<16) + low;


Analizando los resultados sale lo siguiente:

   low =  56 215
   high =   29
   pulsos = 1 891 223   ????   (debería salir 1 956 759, que son 65536 pulsos más)


Cambio el código:
Código: [Seleccionar]
  unsigned int low, high;

   low = CCP1BUFL;
   high = CCP1BUFH;
   pulsos =  ((unsigned long)high<<16) + (unsigned long)low;
Y sigue con el problema.   :huh:  :z)


Investigando un poco, resulta que el problema sólo ocurre cuando el valor low es mayor que 32767, es decir que toma el valor low como negativo a pesar de declararlo como unsigned  :shock:

Parece un error del compilador. ¿Alguien sabe que le pasa al compilador? ¿Es correcto este resultado?



Decido crear una estructura de 32 bits con dos elementos de 16 bits, para poder unirles sin problema:
Código: [Seleccionar]
typedef union {
    unsigned long int32;
    struct {
        unsigned int low;
        unsigned int high;
    };
} int32t;

   pulsos.low = CCP1BUFL;
   pulsos.high = CCP1BUFH;

Y por fin funciona  :-/  :-/

Nunca había tenido este problema uniendo dos valores de 8 bits en uno de 16 bits.


Estos micros de 16 bits son bien especialitos...


Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re: Problemas programando un PIC24FV16KM202
« Respuesta #6 en: 04 de Agosto de 2014, 10:56:14 »
Hola

Te sugiero levantar tickets en Microchip Support. Fundamenta tu caso. Envíales tu código. Sólo así podrás saber la verdad... que su compilador tiene issues jejej

Yo ahorita ando batallando con issues CDC USB con el 2550.  :(

No se si me merece la pena el esfuerzo.

Desde luego voy a plantearme micros de 16 y 32 bits de otras marcas.

Los de 8bits de Microchip me gustan bastante y encuentras con facilidad ayuda y ejemplos. Con los de 16 y 32 bits es otro mundo... todo desierto, no hay ejemplos, es difícil encontrar ayuda....

Ahora me dices que el compilador tiene bugs y además hay erratas en la documentación....

   De la errata estoy casi seguro. En un micro me funciona un bit de configuración del CTMU, pero en otro micro no funciona.
   Algunos micros tienen la posibilidad de activar el CTMU por flanco, pero la mayoría no puede, se activa por nivel.
   En el PIC24FV16KM202 han documentado que se puede activar el CTMU por flanco, pero funciona como la mayoría de micros. Sólo se activa por nivel.


Total que estos micros no son como los de 8 bits. Parecen micros de una empresa distinta.

Saludos.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Problemas programando un PIC24FV16KM202
« Respuesta #7 en: 04 de Agosto de 2014, 17:10:54 »
Cambian bastante, pero igual ocurre en 32bit, es otro mundo distinto a los 8 y 16. Los 8 y 16 sin embargo tienen mas parecido, pero los 32 ya cambian bastante.

Yo he usado un dspic33ep512mu810 y la verdad es que no he tenido problemas ni me ha resultado dificil, es mas, al final es mas sencillo este que uno de 8bits ya que trabajan con otros registros mas utiles que los de 8.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Problemas programando un PIC24FV16KM202
« Respuesta #8 en: 04 de Agosto de 2014, 19:24:58 »
Hola, no te molestes tanto. Es de esperarse que una familia nueva de micros tenga errores.

Incluso... me ha tocado pedir cambios a código para micros tan robustos de Freescale... y ni lo cambian.

Si quieres ir a la segura, usa los de 8 bits como mencionas.  ;-)

O usa micros viejos y caros, a costa de tener un código fuerte.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re: Problemas programando un PIC24FV16KM202
« Respuesta #9 en: 05 de Agosto de 2014, 04:57:35 »
Es verdad que los micros de 16 bits son mucho más potentes y por eso los estoy utilizando. Necesito aritmética flotante de 64bits y no me apetece programarla yo a mano en un micro de 8 bits, además no se si sería lo suficientemente rápido.

El problema se encuentra en la documentación, que es francamente mala.

El último problema con el que me he encontrado es que el módulo CLC utiliza la señal CCPIF1 según la documentación, y es mentira.

En realidad, el módulo de captura de pulsos (CCP) cuando realiza una captura, emite una señal que dura 1 TCY (no está documentada) y esta señal a su vez, activa un biestable del que sale la señal CCP1IF.

Total, que yo intentaba forzar la señal CCP1IF para hacer pruebas (como recoge el datasheet) y no había manera de que funcionase.


Un micro tan complejo, con muchos más bits de configuración y muchos más elementos que los micros de 8 bits, tiene unos diagramas en el datasheet que son más sencillos todavía que los de los micros de 8 bit y en el texto no aparecen explicaciones.
Te obligan a investigarlo todo paso a paso y comparado con la claridad de los 8bits, es agotador.


Un saludo.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Problemas programando un PIC24FV16KM202
« Respuesta #10 en: 05 de Agosto de 2014, 10:42:55 »
Fijate que en los micros de 16bits hay un .pdf por cada seccion, a mi me paso al principio, en documentation te vienen todas las secciones separadas por pdf distintos, en los de 8bit viene todo en un mismo pdf.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re: Problemas programando un PIC24FV16KM202
« Respuesta #11 en: 05 de Agosto de 2014, 15:01:44 »
Si, estoy mirando tanto la info específica del micro como el módulo descrito en la familia PIC24.

En la información específica del módulo aparece más información (aunque los detalles hay que mirarlos en el datasheet del micro)
Incluso aparecen ejemplos del procedimiento de inicialización y algún programa, pero me sigue faltando información.

Los esquemas son igual de simples o más en los micros de 16bits que en los micros de 8bits y eso que los micros de 16bits tienen muchas más opciones.


Cómo ejemplo, lo que comentaba antes. Documentación del CLC:
Citar
bit 14-12 DS4<2:0>: Data Selection MUX 4 Signal Selection bits
    111 = MCCP3 Compare Event Flag (CCP3IF)
    110 = MCCP1 Compare Event Flag (CCP1IF)
    101 = Digital logic low
    100 = CTMU Trigger interrupt
    For CLC1:
    011 = SPI1 SDIx
    010 = Comparator 3 output
    001 = CLC2 output
    000 = CLCINB I/O pin
    For CLC2:
    011 = SPI2 SDIx
    010 = Comparator 3 output
    001 = CLC1 output
    000 = CLCINB I/O pin

Lo señalado en negrita no es cierto. La información que afecta al CLC no es el bit CCP1IF, sino la señal que dura un sólo TCY y que activa CCP1IF.

Si tu pones a uno por programa la señal CCP1IF, el módulo CLC ni se da cuenta.

Por otro lado la señal que ataca al CLC sólo dura un TCY y luego vuelve a cero. No se mantiene todo el tiempo que está activa CCP1IF.

Total, que si eso no te lo cuentan puedes estar mucho tiempo intentando descubrirlo y sólo porque la información del datasheet no es exacta o está incompleta.


Saludos.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Problemas programando un PIC24FV16KM202
« Respuesta #12 en: 05 de Agosto de 2014, 19:03:44 »
Si te parece poco info entonces metete en un freescale qorivva y veras lo que es poca informacion jaja, el datasheet son mas de 1000 paginas que te tiras 3 años buscando algo porque esta todo junto (echo de menos los PDFs separados de microchip)...

Que quieres hacer exactamente?? Quizas te pueda dar alguna alternativa a este pic que te sea mas simple y eficiente.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re: Problemas programando un PIC24FV16KM202
« Respuesta #13 en: 05 de Agosto de 2014, 20:33:12 »
Quiero utilizar el CCP para medir pulsos junto al CTMU para medir pequeños intervalos de tiempo.
Los dos juntos permiten medir intervalos de tiempo con precision de 200ps.
Esto sirve para hacer un frecuencímetro con 10dígitos de precisión en una medición de 2 segundos de duración.

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re: Problemas programando un PIC24FV16KM202
« Respuesta #14 en: 06 de Agosto de 2014, 09:11:31 »
Por ahora parece que he conseguido controlar la mayor parte de los dos módulos.

El problema con otros micros que he buscado es que no tienen los periféricos de un PIC.
No conozco otro micro con CTMU, que es un módulo con muchísimas posibilidades.

Saludos.


 

anything