Autor Tema: PIC32MZ - Estrenando micro y bugs en el silicio/compilador  (Leído 46632 veces)

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

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #15 en: 02 de Diciembre de 2014, 13:02:50 »
En los datasheet de los PIC32MX, Microchip recomienda usar el cuarzo para USB, yo nunca lo he probado con el oscilador interno y USB, no se si funcionará. En este caso el A3 que tengo lo usaré para experimentos, pero no lo voy a instalar en un producto final, menudo castaña nos han vendido.

Sin duda. Pero dadas las condiciones y que ya tenemos una PCB hecha... voy a truquearlo (si me da tiempo). La señal de reloj de sistema puede dividirse de nuevo internamente y entregarse en un pin de salida del PIC. Pienso dividir los 200MHz u otra señal compatible y entregar 24MHz por ese REFCLKO. Esos 24MHz los conecto a POSC en modo EC y el PIC ni se enterará de que le estoy dando gato por liebre jejej... espero... porque el gato ya es él  :5]

No importa mucho la precisión... sólo es para prueba.

Saludos.

Desconectado CapBlack

  • PIC10
  • *
  • Mensajes: 17
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #16 en: 05 de Diciembre de 2014, 16:27:42 »
Hola migsantiago

me llamo la atencion tu post dado que en my trabajo estoy implementando un Nuevo projecto con dos PIC32MZ y creo que no as leido el datasheet como corresponde .

primero no existe crystal interno , si existe un oscillador RC que debe ser activado correctamente

Segundo el documento de errata señala que lo que no funciona es un resonador ceramic exterior entre OSC1 y OSC2 pero si funciona un crystal de 24Mhz o otra frecuencia que te apetezca.

yo uso un crystal oscillador y no he tenido ningun problema

cita de errata microchip

10. Module: Oscillator
The Ceramic Resonator cannot be used as an
input to the Oscillator module (OSC1/OSC2 pins).
Work around
Instead, use either a crystal oscillator or the
external clock.


Bueno espero que esto aclare un poco la desinformacion
y estos bichitos realmente puedo decir que andan muy bien (no descarto los bugs que es normal que existan )

 :-/ Chau a todos
« Última modificación: 05 de Diciembre de 2014, 16:38:05 por CapBlack »

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #17 en: 06 de Diciembre de 2014, 12:14:19 »
Hola migsantiago

me llamo la atencion tu post dado que en my trabajo estoy implementando un Nuevo projecto con dos PIC32MZ y creo que no as leido el datasheet como corresponde .

primero no existe crystal interno , si existe un oscillador RC que debe ser activado correctamente

Segundo el documento de errata señala que lo que no funciona es un resonador ceramic exterior entre OSC1 y OSC2 pero si funciona un crystal de 24Mhz o otra frecuencia que te apetezca.

yo uso un crystal oscillador y no he tenido ningun problema

cita de errata microchip

10. Module: Oscillator
The Ceramic Resonator cannot be used as an
input to the Oscillator module (OSC1/OSC2 pins).
Work around
Instead, use either a crystal oscillator or the
external clock.


Bueno espero que esto aclare un poco la desinformacion
y estos bichitos realmente puedo decir que andan muy bien (no descarto los bugs que es normal que existan )

 :-/ Chau a todos

Hola, me interesa leer el documento al que te refieres. Yo leí el que publiqué en el primer post.

http://ww1.microchip.com/downloads/en/DeviceDoc/80000588E.pdf

Yo intenté varias cosas para hacer funcionar el cristal pero ninguna funcionó.

No mencioné que el micro tuviera un cristal interno, sólo mencioné que lleva un cristal de 24MHz, pero me refería a que es externo. Lo que sí es interno es el FRC, que es lo que estoy usando en este momento.

Por favor publica el link del documento que citas para leerlo completo. Gracias.
« Última modificación: 06 de Diciembre de 2014, 13:19:35 por migsantiago »

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #18 en: 06 de Diciembre de 2014, 13:55:04 »
Hola de nuevo CapBlack

Ya encontré la referencia de la que hablas... es un problema ajeno al que yo tengo.

http://ww1.microchip.com/downloads/en/DeviceDoc/80000588F.pdf

Leíste el problema 10, que habla sobre el resonador cerámico.



Por favor checa el problema 41, que habla sobre el oscilador primario con cristal.



Talvez tu micro funciona sin la pull-up o la agregaron en la PCB... no lo sé, pero mi oscilador primario no funciona aun agregando la resistencia.

Saludos.

« Última modificación: 06 de Diciembre de 2014, 13:57:33 por migsantiago »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #19 en: 07 de Diciembre de 2014, 05:06:16 »
Talvez tu micro funciona sin la pull-up o la agregaron en la PCB... no lo sé, pero mi oscilador primario no funciona aun agregando la resistencia.

Si no lei mal
Si tiene la revision A5 entonces si con la resistencia funcionaria. si tiene la revision A3/4 esta igual que vos xD por mas resistencia que le ponga no funciona.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #20 en: 07 de Diciembre de 2014, 14:16:52 »
Pues tengo la A5 y puse la pull-up, pero sólo funcionó un rato. Después medí con el osciloscopio y el reloj de desbloqueó y falló. Mejor seguí con FRCPLL.  :(

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #21 en: 13 de Diciembre de 2014, 20:10:25 »
No sé si a alguien más le ha pasado que cuando uno crea nuevos archivos en MPLAB X 2.26, los archivos se agregan con rutas absolutas. Cuando uno comparte el proyecto, pues falla la compilación ya que no encuentra los archivos con una ruta relativa.

La solución es remover los archivos y agregarlos de nuevo, pero ahora sí eligiendo la opción Relative Path. Al crearlos no da opción para agregarlos al árbol del proyecto en forma relativa... o al menos no supe encontrarla.

Otra opción es modificar a mano el archivo configurations.xml y corregir los paths que quedaron absolutos. Adjunto el cómo por si a alguien le sirve.

Saludos.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #22 en: 22 de Diciembre de 2014, 15:51:45 »
Harmony 1.0.2.1 ya está disponible.  :mrgreen: Saludos.

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #23 en: 22 de Diciembre de 2014, 16:16:49 »
Gracias, lo acabo de actualizar! :-/

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #24 en: 03 de Enero de 2015, 21:37:06 »
Hola, les paso un tip. No es un bug, es una de esas peculiaridades que los compiladores de C pueden implementar a placer.

Tengo declarada esta estructura en XC32:

Código: [Seleccionar]
typedef struct Matrix_Data_Tag
{
   uint32_t total_frames; /**< How many frames the matrix will draw */
   uint8_t total_submatrixes; /**< How many submatrixes the matrix has (must match size below) */
   uint32_t submatrix_total_pixels[4]; /**< How many pixels each submatrix has */
   uint8_t biggest_submatrix; /**< which submatrix contains the most pixels, first found */
}Matrix_Data_T;

En un compilador ideal las direcciones (offset) de los siguientes elementos son:
0 - total_frames
4 - total_submatrixes
5 - submatrix_total_pixels[0]
9 - submatrix_total_pixels[1]
13 - submatrix_total_pixels[2]
17 - submatrix_total_pixels[3]
21 - biggest_submatrix

En XC32 para optimizar el manejo de datos, el compilador está asignando estas direcciones...

Código: [Seleccionar]
Matrix_Data; file:../src/app.c]  Matrix_Data_T   0x80008184      
total_frames]    __uint32_t  0x80008184  
total_submatrixes]   __uint8_t   0x80008188  
submatrix_total_pixels]  unsigned int[4] 0x8000818C      
submatrix_total_pixels[0]]   unsigned int    0x8000818C  
submatrix_total_pixels[1]]   unsigned int    0x80008190  
submatrix_total_pixels[2]]   unsigned int    0x80008194  
submatrix_total_pixels[3]]   unsigned int    0x80008198  
biggest_submatrix]   __uint8_t   0x8000819C  

Le conviene más que total_submatrixes pese 4 bytes, pudiendo verlo en su dirección 0x80008188 y viendo que submatrix_total_pixels[0] empieza 4 bytes después.

¿Por qué me afecta este gap o espacio entre elementos? Porque leo los datos desde un arreglo de chars en una SD Card en donde los espacios no existen. Al momento de derreferenciar el arreglo en una estructura los bytes pierden orden.

Para solucionarlo puede copiarse elemento por elemento la estructura desde el arreglo de chars. También se puede usar la palabra clave packed.

Código: [Seleccionar]
typedef struct Matrix_Data_Tag
{
   uint32_t total_frames __attribute__ ((packed)); /**< How many frames the matrix will draw */
   uint8_t total_submatrixes; /**< How many submatrixes the matrix has (must match size below) */
   uint32_t submatrix_total_pixels[4] __attribute__ ((packed)); /**< How many pixels each submatrix has */
   uint8_t biggest_submatrix; /**< which submatrix contains the most pixels, first found */
}Matrix_Data_T;

Aparentemente sólo hay que usarla en elementos que no pesan 1 byte. Si se usa en los uint8_t, el compilador avienta un warning.

Haciendo eso, las alineaciones de los elementos ya son conocidas e ideales.  :mrgreen: Eso me permite copiar una estructura al vuelo con una derreferenciación.

Código: [Seleccionar]
  uint8_t data[SD_CARD_BLOCK_SIZE];

   /* The first block always contains the table */
   SD_Card_Read(0, data);

   /* Copy the data as the expected structure */
   Matrix_Data_T Matrix_Data = *((Matrix_Data_T*)data);



Saludos.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #25 en: 13 de Enero de 2015, 18:53:22 »
Tranquilos, algún día vendrá la versión A de los PIC32MZ:


"Regarding the PIC32MZ:

· We are about to release samples of revision A5. Here’s the schedule:

o Limited samples: August

o Production release: September

· I have been told if you use an external reference it can help improve the accuracy of the PIC32MZ ADC. Mark, our FAE, can help if you have questions on this.

· We are working on a new all-layer redesign which will be released as PIC32MZxxxA. This will not only include a new ADC and (hopefully) fix all known errata, but will also include an updated SPI that will improve the speed to 50 Mbps, allow us to introduce E-temp devices, and add the missing FPU. These parts are expected to sample in March 2015 and release to production in June 2015. The ADC will be 12-bit although I don’t have any speed specs at the moment"

http://picforum.ric323.com/viewtopic.php?f=69&t=81

Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #26 en: 13 de Enero de 2015, 19:08:47 »
jeje Como con el PIC16F84A. Sí, qué bien que están corrigiendo cosas. El PIC32MZ que tengo es muy bueno.  :mrgreen:

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #27 en: 16 de Febrero de 2015, 04:06:00 »
Buena tardes estoy realizando un proyecto con PIC32MZ2048ECM y me gustaría como saber si tengo la versión A5 o superior, ya que necesito el reloj externo si o si, de lo contrario debería cambiar de microcontrolador.

muchas gracias

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #28 en: 16 de Febrero de 2015, 04:34:00 »
Buena tardes estoy realizando un proyecto con PIC32MZ2048ECM y me gustaría como saber si tengo la versión A5 o superior, ya que necesito el reloj externo si o si, de lo contrario debería cambiar de microcontrolador.

muchas gracias

Cuando conectas el pickit3 y le das conectar.
En su pequeño consola suelta un log.

Saludos!

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re: PIC32MZ - Estrenando micro y bugs en el silicio/compilador
« Respuesta #29 en: 16 de Febrero de 2015, 07:08:25 »
Gracias por contestear AKENAFAB, entonces no hay ninguna manera de saberlo hasta que el micro este en la placa? en mi opinión es un fallo muy grave del microcontrolador, voy a mandar la placa a fabrica y es un dinero para que luego no funcione correctamente o tenga que andar probando micros soldando y desoldando con el riesgo mas que evidente de que se dañen los pad y pistas.

Por cierto en respuesta a los que preguntan si se puede usar el USB con el cristal interno, se que en los pic32mx2xx, no se puede, se que en el diagrama del oscilador existe el camino, pero contacte con el apoyo tecnico de una compañia suministradora de microchip para preguntarlo, y me informo que no es posible, ese camino existe pero solo para algunas funciones del usb en estado latente pero no para funcionar plenamente como comunicación, quiza en los MZ si se pueda no lo se.


 

anything