TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: ByR en 18 de Diciembre de 2008, 13:05:34

Título: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: ByR en 18 de Diciembre de 2008, 13:05:34
Hola,

Espero puedan responderme a esta duda que tengo. Estoy diseñando un circuito en el que utilizo 3 microcontroladores y otro con 2 micros. Mi pregunta es si es posible utilizar los micros (PIC16F876A) con un sólo cristal.

Intentaré probar haber que pasa, pero me gustaría saber si es posible o no,  quizá no sea recomendable.

Gracias a todos, Saludos
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: Nocturno en 18 de Diciembre de 2008, 13:33:22
Pones el cristal en el primer micro y tiras una vía del pin CLKO del primer micro al pin CLKI del segundo micro.

Así funciona bien.
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: Javicho en 18 de Diciembre de 2008, 13:34:50
Claro que es posible hasta recuerdo haberlos sincronizado, pero bueno al tema si se puede, el segundo pic a alimentar de frecuencia debe ser por el OSC_IN y su pin OSC_OUT al aire.

Javicho.

Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: elmasvital en 18 de Diciembre de 2008, 14:33:30
creo que tambien hay que indicarle que es un oscilador externo en algunos micros viene como ECIO (external clocl input) y el osc_out queda como un I/O normal. Hablo por lo que he leido en datasheet... no lo he probado
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: Nocturno en 18 de Diciembre de 2008, 15:01:32
Sí, eso es así, pero no en el 16f876
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: ByR en 26 de Diciembre de 2008, 19:11:29
Gracias a todos por sus respuestas, me tardé un poco en leer el foro por las vacaciones

Hice la prueba conectando el cristal a 3 micros y funcionó bien, también probé la forma en la que me han sugerido, con buenos resultados.  Me ahorré de usar más cristales, les agradezco mucho

Saludos

ByR
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: Nocturno en 27 de Diciembre de 2008, 04:21:20
¡Guay!, me alegro que funcionase.
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: controlpic en 28 de Abril de 2009, 17:15:26
Hola
Yo tengo que conectar 12 microcontroladores pic 12f629 con un unico cristal de 32Mhz, espero que valla bien.
Para 12 micros tendre que tomar alguna precaucion fuera de lo normal?.
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: reiniertl en 28 de Abril de 2009, 19:57:25
No creo que el tuyo funcione controlpic, 32MHZ es demasiado para un 12f629.

Las precauciones iniciales serían utilizar un cristal que soporten esos increíbles PICs de 12 patas.

Saludos
Reinier
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: MLO__ en 28 de Abril de 2009, 22:41:42
 :shock: :shock:

No le he visto las 4 patas extras!!!! aca son de 8 pines  :mrgreen:

Saludos!!!!!
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: reiniertl en 28 de Abril de 2009, 23:12:41
Efectivamente, 8 patas, ¿en que ando pensando? ¿en las más de 12 cosas que se pueden hacer con ellos?

Pero en lo que si no me equivoco es que esos maravillosos engendros no andan a 40MHz

Gracias por la aclaración MLO_ ;)

Saludos
Reinier
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: MLO__ en 29 de Abril de 2009, 00:53:47
 :mrgreen:
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: BrunoF en 29 de Abril de 2009, 01:41:32
Efectivamente, 8 patas, ¿en que ando pensando? ¿en las más de 12 cosas que se pueden hacer con ellos?

Pero en lo que si no me equivoco es que esos maravillosos engendros no andan a 40MHz

Gracias por la aclaración MLO_ ;)

Saludos
Reinier

Cómo que no? ponle un hielo encima y ya verás...:D :D

No, fuera de broma. La terminación de los microcontroladores dicen la velocidad garantizada por el fabricante:Si dice 04 son hasta 4Mz, si dicen 20 son hasta 20Mhz.
Eso no implica que por mas que sea 04, no funcione bien a 20Mhz. Solo significa que estás por tu cuenta, el fabircante no asegura que funcione bien.
Mas de 20Mhz...creeme: con 25 quemé un 16F877A.

Saludos
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: Nocturno en 29 de Abril de 2009, 01:47:35
No sé porqué pero me da en la nariz que controlpic, en vez de 32MHz quería decir 32KHz.
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: reiniertl en 29 de Abril de 2009, 09:14:41
No se por qué, pero Manolo siempre sabe más de la cuenta...

¿Será por eso que es el súper héroe TODOPIC?

Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: controlpic en 01 de Mayo de 2009, 13:59:05
Hola
No me habia confundido, me referia a 32Mhz, aunque ahora veo que estaba equivocado en hacerlo trabajar a tan alta frecuencia.

Tengo que obtener varias frecuencias lo mas exactas posibles y utilizando esa base de tiempos obtenia muy poco error. Viendo el problema seguramente utilice un cristal de 4Mhz con objeto de aumentar la longevidad del pic, ya que aunque a 20Mhz me puede funcionar bien, no me quiero ariesgar a quemar alguno de los pic.

un saludo.
Título: configurar los fuses para utilizar un oscilador exterior
Publicado por: controlpic en 04 de Mayo de 2009, 18:33:43
Para poder utilizar el 12f629 con un oscilador exterior, sabeis que fuses son los que hay que seleccionar?
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: MLO__ en 04 de Mayo de 2009, 22:00:24
Pues XT, HS, LP,EC_IO
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: c4_esp_VR en 04 de Agosto de 2009, 03:50:17
Hola compañeros:

Resulta que tengo un circuitillo con dos pic 18F13k50, los cuales funcionan a la perfección con un cristal de 12Mhz cada uno, pero intento hacer esto que mencionais de tirar un cable del pin3 (clock out) del pic que tiene el cristal, al pin2 (clock in) del otro pic que no tiene cristal...y el que no tiene cristal no me funciona...

¿Alguien sabe porque puede ser?, ¿ hay que poner algún fuse especial en el código del CCS de alguno de los dos pic ?.

Como siempre muchas gracias por todo compañeros.

Un saludete.
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: Nocturno en 04 de Agosto de 2009, 09:30:46
Tienes que poner el fuse EC, aunque no sé si funcionará el USB.
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: c4_esp_VR en 04 de Agosto de 2009, 09:49:06
Hola:

La verdad es que no voy a usar el usb, sólo lo compré porque es el más barato de los que tiene más memoria (por el tema del usb).

Imagino que tengo que poner #fuses EC en el pic que no tiene cristal  :mrgreen:

Mañana lo pruebo y os comento que tal.

Un saludete y muchas gracias.
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: c4_esp_VR en 21 de Enero de 2010, 07:48:18
Hola comapeñeros:

He vuelto a sacar 5 min libres después de muchos meses...madre del amor hermoso...más de 6 meses...pero al menos no me olvido jejejeje, al realizarlo me he encontrado que no funciona...Os comento que he realizado por si hay algún error...

Primero he probado los dos PIC con el mismo programa y con un cristal cada uno y ha funcionado perfectamente (como era de esperar), el código usado para ambos en esta prueba es el sigiuente.

Código: [Seleccionar]
#include<18F24K20.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP //fuses para los demás micros //CON CLOCK
#use delay(clock=12000000)
#use rs232(baud=115200, xmit=PIN_C6, rcv=PIN_C7, stream=PC)

void main(void)
{
while (TRUE)
   {
printf("PRUEBA\r\n");//\r=CR=13; \n=LF=10
output_high(PIN_A0);
delay_ms(1000);
printf("PRUEBA\r\n");//\r=CR=13; \n=LF=10
output_low(PIN_A0);
delay_ms(1000);
}
}

Una vez probado el correcto funcionamiento de ambos (ver como se enciende y apagan los led en cada pic a un ritmo de 1 segundo) he quitado el cristal a uno de ellos y he tirado un cable de la patilla CLKOUT del micro que tiene el cristal a la patilla CLKIN del micro que NO tiene cristal, una vez realizado esa modificación en el HW, también he realizado una modificación en el SW del micro que NO tiene cristal y he puesto el siguiente código.

Código: [Seleccionar]
#include<18F24K20.h>
#fuses EC, NOWDT,NOPROTECT,NOLVP //fuses para los demás micros //SIN CLOCK
#use delay(clock=12000000)
#use rs232(baud=115200, xmit=PIN_C6, rcv=PIN_C7, stream=PC)

void main(void)
{
while (TRUE)
   {
printf("PRUEBA\r\n");//\r=CR=13; \n=LF=10
output_high(PIN_A0);
delay_ms(1000);
printf("PRUEBA\r\n");//\r=CR=13; \n=LF=10
output_low(PIN_A0);
delay_ms(1000);
}
}

Es decir he sustituido el fuse HS por el fuse EC y como resultado me encuetro que los led se apagan y se encienden pero a un ritmo de entre 10 y 12 segundos en ambos micros...

Alguien sabe que puede estar pasando.

Un saludete y como siempre mil gracias compañeros.
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: Nocturno en 21 de Enero de 2010, 07:57:28
Qué raro, ¿no tienes osciloscopio o frecuencímetro para mirar qué está pasando en los pines de clock?
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: c4_esp_VR en 21 de Enero de 2010, 08:21:52
Citar
Qué raro, ¿no tienes osciloscopio o frecuencímetro para mirar qué está pasando en los pines de clock?

Acabo de mirar el clock y aparece una precio onda sinusoidal de una frecuencia de 12MHz tanto en el CLKOUT del micro que tiene el cristal como en el CLKIN del micro que NO tiene el cristal.

Acabo de hacer una prueba, poniendo el mismo código en los dos, con el fuse HS incluso en el micro que NO tiene cristal y funciona perfectamente

Citar
#include<18F24K20.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP //fuses para los demás micros //CON CLOCK
#use delay(clock=12000000)
#use rs232(baud=115200, xmit=PIN_C6, rcv=PIN_C7, stream=PC)

void main(void)
{
   while (TRUE)
      {
      printf("PRUEBA\r\n");//\r=CR=13; \n=LF=10
      output_high(PIN_A0);
      delay_ms(1000);
      printf("PRUEBA\r\n");//\r=CR=13; \n=LF=10
      output_low(PIN_A0);
      delay_ms(1000);
   }
}

En cambio le vuelvo a poner el fuse EC al micro que no tiene el cristal, reseteo el sistema y el micro que tiene cristal funciona perfectamente y el micro que no tiene cristal funciona muy lento (como antes), he vuelto a mirar las patas del CLK en ambos pines y estan correctamente...

¿Qué hace exactamente el fuse EC?,¿a qué se debe que funciona con el fuse de High Speed (HS) si no tiene un cristal puesto?.

Gracias.
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: Nocturno en 21 de Enero de 2010, 08:36:50
Pues quizás sea que pasa eso con los 18F.
Yo hice la prueba con un par de micros (no me acuerdo de qué familia) y en CLKOUT no se veía la senoidal, sino una cuadrada que ingresada al otro micro lo hacía oscilar.
Se supone que el fuse EC lo configura para que con una señal de clock externa funcione (no un cristal, sino una señal cuadrada).
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: migsantiago en 21 de Enero de 2010, 10:53:21
Hola, veo que el PIC18F que usas trae oscilador interno escalable hasta 64MHz (16MIPS), pero talvez haya una mejor razón para usar uno externo.

Yo habilitaría el Power Up Timer ya que si usas EC es probable que el PIC asuma que desde los primeros ciclos el reloj ya está estable, cosa que no es cierta porque al usar cristal éste arranca lentamente. Con el power up timer el pic espera varios ms hasta que elreloj esté estable y es entonces cuando comienza a ejecutar programas.

Por cierto, quise bajar la datasheet de microchip pero me sale un error de que el archivo no existe :(
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: c4_esp_VR en 21 de Enero de 2010, 11:29:58
Citar
Hola, veo que el PIC18F que usas trae oscilador interno escalable hasta 64MHz (16MIPS), pero talvez haya una mejor razón para usar uno externo.
En este caso no hay mayor razón que la ignorancia y las ganas de aprender gracias a gente como vosotros  ;-). Por cierto,¿¿¿cómo podría hacer para que el PIC fuese a 16MIPS con el clock interno, que directivas del CCS me permiten realizarlo???.

Citar
Yo habilitaría el Power Up Timer ya que si usas EC es probable que el PIC asuma que desde los primeros ciclos el reloj ya está estable, cosa que no es cierta porque al usar cristal éste arranca lentamente. Con el power up timer el pic espera varios ms hasta que elreloj esté estable y es entonces cuando comienza a ejecutar programas.
Ya no dispongo del material, pero mañana en cuanto pueda le hago esto que comentas a ver que ocurre, aunque antes tendría que saber como se hace...creo que con el fuse PUT.

Citar
Por cierto, quise bajar la datasheet de microchip pero me sale un error de que el archivo no existe Sad
Aquí le tienes  :D
Datasheet 18F2XK20 (http://www.4shared.com/file/203134857/25659c77/Datasheet_18F24K20.html)

Muchas gracias.
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: Suky en 21 de Enero de 2010, 11:47:01
Para configurar el oscilador interno lo realizas mediante los fuses correspondientes (ver *.h del dispositivo) y setup_oscillator.

Saludos!
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: migsantiago en 21 de Enero de 2010, 11:59:59
Leyendo la datasheet creo que puedes hacerlo con esto:

Código: [Seleccionar]
#fuses INTRC_IO //reloj interno sin salida en pin
#fuses NOFCMEN //sin chequeo de cambio de relojes
#fuses PUT


y luego en el programa debes poner

Código: [Seleccionar]
setup_oscillator(OSC_64MHZ | OSC_INTRC);
Pruébalo con un led y delay de 1s para ver si corre a la velocidad programada.
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: c4_esp_VR en 21 de Enero de 2010, 12:08:57
Citar
Para configurar el oscilador interno lo realizas mediante los fuses correspondientes (ver *.h del dispositivo) y setup_oscillator.

Hay tantos fuses en este PIC que no sé ni para que sirven muchos de ellos. :5]

Citar
Leyendo la datasheet creo que puedes hacerlo con esto:

Código:

#fuses INTRC_IO //reloj interno sin salida en pin
#fuses NOFCMEN //sin chequeo de cambio de relojes
#fuses PUT

y luego en el programa debes poner

Código:

setup_oscillator(OSC_64MHZ | OSC_INTRC);


Pruébalo con un led y delay de 1s para ver si corre a la velocidad programada.

Imagino también que habrá que poner

Código: [Seleccionar]
#use delay(clock=64000000)
Mañana lo intento y comento el resultado. Por cierto que significan estos dos fuses más exactamente.

Código: [Seleccionar]
#fuses INTRC_IO //reloj interno sin salida en pin
#fuses NOFCMEN //sin chequeo de cambio de relojes

Otra pregunta tonta es...si ya tiene internamente un clock a 16MHz que con un PLLx4 hace 64MHz...entonces, ¿¿¿para que sirve poner un cristal???, es decir, ¿¿¿qué ventajas tendría en este caso???...

Gracias.
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: migsantiago en 21 de Enero de 2010, 12:18:20
Sí, agrega el clock de 64M.

Usar clock interno es sólo útil para aplicaciones que no son sensibles a retrasos. Un oscilador RC interno cambia su frecuencia de oscilación debido a cambios de temperatura. Si lo usas para un RTC entonces después de algunos meses habrá retrasos o adelantos de segundos en el tiempo.

Pero los cristales son mucho más precisos, oscilan con mejores tolerancias y no cambia mucho su frecuencia con la temperatura.

Es cuestión de tolerancias el usar uno o el otro.

Incluso hay pic24 que también traen oscilador interno y es tan bueno que cumple con las tolerancias para usarlo para el módulo USB.
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: Suky en 21 de Enero de 2010, 15:36:10
Citar
Para configurar el oscilador interno lo realizas mediante los fuses correspondientes (ver *.h del dispositivo) y setup_oscillator.

Hay tantos fuses en este PIC que no sé ni para que sirven muchos de ellos. :5]

Eso se arregla leyendo el datasheet!  :mrgreen: En el capitulo de características especiales se encuentra los detalles de los bits de configuración.


Saludos!
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: migsantiago en 21 de Enero de 2010, 16:19:33
No siempre Suky. Hay etiquetas FUSE que no son idénticas a lo que aparece en los diagramas de la datasheet. Siempre hay que experimentar para conocer su objetivo final, compilar el programa y comparar los bits levantados con los que uno esperaba.
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: Suky en 21 de Enero de 2010, 19:54:38
No siempre Suky. Hay etiquetas FUSE que no son idénticas a lo que aparece en los diagramas de la datasheet. Siempre hay que experimentar para conocer su objetivo final, compilar el programa y comparar los bits levantados con los que uno esperaba.

Te referís al nombre que le coloca CCS? Si es el caso, si, puede que no se sepa bien a cual se refiere. Pero no te compliques perdiendo tiempo en pruebas, usa el soft programador que es mucho mas transparente en es caso  ;-)


Saludos!
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: c4_esp_VR en 22 de Enero de 2010, 05:11:18
Hola compañeros:

Citar
Te referís al nombre que le coloca CCS? Si es el caso, si, puede que no se sepa bien a cual se refiere. Pero no te compliques perdiendo tiempo en pruebas, usa el soft programador que es mucho mas transparente en es caso  wink

Desgraciadamente no me fio mucho del SW y más cuando se trata de tiempos...pero aún así cuando no dispongo del micro físico siempre lo uso...ya que no queda otra.

Respecto al programa, he realizado lo siguiente y parece que funciona perfectamente, aunque tiene un cierto desfase, es decir si pongo este código en el micro sin cristal, a la salida del PIN_A0, el osciloscopio me da una señal cuadrada periódica de frecuancia 10.04Hz

Código: [Seleccionar]
#include<18F24K20.h>
#fuses INTRC_IO //Oscilador interno RC, no CLKOUT //CLKIN y CLKOUT como I/O //Poniendo INTRC de la misma frecuencia en PIN_A0
#fuses NOFCMEN //Quitándolo o no da la misma frecuencia en PIN_A0
#fuses PUT //Power Up Timer //El micro empieza ms más tarde para estibilzar la tensión //Quitándolo o no da la misma frecuencia en PIN_A0
#fuses NOWDT //Sin perro guardian
#fuses NOPROTECT //Sin protección de lectura
#fuses NOLVP //Sin programación Low Voltage
#FUSES BROWNOUT //Se resetea el micro cuando baja la tension a niveles no seguros //Quitándolo o no da la misma frecuencia en PIN_A0

#use delay(clock=64M)
#use rs232(baud=115200, xmit=PIN_C6, rcv=PIN_C7, stream=PC)

void main(void)
{
//setup_oscillator(OSC_64MHZ | OSC_INTRC);//No se pone pues ya queda definido con el fuse INTRC y use_delay, si se pone no funciona el micro

while (TRUE)
   {
output_high(PIN_A0);
delay_ms(50);
output_low(PIN_A0);
delay_ms(50);
}
}

Por otro lado si pongo el siguiente código, en el micro con cristal de 12MHz me da una frecuencia exacta de 10.00Hz

Código: [Seleccionar]
#include<18F24K20.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP //fuses para los demás micros //CON CLOCK
#use delay(clock=12M)
#use rs232(baud=115200, xmit=PIN_C6, rcv=PIN_C7, stream=PC)

void main(void)
{
while (TRUE)
   {
output_high(PIN_A0);
delay_ms(50);
output_low(PIN_A0);
delay_ms(50);
}
}

¿Qué le puede estar pasando a esto?

Me gustaría probar el micro que tiene cristal, y hacer así una prueba más exacta entre los micros, con un clock de 64MHz con un cristal de 12MHz externo pero no puedo ponerle el fuse PLL4...¿¿¿Cómo puedo hacer para que corra a 64MHz????

Un saludete y gracias.

Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: migsantiago en 22 de Enero de 2010, 10:48:32
Para que el oscilador del cpu opere a 64MHz a partir de un cristal externo debes usar uno de 16MHz y pasarlo por el 4xPLL. Debes activar el fusible H4 en CCS (HSPLL en el diagrama).

http://img191.imageshack.us/img191/8881/pice.png
(http://img191.imageshack.us/img191/8881/pice.png)
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: c4_esp_VR en 22 de Enero de 2010, 11:31:43
Hola migsantiago:

Primero gracias por contestar, como siempre estas para todo y es de agradecer.

Por otro lado como no he encontrado para que servia el fusible H4, he optado por poner este código un poco buscando en el datasheet y hacerlo a "pelo". Creo que está bien, al menos los temporizadores funcionan y los delay también.

Código: [Seleccionar]
#include<18F24K20.h>
#fuses NOWDT,NOPROTECT,NOLVP //fuses para los demás micros
#rom int8 0x300001 = {0x06} //Es igual que poner 00000110, FOSC<3:0>=0110=HS PLL Enable, donde 0x300001 es el registro del CONFIG1H
#use delay(clock=64M)//Con un cristal externo de 16MHz
#use rs232(baud=115200, xmit=PIN_C6, rcv=PIN_C7)

Muchas gracias por la ayuda, por cierto he probado a poner el H4 y en el registro de configuración de bits aparece lo mismo que si ponemos lo del rom anterior  ;-), además lo he probado en un micro físico y funciona perfectamente, si es que eres un crack migsantiago.  :-/
Título: Re: ¿Es posible usar un solo cristal para dos o más micros?
Publicado por: migsantiago en 22 de Enero de 2010, 12:15:05
No hay de qué. Ya sabes que todo está en la datasheet, el problema es hacerlo coincidir con las etiquetas del CCS.

Hay etiquetas que ni siquiera traen descripción:

http://img62.imageshack.us/img62/8629/ccs.png
(http://img62.imageshack.us/img62/8629/ccs.th.png) (http://img62.imageshack.us/img62/8629/ccs.png)

En fin, es prueba y error, pero nada de cracks.