Comunicación SPI durante la programación

0

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íjame si estoy equivocado, pero ¿hay dos maneras diferentes en las que pueda conectar la programación del ISP al circuito? La primera forma es que necesito colocar una resistencia en cada línea MISO / MOSI / CS / SCK antes de la 'Esclavo' y la otra forma es que coloco una resistencia de subida / bajada en las líneas de la CS. Encontré esto en otro sitio. ( enlace )

¿Cuál sería la mejor manera de programar el circuito (más eficiencia de energía durante la no programación / instalación más fácil)? El circuito será un nodo inalámbrico, por lo que no estará "funcionando" cuando lo estemos programando.

(desde el enlace de arriba) Si estoy usando 1.8V para alimentar mi circuito, ¿cambiaría las resistencias de pull-up que se conectarán a 1.8V? ¿Hay algún inconveniente (más consumo de energía) para usar Pull-up contra Pull-down? ¿Las resistencias de pull-up / pull-down son intercambiables o solo se pueden unir a ciertos pines? Si el consumo de energía es importante, ¿qué valores de resistencia debo usar?

    
pregunta Therusscher

1 respuesta

1

Si los dispositivos esclavos son verdaderos módulos SPI seleccionados por el esclavo, si su selección de reloj es alta, deben poner todas sus salidas en tri-state y dejar de escuchar sus entradas.

Así que el esquema que has vinculado funciona. Solo imagine 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, ya que los CS de los dispositivos esclavos deben tener un alto nivel de programación, cuando se programa un Atmel, se reinicia y sus salidas pasan a estado triple (flotante). Así que las resistencias tirarán automáticamente el CS alto.

El valor del resistor aún funcionará depende de dos cosas: la velocidad de programación y la capacidad de las trazas CS en su dispositivo. Como tampoco lo sé, no puedo recomendarlo por completo, pero en promedio estimaría que 10kOhm debería estar bien para un dispositivo pequeño y una velocidad de programación de 250 kHz o inferior. Probablemente esto permitirá que la CS del esclavo se cargue hasta el máximo antes del primer pulso de reloj útil con los programadores AVR estándar.

Cualquier cosa mucho mayor que 10k a 1.8V no le ofrecerá ahorros que usted notará. A 1.8 V, el 10k solo agotará 180uA cuando se afirme el SS, y estoy dispuesto a apostar que las acciones de conmutación y comunicaciones en el AVR utilizarán mucho más que eso, y mucho menos el dispositivo esclavo.

Si lo desea, puede experimentar con 22k y 50k, pero sea realista con respecto a todos los parámetros: cuando CS es bajo, se está comunicando. La comunicación es un drenaje razonable en sí mismo.

    
respondido por el Asmyldof

Lea otras preguntas en las etiquetas