Arduino Board no funciona correctamente

0

Parece que no puedo subir bocetos a mi Duemilanov.

En Ubuntu, el terminal arduino muestra: avrdud: stk500_recv (): el programador no responde En Windows: avrdude: avrdude: stk500_getsync (): no está sincronizado: resp = 0x00

Se intentó volver a quemar el gestor de arranque:

avrdude: error: no se pudo encontrar el dispositivo USB "USBasp" con vid = 0x16c0 pid = 0x5dc

.

Cuando intento cargar un nuevo boceto, las luces Arduino RX / TX no hacen nada. El LED "L" parpadea una vez y eso es todo. Mientras el IDE está "cargando" el nuevo boceto, Arduino comienza a ejecutar el boceto previamente cargado como si ignorara completamente los nuevos datos.

A veces, el IDE se atasca "cargando" y la luz de TX en la placa parpadea indefinidamente.

La primera vez que conecto la placa a mi PC, el LED "L" parpadea 7 veces después de que TX / RX parpadee varias veces.

Lo más extraño que he descubierto es que si desconecto por completo todas las líneas de datos que están conectadas a la placa, funciona bien. Puedo cargar sin problemas siempre que no haya nada conectado a la placa (ni siquiera a 5V, GND o pin digital).

Intenté esto y funciona bien: enlace

¿Alguna sugerencia? Literalmente lo estaba usando sin ningún problema hace 24 horas.

Arduino 1.0.5

Duemilanov

    
pregunta sherrellbc

2 respuestas

2

Usted menciona que está ejecutando el AVR 5v y la línea GND hacia el tablero, si su circuito está consumiendo más que un poco de corriente (amplificadores de potencia y otros elementos activos), debe usar un regulador separado, sumerge en Vcc , especialmente durante el encendido, cuando el cargador de arranque está intentando escribir el flash, puede evitar que la operación de lectura / escritura se complete por completo, con la sección de la aplicación dañada (el boceto no está escrito correctamente) o el avr cargando / ejecutando las instrucciones incorrectas del cargador de arranque (previniendo la escritura de la aplicación). Si sus líneas de datos se están utilizando para generar una corriente significativa (varios LED), también debe reconsiderar el diseño de su circuito por el mismo motivo. Dado que el gestor de arranque funciona correctamente cuando está desconectado de la placa, y ya ha excluido otros problemas, como la interferencia de la línea tx / rx por dispositivos externos (al conectar algo a pin0) y reinicios aleatorios.

En la hoja de datos de atmega (página 278) hay una sección enterrada que dice

  

Durante los períodos de baja VCC, el programa Flash puede corromperse porque la tensión de alimentación es   demasiado bajo para que la CPU y el flash funcionen correctamente. Estas cuestiones son las mismas que para el tablero.   Sistemas de nivel que utilizan Flash, y se deben aplicar las mismas soluciones de diseño.   La corrupción de un programa Flash puede ser causada por dos situaciones cuando el voltaje es demasiado bajo.

     

Primero, un   la secuencia de escritura regular en el Flash requiere un voltaje mínimo para funcionar correctamente.

     

En segundo lugar,   La propia CPU puede ejecutar instrucciones incorrectamente, si la tensión de alimentación para ejecutar instrucciones   es demasiado bajo.

     

La corrupción del flash se puede evitar fácilmente siguiendo estas recomendaciones de diseño (una es   suficiente):

     
  1. Si no es necesario actualizar el cargador de arranque en el sistema, programe el bloqueo del cargador de arranque   bits para evitar cualquier actualización del software del cargador de arranque.

  2.   
  3. Mantenga el RESTABLECIMIENTO AVR activo (bajo) durante períodos de voltaje de fuente de alimentación insuficiente.   Esto se puede hacer habilitando el Detector de reducción de voltaje interno (BOD) si la tensión de operación coincide con el nivel de detección. Si no, un circuito externo de protección de restablecimiento bajo de VCC puede ser   usado. Si se produce un reinicio mientras una operación de escritura está en curso, la operación de escritura   completado siempre que la tensión de alimentación sea suficiente.

  4.   
  5. Mantenga el núcleo del AVR en modo de suspensión de apagado durante los períodos de baja VCC. Esto evitará que la CPU intente descifrar y ejecutar instrucciones, protegiendo efectivamente   el Registro SPMCSR y, por tanto, el Flash de escrituras no intencionales.
  6.   

En el peor de los casos, esto puede hacer que la sección de flash del cargador de arranque se corrompa.

    
respondido por el crasic
1

La pregunta es un poco corta en detalles, pero aquí hay una causa / solución más probable.

  

si desconecto completamente todas las líneas de datos que están conectadas a la placa, funciona bien

Posibilidad "A": probablemente tenga algo conectado a los pines 0 y 1 (RX / TX) en el Arduino. Por lo tanto, eliminarlo permite que el gestor de arranque reciba datos sin chatear con el dispositivo adicional SOLAMENTE cuando desenchufa los pines 0/1.

Si este es el caso (y una foto o un diagrama de su configuración lo ayudarán), puede intentar agregar un interruptor entre el dispositivo externo y la línea de RX en su Arduino. Esto facilitará el aislamiento de la línea para la programación. Un interruptor de mercurio es una opción, colóquelo de manera que esté "cerrado" en posición normal (dispositivo conectado): incline la caja / placa y el interruptor se desconecte, lo que permite la programación.

Posibilidad "B": la línea de reinicio está conectada a otra cosa que impide que el cargador de arranque se active cuando se envían los datos (reinicio de RTS). Si el desenchufe de la línea de reinicio funciona, entonces este es tu problema. Alternativamente, presione y mantenga el botón RESTAURAR en el Arduino y luego comience la carga; suelte el botón RESTAURAR cuando AVRdude comience a transmitir. Esto activará el gestor de arranque y capturará los datos entrantes.

    
respondido por el Ron J.

Lea otras preguntas en las etiquetas