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?
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)
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.
Ignacio Vázquez-Abrams
Mical
gwideman