No puedo programar ATMEGA con ICSP

Para un proyecto en el que he estado trabajando, he rediseñado un esquema de PCB funcional para que use todos los componentes SMD y ahora cuente con un encabezado ICSP. La placa es esencialmente un controlador LED controlado por un ATMEGA168. Es compatible con Arduino y la versión PTH funciona bien.

Ensamblé la nueva placa, pero parece que no puedo programarla usando mi AVRISPMkII. Dado que esta es la primera vez que hago algo como esto, estoy luchando para averiguar por dónde empezar cuando se trata de depurar el tablero. Cuando intento comunicarme con la placa, recibo uno de dos mensajes de error. Estos son:

avrdude: stk500_getsync(): not in sync: resp=0x00

y

avrdude: stk500_getsync(): not in sync: resp=0x66

Que yo sepa, este fallo se debe a que no puedo comunicarme con la placa. Me preguntaba si esto podría deberse a que dañé el ATMEGA mientras soldaba, arruiné el diseño del circuito o algo más. ¿Cómo puedo depurar este tipo de cosas?

[Editar: eliminé el enlace a mi esquema por privacidad, ahora el problema está resuelto]

Respuestas (1)

Sí, ese error se debe a que no hay comunicación entre la placa y su computadora. Desafortunadamente, esto es difícil de depurar ya que hay casi una cantidad infinita de problemas que pueden causar esto. Todo lo que puedo recomendar es esto:

Necesita solucionar problemas en ambos extremos:

A bordo:

1) Verifique sus voltajes. ¿Son correctas? Si es posible, hágalo con un osciloscopio. No todos los programadores proporcionan un voltaje, es posible que su placa lo necesite. Por lo general, el STK500 proporciona 5V. Solo debe proporcionar voltaje de una fuente; el programador o la placa - NO AMBOS.

2) Verifique que su encabezado ICSP coincida correctamente con el pin 1 en el encabezado que va al pin 1 en el programador. En el pasado, cometí errores al voltear una pieza o girarla durante el diseño de tal manera que el pinout se reflejaba y ya no importaba correctamente.

3) ¿A dónde va su red de reinicio? No puedo encontrar un botón ni nada. Si está vinculado a GND, está manteniendo el MEGA en reinicio.

4) ¿Tiene cargado el gestor de arranque en el ATMEGA? Arduino IDE no funcionará sin él.

5) El ICSP puede estar desactivado en la placa. Es posible que haya hecho esto por accidente, o que vino de fábrica con ICSP deshabilitado. Si puede cargar software a través de él de otra manera, aún es posible que ICSP esté deshabilitado. Entonces, si ICSP está deshabilitado, ¿qué puede hacer? Vamos a tener que restablecer el chip. Leer más aquí

En la computadora:

1) ¿Se seleccionó el puerto serie correcto?

2) ¿Está instalado el controlador correcto?

3) ¿Puedes programar un Arduino regular usando este método? Si puedes, algo anda mal con tu tablero.

Gracias por los consejos, los revisaré y veré si se me ocurre algo. El reinicio se eleva desde ATMEGA a +5v a través de una resistencia de 10k, esto es algo que he hecho antes en el pasado porque no quería tener un botón de reinicio en esta placa. Todavía no he podido instalar el gestor de arranque en ATMEGA debido a estos problemas de ICSP.
AVRISPMkII está bien con una resistencia de 10k, pero si usa un valor más bajo, es posible que el programador no pueda restablecer lo suficientemente bajo.
Estoy empezando a preguntarme si el AVRISPMkII que compré funciona o no. No recibo un mensaje de error diferente que dice: avrdude: stk500_recv(): programmer is not respondingcuando intento programar mi placa Arduino Mega 2560 (que sé que funciona).
Tus pinnouts se ven correctos. Si el chip tiene energía y un oscilador, debería programar. Probaría con otro chip como el que tienes o en una placa de prueba y vería si el programador puede hablar con él.
Después de un poco de depuración (¡gracias por los consejos nuevamente!), terminé reemplazando mi clon AVRISP por uno genuino. Llegó hoy y después de un poco de prueba recibí buenas noticias: avrdude: AVR device initialized and ready to accept instructions- ¡gracias por la ayuda!