¿Cómo puedo solucionar un error de falta de sincronización de AVRdude al programar Arduino a través de un cable USB a serie?

Estoy tratando de construir esta iluminación ambiental para PC. Esto funcionó perfectamente en mi Arduino Uno. Mi siguiente paso fue hacerlo usando "Arduino en una placa de prueba" . Así que compré un chip ATmega328 en blanco y quemé el cargador de arranque Arduino (para la placa "Arduino Duemilanove con ATmega328") usando Arduino IDE y USBasp; y sé que esto se ha cargado correctamente ya que este chip ATmega funciona bien en el Uno.

Luego hice el convertidor de USB a serie usando FT232RL ; pero sus controladores no se instalaron en mi PC (Windows 7 x64). Sospecho que sobrecalenté el chip FTDI de montaje superficial y lo maté mientras lo soldaba a mano.

Entonces, lo mantuve a un lado y obtuve este puente convertidor de USB a serie: (Perdón por las fotos de mierda) Usé un ST232CN adicional en mi placa de pruebas para convertir los niveles de voltaje de RS232 a TTL, como se muestra en este página _ Y esto funciona bien, como verifiqué a partir de una prueba de bucle invertido. Y conecté el pin 9 de ST232 al pin 2 de ATmega y el pin 10 al pin 3.

Cuando traté de cargar un ejemplo de parpadeo desde Arduino IDE, aparece este error:

Binary sketch size: 1026 bytes (of a 30720 byte maximum)
avrdude: stk500_getsync(): not in sync: resp=0x00

Cuando realizo la carga detallada (Shift+Upload), recibo este mensaje/error:

avrdude: usbdev_open(): did not find any USB device "usb"

Además, intenté agregar resistencias pull-up de 1k en los pines 2 y 3 de ATmega, pero no funcionó. Entonces, ¿supongo que el problema ahora está en la comunicación en serie del ST232 al ATmega? ¿Y hay alguna conexión especial con el pin Reset de ATmega? Lo subí a 5V con una resistencia de 10k.

Un esquema o una imagen de la configuración de su tablero ayudaría.
Además, sabe que si el cargador de arranque está en el chip, puede programarlo solo con Arduino, ¿verdad? Consulte electronics.stackexchange.com/questions/30908/…
@sptrks Esta es la configuración de mi tablero.
@sptrks No sabía eso. Gracias. Pero como este proyecto es estar en comunicación constante con la PC, tengo que hacer funcionar la interfaz serial. Así que supongo que simplemente cargar un boceto una vez en el ATmega no ayudaría.
Puedo pensar en dos cosas en este momento: TX y RX están al revés (el bucle invertido funcionaría, pero las comunicaciones con arduino no) o el cristal de arduino no oscila porque está en una placa de prueba. Cargue Blink con este chip en el UNO y verifique que Blink funcione en el protoboard.
@geometrikal Blink funciona bien en la placa de pruebas. E intenté insertar el cristal lo más cerca posible de los pines del chip. Sigue recibiendo el mismo error. Además, probé con todas las combinaciones de pines TX y RX, en vano :(
¿Restableció el chip justo antes, al mismo tiempo o justo después de ordenar la carga? Cada vez que recibí el error 'no sincronizado', estaba relacionado con ese tiempo relativo. Para mi protoboard y Eclipse/AVRDude, desconectar el pin de reinicio justo antes o justo cuando hago clic en el comando de carga es el momento adecuado. Pero también verifique que su PC realmente vea el adaptador cuando lo conecte.
@JRobert ¡Muchas gracias por ese consejo! ¡Probé con Blink y funcionó bien! En el IDE de Arduino, cuando se hace clic en cargar , se tarda de 5 a 6 segundos en compilar. Luego presioné el botón de reinicio y justo cuando muestra "Cargando", dejo de presionarlo. Ahora intentaré con el código de mi proyecto y espero que la comunicación en serie también funcione. ¡Salud!
Actualización: el proyecto funciona bien en la placa de pruebas. El momento de conectar a tierra el pin de reinicio funcionó. ¡Gracias por toda tu ayuda!
@potato_in_my_ear: el formato adecuado para publicar una solución no es una edición sino una respuesta. Mire a continuación y verá un cuadro titulado "Su respuesta" en el que puede ingresarla. Después de ingresar, las personas votarán sobre su respuesta y puede 'aceptarla' presionando la marca de verificación a la izquierda de la respuesta.
@KevinVermeer No quería tomar el crédito, ya que JRobert proporcionó la solución. ¡Gracias!
@potato_in_my_ear: Me alegro de que haya ayudado. Eres un caballero y un erudito; haré que mi comentario sea una respuesta.
¡La solución es que la gente deje de dar respuestas en los comentarios!

Respuestas (6)

Cada vez que recibí el error 'no sincronizado', estaba relacionado con que simplemente me perdí el tiempo de reinicio (¡u olvidé el reinicio por completo!). Para mi protoboard y Eclipse/AVRDude, desconectar el pin de reinicio justo antes o al mismo tiempo que hago clic en el botón de carga es el momento adecuado. Pero también verifique que su PC realmente vea el adaptador cuando lo conecte.

Las placas arduino posteriores están diseñadas para reiniciarse cada vez que se realiza una conexión en serie, y mediante programación mediante el gestor de arranque. Este artículo de blog describe cómo funciona y, lo que es más interesante, cómo introducirlo en placas anteriores. No debería ser demasiado difícil ponerlo en una placa de pruebas si quisieras. El chip debe tener un gestor de arranque compatible, por supuesto (que ya has puesto en el tuyo). Para las placas de prueba, solo hago el baile del botón de reinicio/clic del mouse.

Encontré a alguien que decía que puede hacer que la cadena de herramientas avr haga el reinicio editando avrdude.conf ; aquí (en comentarios). Pero no estoy seguro de cómo hacerlo. Puede usted ayudar. Odio presionar reset todo el tiempo...
Esto requerirá soporte de hardware en la placa Arduino o placa de pruebas que más tarde Aduino ha incorporado; el código solo no puede hacerlo. Se basa en un capacitor desde el DTR en serie hasta el reinicio y un pull-up de reinicio. Si tiene uno más antiguo o una placa de prueba, deberá agregarlo. Esta pregunta de EE StackEx y el artículo del blog que cité deberían indicarle la dirección correcta.

Como dijo @JRobert en los comentarios, el momento adecuado para conectar y desconectar el pin de reinicio en ATmega funcionó. Sigue conectando a tierra el pin de reinicio del ATmega cuando hagas clic en "Cargar", y justo cuando muestre "Cargando", desconéctalo.

Acabo de recibir un arduino mini y sabía que necesitaba presionar el botón de reinicio para cargar el código, ¡pero no pude averiguar cuándo! Esto funcionó para mí. Gracias.

Tuve los mismos errores que he visto publicados en varios sitios RE: Arduino message "avrdude: stk500_getsync(): not in sync: resp=0x00" o similar.

Descubrí que si elimino lo que esté parcheado en D0 ([D0] DIGITAL pin Zero, el más alejado de los conectores USB y Power, también dice "RX").

Probé dos computadoras diferentes y obtuve los mismos errores y descubrí que si: 1- Quito el cable o abro el circuito a [D0] 2- Subo a Arduino 3- Vuelvo a parchear el cable removido o cierro el circuito abierto a [ D0]

Solo me he encontrado con ese error cuando subo y esta es mi solución. por ahora.

Espero eso ayude.

¡Se siente bien finalmente dar información útil a una comunidad!

La respuesta es un poco confusa: la oración que comienza con "Encontré que si yo ..." está incompleta, no estoy seguro de lo que está tratando de decir allí. Edite, gracias.
Esta respuesta se refiere a tener un circuito en conflicto conectado a los pines seriales del hardware atmega.

Para corregir el error "avrdude: stk500_getsync(): not in sync: resp=0x00". Simplemente instale la versión 2.8.24.0 del controlador FTDI. Hay algunos problemas con el nuevo controlador v2.8.28.0.

Esto solucionó mi problema, vaya a Controladores y configuración, reemplace Boards.txt en arduino IDE...

tengo arduino MEGA 2560 R3 y tuve el mismo problema

avrdude: stk500_getsync(): no sincronizado: resp=0x00

http://arduino.cc/en/Main/ArduinoBoardADK

Mientras carga los códigos de Arduino IDE en su computadora, extraiga el pin 0 RX de la tarjeta Arduino. Obtendrá una carga de código exitosa. Desconecte el pin RX y pruebe. O bien, puede colocar (tal vez) el RX de bluetooth en el RX de Arduino para que los TX estén conectados entre sí.