Cómo reparar un Arduino inaccesible

Por Soloelectronicos @soloelectronico

¿Tiene un Arduino bricked (ladrillo ), es decir  una placa  Arduino que no acepta subirle ningun código ? O, tal vez usted escribió su propio firmware y quiere subirlo a su Arduino? O, tal vez lo que desea es aprender más sobre el funcionamiento interno de Arduino, AVR, y microcontroladores en general. Bueno, está de suerte! Este tutorial le enseñará lo que es un gestor de arranque es, por qué se necesita para instalar / reinstalar, y repasar el proceso de hacerlo.

¿Qué es un gestor de arranque?

AVR Atmel son grandes pequeños circuitos integrados, pero pueden ser un poco difícil de programar. Usted necesita un programador especial y archivos  .hex y no es muy amigable para los principiantes. El Arduino ha hecho en gran medida acabar con estos problemas. Han puesto un archivo .hex en sus fichas AVR que permite programar el tablero sobre el puerto serie, es decir, todo lo que necesita para programar su Arduino con un cable USB.

El gestor de arranque es básicamente un archivo .hex que se ejecuta cuando se enciende en el tablero. Es muy similar a la BIOS que se ejecuta en su PC, pero hace dos cosas. En primer lugar, mira a su alrededor para ver si el equipo está tratando de programarlo. Si lo es, se toma el programa de la computadora y lo carga en la memoria de circuitos integrados (en una ubicación específica para no sobreescribir el gestor de arranque). Por eso, cuando intenta cargar código, el Arduino IDE restablece el chip. Esto, básicamente, convierte la IC y vuelva a encenderla de nuevo para el gestor de arranque puede empezar a correr de nuevo. Si el equipo no está tratando de cargar código, dice el chip para ejecutar el código que ya está almacenada en la memoria. Una vez que se localiza y se ejecuta el programa, el Arduino hace bucles continuamente a través del programa y lo hace siempre y cuando la placa esta alimentada.

¿Por qué instalar un gestor de arranque

Si usted está construyendo su propio Arduino, o la necesidad de reemplazar el IC, usted tendrá que instalar el gestor de arranque. Usted también puede tener un mal gestor de arranque (aunque esto es muy raro) y tendrá que reinstalar el gestor de arranque. También hay casos en los que usted ha puesto su tablero en un entorno extraño y volver a instalar el gestor de arranque y conseguir de nuevo a la configuración de fábrica es la forma más fácil de arreglar. Hemos visto juntas donde la gente ha desactivado el puerto serie lo que significa que no hay forma de cargar código para la junta, si bien puede haber otras maneras de solucionar esto, volver a instalar el gestor de arranque es probablemente la más rápida y fácil. Como he dicho, tener un mal gestor de arranque es realmente muy raro. Si usted tiene una nueva junta directiva que no está aceptando código de 99,9% de las veces no es el gestor de arranque, pero por el 1% de las veces que sea, esta guía le ayudará a solucionar ese problema.

Selección de un programador

Vamos a hablar de 2 diferentes tipos de programadores que puede utilizar para instalar o reinstalar gestores de arranque.

Opción 1: Dedicado programadores

Para un programador rápida fácil le recomendamos que consulte en el AVR bolsillo Programmer (sólo Windows).

O bien, puede utilizar el funcionario MKII programador de Atmel AVR.

El AVR bolsillo Programmer o la mayoría de las opciones más baratas van a funcionar bien para la mayoría de las aplicaciones, pero pueden tener problemas con algunas tablas, los específicamente con mucha memoria, como las placas basadas Atmega2560.

Opción 2: Uso de la Arduino como un programador

La otra opción es agarrar un Arduino Uno (o Duemilanove). Si usted entra en el Arduino IDE verá un boceto ejemplollamado ‘Arduino como ISP.’ Si subes este código a su Arduino, será básicamente actuar como un programador AVR. Esto no es muy recomendable para la producción de placas o tableros con mucha memoria, pero, en caso de apuro, funciona bastante bien. También a partir de este escrito el código sólo funciona en los tablones de ATmega328. Tal vez algún día va a trabajar en el Leonardo o Due, pero todavía no.

Conexión del programador

In-Circuit Serial Programming (ICSP)

Es muy raro para programar ICs antes de que se sueldan a una PCB. En cambio, la mayoría de los microcontroladores tienen lo que se llama una programación en sistema (ISP) cabecea. En particular, algunos fabricantes de IC, como Atmel y Microchip, tienen un método ISP especializado para la programación de sus circuitos integrados. Esto se refiere como en el circuito de programación de serie (ICSP placas compatibles) La mayoría de Arduino Arduino y tendrán un pin header 2×3 ICSP en ellos. Algunos incluso pueden tener más de una función de cómo muchos ICs viven en el PCB. Se desata tres de los SPI pasadores (MISO, MOSI, SCK) y energía, la tierra, y restablecer. Estos son los pines que necesitará para conectar el programador con el fin de volver a actualizar el firmware de su tablero.

Aquí tenemos la Arduino Uno R3. Tiene dos cabeceras ICSP: uno para el ATmega16U2 y otro para los ATmega328.Para volver a actualizar el gestor de arranque en este tablero, utilizaría sólo la cabecera ICSP para el ATmega328.

En algunas tablas más pequeñas puede que no vea este conector, pero los pasadores debe estallado en otros lugares. Ya sea que esté utilizando un IC SMD o DIP IC, los pines ISP deben ser accesibles de una forma u otra.Algunas tarjetas solo pueden tener puntos de prueba para la cabecera ISP. Si este es el caso, es posible que desee considerar la obtención de un adaptador de Pogo ISP. Este kit le permite realizar temporalmente una buena relación con los puntos de prueba de ensayo con el fin de reprogramar su IC.

Kit adaptador de Pogo ISP montado completamente. Puede conectar cualquiera de los programadores que hemos mencionado en el apartado anterior de este foro.

Si usted está teniendo problemas para encontrar los pines ICSP en tu placa Arduino en particular, puede consultareste sitio web para pinouts detalladas de la mayoría de los circuitos integrados relacionados con Arduino y algo más.

Una vez que haya localizado los seis pines ICSP en su junta directiva, es el momento de conectar el programador a la junta. Se puede utilizar un cable de programación para conectar los dos, o, si usted no tiene un cable, puedes utilizar algunos cables de puente-hombre a mujer.

Si está utilizando un programador como el MKII o el Pocket programador, su configuración debe ser algo como esto:

Haga clic para ampliar la imagen.

O, si usted está utilizando el Arduino como su programador, debería tener este aspecto:

Haga clic para ampliar la imagen.

Aquí hay una tabla para ayudar a aclarar qué conexiones van a donde.

Arduino como ISP AVR programador ISP Cabecera ATmega328 ATmega32U4

Vcc / 5V 5V Pin 2 Vcc Vcc

GND GND Pin 6 GND GND

MOSI / D11 MOSI Pin 4 D11 D16

MISO / D12 MISO Pin 1 D12 D14

SCK / D13 SCK Pin 3 D13 D15

D10 Reiniciar Pin 5 Reiniciar Reiniciar

Código Carga – Easy Way

La forma más fácil de cargar el gestor de arranque implica utilizar el Arduino IDE. Abre tu IDE seleccionar la tarjeta que desea programar. A continuación, seleccione el programador (si está utilizando el Arduino como ISP también tendrá que seleccionar el puerto COM que el Arduino como ISP está conectado a). A continuación, seleccione BurnBootloader. Esto se llevará a la junta que ha seleccionado y buscar el gestor de arranque asociado en el archivo board.txt. A continuación, encontrará el gestor de arranque en la carpeta del gestor de arranque e instalarlo. Esto sólo funciona si la tarjeta se ha instalado correctamente en el IDE y usted tiene el gestor de arranque correcto.

Si por alguna razón usted desea utilizar un gestor de arranque que no está instalado en el Arduino IDE, visite la sección de nido. Sin embargo, es probable que sea más fácil sólo tiene que instalar el gestor de arranque desde el Arduino IDE. Para aquellos que tienen curiosidad acerca de la configuración, tales como trozos de fusibles, no tengas miedo. Arduino se encarga de todos los detalles sucios para usted cuando usted se quema gestores de arranque a través de él.

Código Carga – Duro Camino

La manera más dura es para aquellas personas que quieran utilizar la línea de comandos. Este método puede ser más preferible que va a modificar y recompilar y no quiero tener que mantener la actualización de la IDE, pero por lo demás es bastante innecesario. Una vez más usted tendrá que obtener el programador, y enganche todo. En este ejemplo estamos utilizando avrdude en Windows.

Hay dos pasos en este proceso. El primer paso consiste en el establecimiento de los fusebits. Fusebits son la parte del chip AVR que determinan cosas como si se está utilizando un cristal externo o si desea que la detección de color marrón a cabo. Los comandos que aparecen a continuación son para el Arduino Uno utilizando un ATMega328, es probable que funcione en algunos otros consejos similares, como el Duemilanove, pero asegúrese de que usted sabe lo que está haciendo antes de jugar con fusebits (NOTA: estos fusebits no funcionarán en un 3.3V / 8MHz bordo).Todos los bits fusibles necesarios se enumeran en el archivo boards.txt para diferentes juntas, pero de nuevo, si usted tiene un archivo boards.txt instalar sólo tiene que utilizar de la manera fácil.

Arduino como ISP:avrdude -P comport -b 19200 -c avrisp -p m328p -v -e -U efuse:w:0x05:m -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m

AVR bolsillo Programador:avrdude -b 19200 -c usbtiny -p m328p -v -e -U efuse:w:0x05:m -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m

El segundo paso es en realidad cargando el programa.

Arduino como ISP:avrdude -P comport -b 19200 -c avrisp -p m328p -v -e -U flash:w:hexfilename.hex -U lock:w:0x0F:m programador de bolsillo AVR: avrdude -b19200 -c usbtiny -p m328p -v -e -U flash:w:hexfilename.hex -U lock:w:0x0F:m

Una última poco de información. Como dijimos antes, un gestor de arranque es esencialmentey un archivo .hex. Por lo tanto, puede utilizar este método para cargar y código que desea sus circuitos integrados.

Recursos y Más Allá

Para obtener más información sobre RAV, bootloaders, y el parpadeo de firmware a otros consejos, prueba estos otros grandes tutoriales.

  • AVRDUDE
  • Información gestor de arranque de Arduino
  • Arduino como ISP
  • Patillas para varios circuitos integrados y placas de desarrollo
  • Primeros pasos con el Pocket Programador

También puede consultar nuestra Guía de Tiny AVR programador Conexión para aprender más acerca de la posibilidad de subir código a los chips AVR sin usar el IDE de Arduino.

Fuente   aqui