El clon AVRISP mk2 puede programar Arduino Uno, pero no un ATMega328P independiente

Tengo una imitación de AVRISP mk2 que no puedo hacer funcionar.

Escenario 1: clon de AVRISP mk2 frente a Arduino Uno: funciona

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 avrdudepara consultar el estado del fusible y cargar .hexarchivos

  • El cable está enchufado al revés y una luz naranja en el AVRISP comienza a parpadear

Escenario 2: AVRminiProg vs. ATMega328P en protoboard: funciona

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 avrdudepara consultar fusibles/cargar programas.

Escenario 3: clon de AVRISP mk2 frente a la misma placa de pruebas: no funciona

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?

¿Supongo que tienes un multímetro? ¿Puede medir el voltaje suministrado por el AVRISP (en su encabezado de salida) cuando está en circuito abierto y en una carga simple (digamos una resistencia de 330 ohmios)?
No creo que el AVRISP suministre voltaje al circuito bajo programación.
Te pido disculpas, tienes razón. Pensé que había alimentado un ATmega de placa de prueba de esa manera, pero debo estar equivocado.

Respuestas (2)

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.

'De todos modos', ¿funcionó?
Reemplacé el viejo avrisp mkii y funcionó perfectamente.

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.