Estoy usando el ATtiny861a y lo he hecho para que el SPI se conecte a una radio y una fuente de memoria externa a través de dos pines de selección de chip diferentes pero compartiendo la misma línea MISO/MOSI/CLK.
Corrígeme si me equivoco, pero ¿existen dos formas diferentes de conectar la programación del ISP al circuito? La primera forma es que necesito poner una resistencia en cada línea MISO/MOSI/CS/SCK antes del 'Esclavo' y la otra forma es que pongo una resistencia Pull-up/Pull-down en las líneas CS. Encontré esto en otro sitio. ( http://www.societyofrobots.com/robotforum/index.php?action=dlattach;topic=10394.0;attach=4420;imagen )
¿Qué forma de programar el circuito sería mejor (más eficiente energéticamente durante la instalación sin programación/más fácil)? El circuito será un nodo inalámbrico por lo que no estará "funcionando" cuando lo estemos programando.
(del enlace de arriba) Si estoy usando 1.8V para alimentar mi circuito, ¿cambiaría las resistencias pull-up para conectarlas a 1.8V? ¿Hay alguna desventaja (más consumo de energía) en usar Pull-up versus Pull-down? ¿Las resistencias pull-up/pull-down son intercambiables o solo se pueden conectar a ciertos pines? Si el consumo de energía es importante, ¿qué valores de resistencia debo usar?
Si los dispositivos esclavos son verdaderos módulos SPI seleccionados como esclavos, si su selección de reloj se eleva, deberían poner todas sus salidas en tres estados y dejar de escuchar sus entradas.
Así que el esquema que vinculaste funciona. Solo imagina que el +5V dice "VCC", porque debería. El pull-up siempre debe ir al VCC de su dispositivo total.
En ese sistema, solo funcionarán los pull-ups, porque los CS de los dispositivos esclavos deben aumentar en el modo de programación, cuando programa un Atmel, se reinicia y sus salidas se vuelven tri-state (flotantes). Por lo tanto, las resistencias elevarán automáticamente el CS.
El valor de la resistencia que seguirá funcionando depende de dos cosas: su velocidad de programación y la capacitancia de las trazas CS en su dispositivo. Como tampoco lo sé, no puedo asesorarlo completamente, pero en promedio, estimaría que 10kOhm debería estar bien para un dispositivo pequeño y una velocidad de programación de 250kHz o menos. Eso probablemente permitirá que el CS del esclavo se cargue hasta el máximo antes del primer pulso de reloj útil con programadores AVR estándar.
Cualquier cosa mucho más alta que 10k a 1.8V no le ofrecerá ahorros que notará. A 1,8 V, el 10k solo consumirá 180 uA cuando se afirma el SS, y estoy dispuesto a apostar que las acciones de conmutación y comunicaciones en el AVR usarán mucho más que eso, y mucho menos el dispositivo esclavo.
Puede experimentar con 22k y 50k si lo desea, pero sea realista acerca de todos los parámetros: cuando CS es bajo, se está comunicando. Comunicar es un drenaje razonable en sí mismo.
Ignacio Vázquez-Abrams
Therusscher