AVR ISP-Programación LED SCK

Estoy usando un microcontrolador Attiny45 y USBtinyISP como mi programador, y esta es la primera vez que necesito conectar cosas (en este caso solo LED, pero eventualmente querré conectar una raspberry pi) a los pines de programación (SCK , MISO, MOSI). Como quiero que el microcontrolador sea reprogramable cuando esté todo soldado. Primero probé el circuito para asegurarme de que funciona. Esto es lo que encontré:

Si tengo un LED y una resistencia en serie entre SCK o MOSI, avrdude me arroja este error:

avrdude: inicialización fallida, rc=-1

desenchufar el LED elimina el error, pero ¿el ISP no permite esto? (Arduino tiene un LED conectado al pin 13 SCK)

Sin embargo, en MISO esto nunca sucede y soy libre de cargar el programa con el LED adjunto. ¿Por qué es esto? ¿Hay alguna forma de obtener este comportamiento en SCK y MOSI? ¿Cómo se verá afectado este problema si reemplazo los LED con raspberry pi GPIO a través de un convertidor de nivel lógico?

"el programador debe estar protegido de cualquier dispositivo, que no sea el AVR, que pueda intentar controlar las líneas". No veo cómo los LED podrían impulsar las líneas.
@Michal: No estoy seguro de si su comentario fue anterior o posterior a la respuesta de alexan_e, pero: la hoja de especificaciones del AVR dice que las líneas utilizadas para programar el AVR no deben ser interrumpidas por otros dispositivos conectados, y especialmente por otro dispositivo que envíe señales que podrían ser (mal)interpretado como parte de la comunicación de programación. Podría resultar una falla en la programación, o peor aún, una programación difícil de corregir de los fusibles. Los LED "accionan" en el sentido de que extraen corriente del AVR o pin del programador, evitando que el AVR o el programador produzcan niveles de voltaje válidos de 0 y 1. Afortunadamente, Avrdude se da cuenta de esto.

Respuestas (1)

Arduino tiene un LED conectado al pin 13 SCK (y no tiene ningún problema)

Sí, lo hacen, pero eche un vistazo a un esquema típico de Arduino UNO (como ejemplo)

ingrese la descripción de la imagen aquí

Como puede ver, el pin SCK está conectado a un OPAMP cableado como un búfer que luego impulsa el LED. El efecto de eso es que el pin SCK solo ve como una carga la alta impedancia de entrada del OPAMP, por lo que el programador puede controlar fácilmente el pin.

Sin embargo, en MISO esto nunca sucede.

El pin MISO es la salida esclava y, en este caso, el esclavo es el AVR, que aparentemente tiene una mayor capacidad de control en comparación con el programador y puede controlar con éxito la salida incluso con el LED conectado.

Si desea usar un LED, debe usar un controlador de alta impedancia (como un OPAMP, un comparador, un mosfet, etc.), o puede usar un puente para desconectar el LED mientras programa.

Aparte, tengo LED conectados a los pines de programación AVR con bastante frecuencia sin ninguna consecuencia. Creo que el verdadero problema con el circuito OP es la ruta actual de un pin al otro a través del LED. En cualquier caso, usar un controlador como este es una buena práctica.