¿Puedo usar un oscilador de cristal único para múltiples circuitos integrados? [duplicar]

Posible duplicado:
¿Cuál es el esquema para compartir un cristal con dos micros?

Fondo

Estoy construyendo un proyecto Arduino que básicamente consta de cinco Bareduinos .

Pregunta

¿Puedo compartir un único cristal de 16 MHz con varios circuitos integrados (ATMega328), o cada circuito integrado tiene que tener su propio cristal?

Si cada uno necesita su propio cristal, ¿tendré alguna latencia de ejecución entre los diversos circuitos integrados? Por ejemplo, si envío una señal de un IC a otros cuatro IC, diciéndoles a cada uno que comience a parpadear su propio LED, ¿el parpadeo del LED estaría sincronizado o ligeramente desincronizado?

O este electronics.stackexchange.com/questions/27989/… donde explico que algunos microcontroladores (AVR) pueden generar el reloj de cristal almacenado en uno de sus pines.
esto es un duplicado para mí, pero como nota al margen, podría hacer una pregunta sobre cuánto los desincronizaría esto. Una nota importante aquí, 100 ciclos de reloj desincronizados (que es una cantidad increíble) no serían visibles a simple vista, tendrían que ser órdenes de magnitud mayor desincronización
¿No hay diferencia entre compartir un solo cristal entre dos circuitos integrados y compartir un solo cristal entre 5 circuitos integrados? Si hay una diferencia, esta pregunta no sería un duplicado y alguien más podría necesitar la misma respuesta.

Respuestas (2)

El ATMega328 tiene un oscilador de giro completo, con giro de riel a riel en la salida XTAL2. Guárdelo con un disparador Schmitt 74HC1G14 y tendrá un reloj que puede distribuir a los otros controladores. El disparador Schmitt tiene una capacitancia de entrada de típicamente 1,5 pF, por lo que es posible que desee restar eso de la capacitancia de carga del oscilador.

Este reloj puede controlar las entradas XTAL1 de los otros dispositivos directamente. Sugeriría mantener las conexiones lo más cortas posible, porque causarán mucha radiación. Puede limitar eso usando un filtro RC en la salida del disparador Schmitt. un 100 Ω resistencia más un condensador de 15 pF le dan una frecuencia de corte de 100 MHz.

No olvide programar los fusibles CKSEL en los otros dispositivos a "0000".

Ciertamente pueden compartir un cristal de 16MHz si las trazas tienen una capacitancia total menor que la requerida para cargar el oscilador (suponga 10pF/20cm para trazas de 20mil) y no se inyecta demasiado ruido TM en algún lugar a lo largo de la línea.

La sincronización entre Arduinos, sin embargo, es una bestia diferente. Primero defina la variación de fase máxima permitida para que el proyecto funcione. Para una sincronización superior a 63 ns, sugiero una nueva pregunta que pregunta cómo hacerlo, sin restricciones de IC u oscilador. Las interrupciones que no sean la de activación, la que se dispara para encender los LED, deben ignorarse para un rendimiento de menos de un microsegundo. Desde alrededor de 10 µs a 100 µs, siempre que todas las rutinas de servicio de interrupción (ISR) sean lo que se conoce como "delgadas" (en este caso significa que regresan en menos de 10 µs), el micro puede realizar otras tareas simples, pero nada como la comunicación en serie u otros deberes continuos. En el rango de 100 µs a milisegundos, el micro es libre de realizar algunas tareas más exigentes impulsadas por interrupciones, como la comunicación en serie por debajo de los 115200 baudios. Una vez en el rango de milisegundos, uno puede permitirse programar los ISR en algo que no sea ensamblaje, permitir la señalización secuencial en lugar de concurrente (es decir, se pueden encadenar) y, en general, no preocuparse tanto por la sincronización. Por encima de 10 ms, nuestro cerebro comienza a detectar parpadeo.

Lo anterior está lleno de conjeturas, sobres y rodeos.