Tengo una imitación de AVRISP mk2 que no puedo hacer funcionar.
Si tomo un Arduino Uno y conecto el cable ICSP de 6 pines del AVRISP, sucede una de dos cosas, ambas como se esperaba:
El cable está enchufado en la orientación correcta y puedo usarlo avrdude
para consultar el estado del fusible y cargar .hex
archivos
El cable está enchufado al revés y una luz naranja en el AVRISP comienza a parpadear
Continuando, puse un ATMega328P en una placa de prueba, conecté la alimentación/tierra y usé cables de puente para conectar los pines Reset y MOSI/MISO/SCLK a un cable ISCP de 6 pines. Luego tomo un AVRminiProg, conecto el otro extremo del cable ISCP y conecto alimentación/tierra (a diferencia del AVRISP, el AVRminiProg suministra 5V por sí solo al sistema en programación). Puedo medir los 5V en la placa de prueba, el ATMega328P funciona como se esperaba y puedo usarlo avrdude
para consultar fusibles/cargar programas.
Los dos pasos anteriores fueron solo de diagnóstico; mi objetivo real es usar el AVRISP para programar el ATMega328P en una placa de prueba, para poder suministrar mi propio voltaje (mi objetivo es usar 3.3V). Así que tomo el mismo cable ISCP que en el escenario 2, pero lo conecto al AVRISP en lugar del AVRminiProg. También conecto 3.3V (de un Arduino Uno ya que ya está en el escritorio) a la placa de pruebas.
Sin embargo, el LED naranja en el AVRISP inmediatamente comienza a parpadear, como si la orientación del cable fuera incorrecta; aunque la misma orientación funcionó bien para el AVRminiProg. Si trato de intercambiar solo energía y tierra, todavía no funciona, pero consigo que el voltaje entre ellos caiga a casi nada.
En mi desesperación, terminé descargando el diseño de PCB del Uno para rastrear los pines ICSP y asegurarme de que estoy conectando las cosas correctamente. Sin embargo, parece que si solo conecto la alimentación y la tierra, y nada más, y ambos de la misma manera que están en el Arduino Uno, al AVRisp mk2, ya obtengo el parpadeo naranja. Sin embargo, al conectar el mismo AVRisp mk2 a los pines ICSP en el Uno mismo, funciona como se esperaba.
¿Qué estoy haciendo mal?
Tuve una experiencia similar antes en la que estaba usando el AVRISP MK2 para un proyecto. Estaba programando un Atmega32 con él y lo acorté por error. Inicialmente, intenté grabar un pequeño código en el Arduino Uno y funcionó bastante bien. Pero con el AVR seguía sin funcionar. Así que tomé prestado un USBasp de un amigo e intenté grabar el código en el AVR y funcionó perfectamente bien. Así que le escribí un correo a Atmel describiendo el problema y me respondieron que podría haber una posibilidad de que, dado que el IDE de arduino usa avrdude para grabar el cargador de arranque, tal vez use un controlador diferente para el ISP. De todos modos, sugirieron que el AVRISP MK2 podría estar funcionando mal y me pidieron que lo reemplazara.
Mi problema resultó ser causado por una resistencia pull-up no coincidente en el pin RESET del AVR. Estaba usando una resistencia de 220 ohmios por error. Después de reemplazarlo por uno de 10 KOhm, ahora puedo programarlo con el clon AVRISP mk2.
gbulmer
Cactus
gbulmer