Posible duplicado:
¿Cuál es el esquema para compartir un cristal con dos micros?
Estoy construyendo un proyecto Arduino que básicamente consta de cinco Bareduinos .
¿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?
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.
yippie
Kortuk
Matt Cashatt