¿Puedo usar un solo oscilador de cristal para múltiples IC? [duplicar]

3

Fondo

Estoy construyendo un proyecto Arduino que básicamente consiste en cinco Bareduinos .

Pregunta

¿Puedo compartir un solo cristal de 16 MHz con múltiples circuitos integrados (ATMega328) o cada IC tiene que tener su propio cristal?

Si cada uno necesita su propio cristal, ¿tendré alguna latencia de ejecución entre los distintos IC? Por ejemplo, si envío una señal de un IC a otros cuatro IC, y les digo que comiencen a parpadear su propio LED, ¿el LED que parpadea estará sincronizado o algo desincronizado?

    
pregunta Matt Cashatt

2 respuestas

8

El ATMega328 tiene un oscilador de giro completo, con giro de riel a riel en la salida XTAL2. Buffer con un 74HC1G14 Schmitt-trigger, y tienes un reloj que puedes 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. Yo sugeriría que las conexiones sean lo más cortas posible, ya que causarán mucha radiación. Puede limitarlo utilizando un filtro RC en la salida del disparador de Schmitt. Una resistencia de 100 \ $ \ Omega \ $ más un condensador de 15 pF le da una frecuencia de corte de 100 MHz.

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

    
respondido por el stevenvh
2

Ciertamente, pueden compartir un cristal de 16 MHz si las trazas tienen una capacitancia total menor a la requerida para cargar el oscilador (supongo que 10pF / 20cm para trazas de 20mil) y el ruido Demasiado TM no se inyecta 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 ni de oscilador. Las interrupciones que no sean la de activación, la que dispara para encender los LED, deben ignorarse para obtener un rendimiento inferior al microsegundo. Desde aproximadamente 10 µs hasta 100 µs, siempre que todas las rutinas de servicio de interrupción (ISR) sean lo que se conoce como "delgado" (en este caso, significa que regresan en menos de 10 µs), el micro puede realizar algunas 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 de sub-115200 baudios. Una vez en el rango de milisegundos, uno puede permitirse programar ISR en otra cosa que no sea Assembly, permitir la señalización secuencial en lugar de concurrente (es decir, pueden estar encadenados) y, en general, no preocuparse tanto por la sincronización. Por encima de 10 ms, nuestros cerebros comienzan a detectar parpadeo.

Lo anterior está lleno de conjeturas, sobre y alrededor.

    
respondido por el tyblu

Lea otras preguntas en las etiquetas