TODOPIC

Microcontroladores PIC => Pic32 => Mensaje iniciado por: EdoNork en 27 de Octubre de 2011, 16:39:34

Título: El oscilador de mi PIC32 me vacila
Publicado por: EdoNork en 27 de Octubre de 2011, 16:39:34
Hola:

Estoy jugueteando con un PIC32MX795F512L.

Lo tengo instalado en una protoboard con adaptador de LQFP a DIP 100 que me he hecho.

Quiero hacerlo funcionar con un cristal externo de 8MHz. Este tiene sus correspondientes condesadores de 22pF.

El problema es que no oscila al encenderlo. Si saco el cristal de la protoboard, con la placa encendida, y vuelvo a instalarlo en su sitio, dos de cada tres veces comienza a oscilar adecuadamente.

La configuración que tengo es la siguiente:

#pragma config POSCMOD=XT, FNOSC=PRIPLL
#pragma config FPLLIDIV=DIV_2, FPLLMUL=MUL_20, FPLLODIV=DIV_1
#pragma config FPBDIV=DIV_2, FWDTEN=OFF, CP=OFF, BWP=OFF

Si cambio FPLLIDIV=DIV_2 por FPLLIDIV=DIV_3 funciona perfectamente.
Si dejo FPLLIDIV=DIV_2 y cambio FPLLMUL=MUL_20 a FPLLMUL=MUL_16 también funciona perfectamente, lógivcamente a una velocidad menor.

He probado con otros cristales de 8MHz y el comportamiento es el mismo. Con uno de 20MHz y FPLLIDIV=DIV_5 FPLLMUL=MUL_20 me pasa exactamente lo mismo.

He probado a cambiar los condensadores por unos de 15pF, 33pF e incluso de 47pF. No hay mejoría.

También he probado a poer una resistencia de 1M en paralelo con el cristal, tampoco hay cambios.

La configuración de fusas me funciona perfectamente en mi Explorer 16 con un micro idéntico.

¿Ideas?

Os adjunto el esquema actual del montaje.
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: AngelGris en 27 de Octubre de 2011, 16:44:41
No conozco dicho pic pero pregunto ¿La configuración no debería ser HS en lugar de XT? Sólo lo digo porque en los 16F y 18F que he visto sólo se usa XT para cristales de 4MHz o menos
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: EdoNork en 27 de Octubre de 2011, 16:53:22
En los PIC32 hasta los 10MHz la configuración es XT, de 10MHz hacia arriba es HS.
De todas formas también he probado eso y se comporta igual.

Gracias por la sugerencia.
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: KALLITOS en 27 de Octubre de 2011, 17:47:01
Hola edonork, por ACA (http://www.todopic.com.ar/foros/index.php?topic=36330.msg302778#msg302778) hay un codigo que puedes usar como referencia.

saludos
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: AcoranTf en 27 de Octubre de 2011, 18:24:01
Hola EdoNork, procura que las conexiones sean lo mas cortas posibles entre el cristal, el micro y los condensadores. Lo idel es que no hubiese nada aparte de esas conexiones, lo digo porque el resto de las tiras de la protoboard que utilizas para esos componentes, siguen ahi y hacen de antena, eso podria general ruido. Prueba a soldar el cristal y los condensadores directamente al adaptador de LQFP a DIP y eliminar las patillas del DIP correspondientes.

Saludos.
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: Nocturno en 28 de Octubre de 2011, 01:47:32
¿He entendido bien?, si el mismo código te va bien en la Explorer16 y mal en la protoboard, habría que buscar el problema en la conexión del cristal y/o condensadores.
¿No puedes soldarlos?
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: EdoNork en 28 de Octubre de 2011, 03:50:20
Sí, creo que no es cuestión de código, pero lo he puesto por si acaso.

Intentaré colocar algo más cerca el cristal, incluso soldarlo, pero el espacio es mínimo, son muchos pines.

Pero lo que me mosquea es que bajando la frecuencia a través del PLL sí funciona a la primera.
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: NoSepComo en 28 de Octubre de 2011, 03:55:27
Hola, yo te iba a proponer lo mismo que nocturno, a veces las protos se quedan con carga residual, lo cual altera el comportamiento del oscilador. Aunque de todas formas lo raro es que no encuentres un patrón de cuando falla.
Prueba a montarte una pcb y soldar los componentes, en teoría debería ir mejor
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: tapi8 en 28 de Octubre de 2011, 09:03:13
Seguramente la solucion es lo que te dicen Nocturno y NoSepComo, pero prueba a quitarle los condensadores, esto te lleva poco tiempo.

Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: MerLiNz en 28 de Octubre de 2011, 09:15:41
yo he probado con 20mhz en protoboards y la verdad es que no me ha dado problema alguno nunca, y eso que para poner el cristal llevaba 2 cables al cristal en vez de ponerlo directo y sin problema.
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: EdoNork en 28 de Octubre de 2011, 10:13:08
Sí, en protoboard con cristales de 20MHz y PIC18 no he tenido problemas, es el PIC32 el que se resiste.
La única diferencia es la alimentación, que ahora es de 3,3V.
También he probado sin condensadores, nada, incluso he puesto dos diferentes, como alguna nota de aplicación sugiere.
A ver si encuentro un ratillo y acerco el cristal al PIC.
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: manwenwe en 28 de Octubre de 2011, 10:44:44
¿Has habilitado la caché de lectura de rom?:

Código: [Seleccionar]
SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);
Por mi experiencia sin ejecutar esta instrucción no es posible conseguir más de 64mhz (oscilador interno o externo... da igual). En cuanto a lo de la distancia del cristal al micro: las reflexiones empiezan a ser importantes a partir de mayores frecuencias (yo diría que 50mhz)... a 8mhz da "casi" igual que pongas el cristal a 10mm o a 50mm.... ten en cuenta que una señal, en una pcb normal, viaja a unos 150mm/ns...

1 saludo
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: EdoNork en 28 de Octubre de 2011, 14:33:56
Sí, tengo declarado:

Código: [Seleccionar]
SYSTEMConfigPerformance(80000000L);
que, teóricamente, optimiza todo el PIC, cache incluida.
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: MGLSOFT en 28 de Octubre de 2011, 15:05:34
Yo si creo que le esta molestando el protoboard...
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: manwenwe en 28 de Octubre de 2011, 17:05:41
perdón: no había leido lo do la protoboard. Hace mucho que no monto en protoboard pero estoy de acuerdo con el resto: siempre pasan cosas raras. Al principio de programar PICs montaba circuitos con LCD alfanumeríco en protoboard y cuando subía la frecuencia del micro a 40mhz (pic18) aquello era la risa: a veces iba y otras no... dependia de lo que empujara los cables (que hiciesen buen contacto). En cambio en PCB nunca tuve problemas...

saludos y suerte.
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: EdoNork en 01 de Noviembre de 2011, 14:33:48
Seguimos igual.

Para eliminar el factor protoboard he soldado tanto el cristal como lod dos condensadores a las pistas del PCB y he cortado la parte sobrante de las pistas para no tener capacidades parásitas ni ruidos.
Sigue funcionando si bajo la frecuencia de trabajo, pero a 80MHz nada de nada.
No lo entiendo, las verdad.
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: KALLITOS en 01 de Noviembre de 2011, 20:24:12
Prueba usando este pedazo de codigo:

Código: C
  1. #include <p32xxxx.h>
  2. #include <plib.h>
  3.  
  4. //Bits de configuración
  5.  
  6. #pragma config FNOSC = PRIPLL//Oscilador Principal con PPL
  7. #pragma config POSCMOD = XT //Modo reloj principal XT (4Mz)
  8. #pragma config FPBDIV = DIV_2//divisor Bus Periféricos
  9. #pragma config FWDTEN = OFF//Wachdog deshabilitado
  10. #pragma config FPLLODIV = DIV_1//Pos-Divisor PPL 1/1
  11. #pragma config FPLLIDIV = DIV_1//Pre-Divisor PPL 1/1
  12. #pragma config FPLLMUL = MUL_20// 20xPPL


Luego en el main

Código: C
  1. DDPCONbits.JTAGEN = 0;                        // disable JTAG port
  2. CheKseg0CacheOn();            // enable the cache for max performance
  3. mCheConfigure(CHECON | 0x30);   // enable instruction prefetch
  4. mBMXDisableDRMWaitState();      // disable RAM wait states
  5. SYSTEMConfigPerformance(80000000L);
  6. SYSTEMConfigWaitStatesAndPB(80000000L);
  7.  
  8.  
  9.  
  10. // Sobrescribo el PBDIV a 1:8 para este ejemplo, la sentencia anterior varía el PBDIV
  11. mOSCSetPBDIV(OSC_PB_DIV_4);


saludos
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: EdoNork en 02 de Noviembre de 2011, 05:11:16
Luego pruebo, gracias.

Aunque creo que es algo de hardware, pero no veo qué.

Te cuento. Gracias de nuevo.
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: EdoNork en 02 de Noviembre de 2011, 16:39:35
Comprobado: más de lo mismo.

Hay algún error de hardware.
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: Nocturno en 02 de Noviembre de 2011, 18:21:40
¿Será que no están bien soldados los pines del oscilador del micro?, ¿quizás algún corto?
¿Puedes ver con un osciloscopio si el cristal está oscilando?
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: EdoNork en 03 de Noviembre de 2011, 04:24:28
Oscila de 72MHz hacia abajo. A 80MHz solo lo hace, de vez en cuando, si saco el cristal y vuelvo a colocarlo con el sistema alimentado, así que es problema de inicio de oscilación. Pero he probado con mil y un condensadores, incluso colocando una resistencia de 1Mohm en paralelo, como hace Microchip en la explorer, y no mejora.
Voy a soldar todos los condensadores de desacoplo a la placa, a ver si es algo de eso.
Título: Re: El oscilador de mi PIC32 me vacila
Publicado por: AngelGris en 03 de Noviembre de 2011, 08:48:54
  A mi me pasaba algo similar con un 16f628 cuando lo quería hacer trabajar con cristal y alimentarlo con 3V en lugar de 5V. En mi caso no hubo forma, no activando el PowerUpTimer.

  Entiendo que son PICs diferentes y que en tu caso sólo trabaja a 3.3V. Tal vez en algún ERRATA de Microchip y en alguna nota de aplicación especifique concretamente como hay que configurarlo para que pueda trabajar a dicha velocidad.