No se puede programar ATmega128 - 16AU usando USBasp

Estoy tratando de programar un microcontrolador ATmega128 (comprado en Robokits ). He conectado el encabezado ISP de 10 pines del programador USBasp a los 6 pines (MOSI, MISO, SCK, RESET, VCC, GROUND) de la MCU.

Pero cada vez que trato de programar la MCU, el resultado es:

C:\Documents and Settings\intern>avrdude -p m128 -c usbasp
avrdude: warning: cannot set sck period. please check for usbasp firmware update
avrdude: error: programm enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
     Double check connections and try again, or use -F to override
     this check.
avrdude done.  Thank you.

También intenté conectar un cristal externo de 8MHz a la MCU como se indica en esta publicación , pero no funcionó.

ATmega128 - Imagen

ingrese la descripción de la imagen aquí

¿Está suministrando energía al ATMega? Intente también agregar el -B 1argumento a la línea de comando avrdude
El VCC del ATmega está conectado al Vcc (segundo pin) del encabezado ISP de 10 pines
Eso no significa necesariamente que el ISP/programador esté suministrando energía al uC. El propio AVRISP MKII de Atmel ni siquiera enciende el objetivo (sin piratearlo) y no programa.
Revisé los pines Vcc y GND, medí 5V y 0v respectivamente
@EkriirkE También probé con -B 1. no funcionó
¿Tiene alguna capacitancia en las conexiones de la fuente de alimentación del ATmega? Debe tener un capacitor de 0.1 uF por pin Vcc. Además, debe conectar todos los pines de alimentación y tierra. No puedo decir si lo hiciste por las imágenes.
@ConnorWolf Sí, los tengo conectados.
Pero, ¿tiene condensadores de derivación para cada pin?
OP, si todo lo demás falla, le recomendaría que consulte este artículo aquí. Habla sobre la configuración de Atmel Studio con USBasp en general, pero trata mucho sobre el uso de USBasp. shannonstrutz.com/?p=629

Respuestas (2)

Se supone que el pin 1 (nPEN) se mantiene bajo durante el encendido, por lo que es posible la programación SPI.

nPEN tiene pull-up interno, por lo que es imprescindible conectar a tierra este pin durante el encendido; de lo contrario, no puede programarlo con el USBasp.

"PEN es un pin de habilitación de programación para el modo de programación en serie SPI, y se eleva internamente. Al mantener este pin bajo durante un reinicio de encendido, el dispositivo ingresará al modo de programación en serie SPI. PEN no tiene ninguna función durante el funcionamiento normal. "

Por lo tanto, deberá eliminar la conexión a tierra en el Pin 1 para un comportamiento de arranque normal.

  • También deberá usar los pines PE0 como MOSI, PE1 como MISO y SCK como SCK. Todo esto se describe en la sección Programación en serie SPI en la página 300 en la hoja de datos para ATmega128.
La puesta a tierra de PEN es opcional ya que los programadores pueden poner SCK en BAJO cuando se eleva la señal de REINICIO. Se debe usar PEN cuando no se garantiza que SCK sea BAJO al reiniciar. He probado para trabajar con PEN flotante (internamente levantado) y los programadores USBAsp y BusPirate.

@Bishal

Yo también tengo exactamente el mismo programador y me parece que el MISO y el MOSI están intercambiados en los pines del encabezado del ISP.

Sin embargo, en el zócalo zif parecen estar conectados al lugar correcto para un chip de 40 pines. Probablemente, intercambiar MOSI y MISO en los pines del ISP funcione para usted.