This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 2 voto(s) - 4.5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
PIC, cristales y capacitancia de carga
#1
¿Cómo elegir el 'adecuado'? Tengo varias dudas ahora que empiezo en esto.

La especificación del PIC nos da generalmente el rango de mínimo y máximo de frecuencia, en función de ello y nuestras necesidades podemos elegir el cristal. ¿Correcto? ¿Alguna recomendación?

Los cristales suelen tener una carga de capacitancia. ¿Qué es? ¿Cómo saber cual es la adecuada o recomendada? No sé que función tiene este valor y/o en qué afecta.
  Responder
#2
Supongo que sera en cuanto a la precision del oscilador. Los condensadores que colocas luego para el micro, vienen especificados en el datasheet del micro segun la frecuencia del cristal.
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#3
Sí, la parte del condensador la sé. La que no sé en qué tener en cuenta es la que viene en la especificación del cristal. ¿Me olvido de ella?
  Responder
#4
Si, salvo aplicaciones criticas donde necesites precision, puedes olvidarte. Te vale cualquier cristal, incluso puedes hacerlo con un R-C, que tambien lo admiten los micros.
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#5
¿A qué te refieres con R-C?

¿Usáis condensadores electrolíticos?

Voy a coger un pack de cristales de 4Mhz. ¿Es un buen valor para empezar verdad? Para probar con distintos pics creo que me basta.
  Responder
#6
El valor de 4mhz es estandar, puedes ir hasta 20Mhz en muchos modelos, pero para aplicaciones normales y para empezar, te sobra con 4.

Con un circuito R-C, haces un oscilador, que te puede servir para el micro, aunque no es recomendable.

Los condensadores del cristal son ceramicos, los naranjitas con forma de lenteja. COn el valor de 22pF vas a todos los lados, te vale para todo, asi que pidete un pack.
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#7
Genial, gracias, tengo ganas de echar mano al pickit 3 y cacharrear.
  Responder
#8
Para empezar necesitas, cristal de 4mhz, condensadores de 22pF, y resistencias de 10k. Eso es lo minimo para poner en marcha el micro. A partir de ahi ya, lo que precises
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#9
mejor con 10Mhz, le será mas fácil calcular tiempos
  Responder
#10
Tomo nota. Con los de 10 MHz seguiría siendo viable usar condensadores de 22pF?
  Responder
#11
ark escribió:mejor con 10Mhz, le será mas fácil calcular tiempos


Calcular tiempos? Al micro? No tiene mucho misterio tampoco

En el apartado de oscillator configurations tienes los fatos en los datasheets
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#12
Imagino que se refiere a los retardos, para calcular de cabeza cuantas instrucciones necesitas. Pero si es por eso, para empezar 4MHz está muy bien. Recordad que en los PIC, por su arquitectura, se necesitan 4 ciclos de reloj para ejecutar una instrucción, por tanto funcionando a 4MHz, la velocidad por instrucción (Los famosos MIPs que seguro habéis visto comparados por ahí) es de 1MHz (O 1MIPs). O lo que es lo mismo, se ejecutará una instrucción cada 0,000001 segundos (O 1 microsegundo)

Con el de 10MHz tienes 2,5 MIPs, pero eso puede liar un poco más, pues es ejecutar una instrucción cada 0,0000004 segundos (O 0,4 microsegundos)

Y ese mismo tiempo (Aplicando prescalers/postscalers) se usa para los timers, así que eso, quizá 4MHz sea lo más sencillo para un principiante.
  Responder
#13
Pero eso es para casos en los que tienes que hilar fino, para empezar no es algo que tengas en cuenta.
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#14
Con la explicación de Thorontir acabo de recordar alguna clase de universidad y me ha quedado bastante claro. Muchas gracias.

Por cierto, al final me convencisteis y pediré el pickit 3. En cuantos reciba todo intentaré documentar los primeros ejemplos y publicarlos por aquí, a ver si seguís corrigiéndome o le sirven a otros que quieran arrancar en PIC.
  Responder
#15
Thorontir escribió:Imagino que se refiere a los retardos, para calcular de cabeza cuantas instrucciones necesitas. Pero si es por eso, para empezar 4MHz está muy bien. Recordad que en los PIC, por su arquitectura, se necesitan 4 ciclos de reloj para ejecutar una instrucción, por tanto funcionando a 4MHz, la velocidad por instrucción (Los famosos MIPs que seguro habéis visto comparados por ahí) es de 1MHz (O 1MIPs). O lo que es lo mismo, se ejecutará una instrucción cada 0,000001 segundos (O 1 microsegundo)

Con el de 10MHz tienes 2,5 MIPs, pero eso puede liar un poco más, pues es ejecutar una instrucción cada 0,0000004 segundos (O 0,4 microsegundos)

Y ese mismo tiempo (Aplicando prescalers/postscalers) se usa para los timers, así que eso, quizá 4MHz sea lo más sencillo para un principiante.

Hablas de programar en ASM, donde si te quieres hacer una funcion delay si que tienes que tener en cuenta lo que tarda cada instruccion en ejecutarse, pro ejemplo ???
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#16
grafisoft escribió:Hablas de programar en ASM, donde si te quieres hacer una funcion delay si que tienes que tener en cuenta lo que tarda cada instruccion en ejecutarse, pro ejemplo ???

Si, por ejemplo.

Imagina que tienes un servo, que lo llevas con una función que genera pulso de 0,5 a 2,5 ms de tiempo en alto, y luego hasta 20 en bajo. Una forma de "no joder la onda" (Que tampoco es necesario, comunicar por UART no cuesta tanto, y si lo haces por interrupción es más sencillo, pero por poner un ejemplo) es poner el pin a nivel alto, miras si ha llegado algo, si ha llegado lo procesas (Sabes de antemano cuanto tardas en procesarlo, sólo tienes que multiplicar por el tiempo de instrucción) y si no ha llegado nada metes la cantidad de NOPs equivalente. Y luego otro tanto con lo que te falte hasta los 0,5ms de mínimo. Así, llegue algo o no, ese mínimo siempre dura 0,5ms, y son 0,5ms "clavados" e "inalterables". Además, metes ahí los cálculos para saber cuanto va a durar la parte variable y demás...

Todo eso en ASM sabes cuanto va a tardar (Exactamente los ciclos de instrucción necesarios multiplicados por el tiempo de instrucción) mientras que en C vas "a la aventura" por que entre que hará las cosas como vea, optimizará como quiera y tal...

Por si teneis curiosidad, en las datasheet, junto con las instrucciones del micro, además de explicarte lo que hace y lo que necesita de parámetros, te dice los ciclos de instrucción que necesita, por que sumar, restar o tal es sólo un ciclo, pero los saltos y comparaciones pueden ser 2, o incluso 4 ciclos.

Pero vamos, es raro tener necesidad de tanta precisión. Y si la tienes, siempre te queda la opción de meter código ASM dentro de C (En C18 era _asm InstrucciónDeEnsamblador _endasm creo recordar). Pero son de esas cosas que nunca está de más saber Sonrisa
  Responder
#17
Si haces la programacion en C, no hace falta tener esto en cuenta. Tienes funciones de uS o mS para las pausas, o los timers y generadores de pwm.

Si que es cierto que si vas a delays muy pequeños, empiezas a notar el tiempo de ejecucion de las instrucciones. Esto se ve bien en el Osciloscopio
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#18
Thorontir escribió:Imagino que se refiere a los retardos, para calcular de cabeza cuantas instrucciones necesitas. Pero si es por eso, para empezar 4MHz está muy bien. Recordad que en los PIC, por su arquitectura, se necesitan 4 ciclos de reloj para ejecutar una instrucción, por tanto funcionando a 4MHz, la velocidad por instrucción (Los famosos MIPs que seguro habéis visto comparados por ahí) es de 1MHz (O 1MIPs). O lo que es lo mismo, se ejecutará una instrucción cada 0,000001 segundos (O 1 microsegundo)

Con el de 10MHz tienes 2,5 MIPs, pero eso puede liar un poco más, pues es ejecutar una instrucción cada 0,0000004 segundos (O 0,4 microsegundos)

Y ese mismo tiempo (Aplicando prescalers/postscalers) se usa para los timers, así que eso, quizá 4MHz sea lo más sencillo para un principiante.

razon no te falta, habia olvidado ese detalle ! gracias por recordarmelo Sonrisa

programar en C hace que olvides muchas cosas jejejeje
  Responder
#19
Programando en C, es cierto que te acomodas, pero que puedes insertar codigo en ASM para aquellas partes criticas del programa que necesites que haga lo que tu quieras que haga
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  Reloj/cronometro PIC 16F84A axisgar 16 7,602 23-06-2020, 09:11 PM
Último mensaje: richarddamian
  [INFO+TUTO] Programador USB PIC K150 cansi22 30 38,538 08-12-2018, 02:06 PM
Último mensaje: Shellmer
  Placa de evaluación gratis pic 8 bits Jorge 24 6,851 21-11-2018, 01:11 AM
Último mensaje: Shellmer
  DUDA bootloader para pic OtreblaCU 7 3,615 29-11-2017, 04:17 PM
Último mensaje: OtreblaCU
  Iniciarse programación Pic (USB PIC K150) Kvothe 4 4,419 12-03-2017, 09:33 PM
Último mensaje: Shellmer