¿Cómo planeo la programación en circuito de un AVR?

12

Mi método habitual de reprogramación de AVR (hasta ahora limitado a ATtiny13 y ATtiny2313) es desconectar el chip del circuito host, enchufarlo a otra placa de pruebas con todas las conexiones ICSP en su lugar, programar y luego reemplazar. Sin embargo, sigo escuchando que uno puede programar el chip en su lugar (que es, entiendo, todo el punto de ICSP).

¿Hay alguna consideración especial de hardware que uno debe tener en cuenta antes de programar el chip in situ? Por ejemplo, me preocupa que el proceso ICSP pueda dañar los componentes del circuito conectados a los mismos pines AVR que se usan para ICSP. ¿Se necesita ocasionalmente agregar diodos o algún otro tipo de amortiguación para proteger estos componentes?

Sé que esta pregunta suena un poco vaga, y supongo que lo es, pero no he proporcionado detalles de mi circuito en particular porque estoy interesado en reglas generales más generales. Es decir, ¿uno nunca tiene que preocuparse por esto, o la respuesta realmente depende del circuito particular del que forma parte la MCU?

Tim
fuente

Respuestas:

15

He usado ISP para casi todas las placas AVR que he hecho; No hay nada que temer. El manual AVR ISP mkII ofrece un resumen bastante bueno de las limitaciones que debe tener en cuenta en la sección "Interfaz de destino". Básicamente, si ejecuta los pines MISO / MOSI / SCK directamente al programador y tiene unos 820 ohmios entre ellos y el resto del circuito (y no está haciendo nada raro con el pin de reinicio), está bien. No me preocuparía de que el ISP dañe otros componentes; No es un programador de alto voltaje. Todas las señales funcionan a 5V, por lo que si puede dañar un componente externo, también puede hacerlo su microcontrolador.

Si realmente está atrapado con una placa que no permite la programación de ISP, al menos trataría de usar un zócalo ZIF para su placa de programación. Son caros, pero mejorarán en gran medida su calidad de vida.

phooky
fuente
Gracias por el enlace, eso es exactamente lo que busco. En realidad, no estoy usando un verdadero AVR ISP, solo un arduino adecuadamente programado. (!) Estoy reemplazando esto con un Bus Pirate en unos pocos días, así que armar una tabla con enchufes ZIF es definitivamente algo que planeo hacer. ¡Mi procedimiento actual es extremadamente feo!
Tim
1

Use un puente o un interruptor para poder desconectar físicamente el encabezado ICSP. De esta forma, puede compartir los pines con otras funciones sin preocuparse y sin tener que jugar con sus otros componentes.

Esta parece ser la solución más obvia y segura, y es lo que uso.

(Mi primera respuesta fue eliminada, así que he intentado agregar más detalles).

Ali Afshar
fuente
¿Cómo funcionaría eso? Luego, cuando el interruptor / puente está conectado, los pines seguirán conectados al resto del circuito.
eeze
0

Desafortunadamente, no puede hacerlo en la programación de circuitos para sus AVR si los pines son compartidos por otras funciones, por ejemplo, la iluminación de LED. Si bien puede funcionar, no está garantizado, ya que puede causar que las salidas del programador o µC bajen demasiado para que funcione.

Otra alternativa es ordenar sus chips preprogramados. Sé que Microchip ofrece esto para algunos de sus chips, pero no estoy seguro acerca de Atmel.

Thomas O
fuente
Oh bueno, sospechaba esto. Supongo que tendré que seguir haciendo las cosas a mi manera lenta y torpe. (Ah, y no hay posibilidad de que Atmel haga la preprogramación para mí, solo soy un humilde aficionado. :-))
Tim
Microchip cobra ~ $ 40 "tarifa de instalación". De nuevo, inseguro sobre Atmel. Si realiza un pedido en el rango de 10-100, probablemente valga la pena.
Thomas O
3
He programado muchas placas con otras cargas en los pines SPI, particularmente LED, sin ningún problema. Solo tenga cuidado de que nada más conduzca las señales. Esto significa, por ejemplo, si tiene un dispositivo SPI conectado, dele una resistencia pull-up o similar para mantenerlo también en restablecimiento o sin seleccionar.
Yann Vernier