Crear, recuperar arduino UNO con bootloader, grabar Atmega328p con Grabar AVR
Cableado de Arduino ISP, para programar chips nuevos en un protoboard
Cableado del Chip Atmega328P con bootloader cargado y convertido en Arduino, para el blink o algún trabajo programando mediante un conversor TTL
Cableado del Chip Atmega328P con bootloader arduino NANO
PinOut del Chip Atmega328P-ARDUINO NANO Para mayor detalle
PinOut del Chip Atmega328P Para mayor detalle
PinOut del Arduino Uno para temas de estudio.
PinOut del Arduino MEGA para Temas de Estudios
Videos relaciones con Bootloader
Carga de bootloader mediante Arduino ISP
Mediante el Programador AVR
==================================
MÁS MATERIAL COPIADO DE ARDUINO
==================================
Arduino as ISP and Arduino Bootloaders
¿Qué hace un Arduino lo que es? Muchas cosas, pero una de las más importantes es la forma en que cada placa Arduino se programa fácilmente con el Software Arduino (IDE). Basta con conectarlo al puerto USB de la computadora y presionar el ícono "Subir" para iniciar un proceso que transfiera su boceto a la memoria Flash del microcontrolador.The Bootloader
El comportamiento descrito anteriormente ocurre gracias a un código especial que se ejecuta en cada reinicio del microcontrolador y que busca un boceto que se carga desde el puerto serial / USB utilizando un protocolo y velocidad específicos. Si no se detecta ninguna conexión, la ejecución se pasa al código de su boceto.Este pequeño fragmento de código (generalmente de 512 bytes) se llama "Bootloader" y se encuentra en un área de la memoria del microcontrolador, al final del espacio de direcciones, que no se puede reprogramar como un boceto normal y se Diseñado para tal efecto.
Para programar el cargador de arranque y proporcionar al microcontrolador la compatibilidad con el software Arduino (IDE), debe usar un programador serial en circuito (ISP) que es el dispositivo que se conecta a un conjunto específico de pines del microcontrolador para realizar la programación. De toda la memoria flash del microcontrolador, cargador de arranque incluido. El procedimiento de programación del ISP también incluye la escritura de fusibles: un conjunto especial de bits que definen cómo funciona el microcontrolador en circunstancias específicas.
Use Arduino as ISP
Todo el proceso de cargar el código del cargador de arranque y quemar correctamente los fusibles para hacer un microcontrolador ATmega y un “Arduino” es administrado por el Software Arduino (IDE): proporciona un elemento de menú específico y le permite usar una variedad de dispositivos de programación. Entre los programadores, el "Arduino como ISP" es la solución más barata y práctica para grabar un gestor de arranque en otra placa Arduino con ATmega, 32U4 o ATtiny.El proceso de programación utiliza VCC, GND y cuatro pines de datos. Tres pines conectan MISO, MOSI y SCK entre el micro de programación y el micro objetivo, el cuarto pin del micro de programación va al pin de reinicio del objetivo.
How to wire your boards
La siguiente tabla muestra en qué pines se dividen el MOSI, MISO y SCK en las diferentes placas Arduino:Arduino / Genuino Board | MOSI | MISO | SCK | Level |
Uno or Duemilanove | 11 or ICSP-4 | 12 or ICSP-1 | 13 or ICSP-3 | 5V |
Mega1280 or Mega2560 | 51 or ICSP-4 | 50 or ICSP-1 | 52 or ICSP-3 | 5V |
Leonardo | ICSP-4 | ICSP-1 | ICSP-3 | 5V |
Due | ICSP-4 | ICSP-1 | ICSP-3 | 3,3V |
Zero | ICSP-4 | ICSP-1 | ICSP-3 | 3,3V |
101 | 11 or ICSP-4 | 12 or ICSP-1 | 13 or ICSP-3 | 3,3V |
MKR Family | 8 | 10 | 9 | 3,3V |
En algunas placas Arduino (ver tabla anterior), los pines MOSI, MISO y SCK son los mismos pines que los pines digitales 11, 12 y 13, respectivamente. Es por eso que muchos tutoriales le indican que conecte el objetivo a estos pines. Si encuentra que este cableado es más práctico, tenga una definición USE_OLD_STYLE_WIRING. Esto funcionará incluso cuando no esté usando uno. (Con el tablero Uno no es necesario).
En la imagen de arriba, estamos conectando dos tableros UNO para el arranque del cargador de arranque con las conexiones de "estilo antiguo": el tablero superior es el objetivo, el tablero inferior es el programador. Observe la conexión amarilla de D10 del programador para REAJUSTAR el objetivo. En la familia de tableros MKR, no puede usar D10 para restablecer; le sugerimos D6 y debe recordar cambiar la línea 73 del boceto ArduinoISP - #define RESET 10 - poniendo "6" insteat de 10.
Este Arduino NANO se programa a través de su conector ICSP con cables provenientes de D10-D13 de la placa UNO del programador.
El Arduino MEGA anterior está programando un Arduino UNO que conecta D51-D11, D50-D12, D52-D13, GND-GND, 5V-5V y D10 a RESET. Este tipo de placa necesita un condensador electrolítico de 10µF conectado a RESET y GND con el positivo (pata larga) conectado a RESET. El capacitor debe colocarse después de que la placa del programador se haya cargado con el croquis del ISP.
El condensador electrolítico de 10µF conectado a RESET y GND de la placa de programación solo se necesita para las tarjetas que tienen una interfaz entre el microcontrolador y el USB del ordenador, como Mega, Uno, Mini, Nano. Las placas como Leonardo, Esplora y Micro, con el USB administrado directamente por el microcontrolador, no necesitan el condensador.
About voltages
La familia de tableros Arduino incluye dispositivos de 5V y 3.3V. Cuando use un Arduino que no sea tolerante a 5V (Due, Zero, ...) como programador, asegúrese de no exponer ninguno de los pines del programador a 5V. Una forma sencilla de lograr esto es alimentar el sistema completo (programador y objetivo) a 3V3.En la imagen anterior puede ver el cableado entre un MKR1000 y un UNO. Como se describió anteriormente, todo funciona con 3.3V, tomado de VCC y GND del MKR1000 y enviado a 5V y GND de la UNO. Se podría hacer la misma conexión al ICSP de la UNO siguiendo el pinout explicado en la página. Hemos utilizado los mismos colores para los cables que en las otras imágenes para ayudarlo a cambiar el "cableado antiguo" al conector ICSP con facilidad. Tenga en cuenta que la familia de tableros MKR comparte el mismo pinout, por lo tanto, puede usar cualquier tablón MKR como programador ISP. Si usa una placa MKR como programador ISP, recuerde cambiar la línea 73 de ArduinoISP que define el pin real utilizado en la placa MKR para restablecer el objetivo (6 en la imagen de arriba).
Nota: No conecte a USB ni a la fuente de alimentación las tarjetas mientras configura las conexiones y los cables. También le sugerimos que primero programe el Arduino utilizado como programador de ISP antes de continuar con el cableado a la placa de destino.
Load the sketch
El Arduino que usarás como programador necesita un boceto específico. Lo encuentras en Ejemplos & gt; 11. ArduinoISP & gt; ArduinoISP.Al recorrer las líneas del boceto, encontrará una serie de parámetros que deben establecerse de acuerdo con el tablero de destino. Sin embargo, estos parámetros se establecen mediante un archivo específico disponible para cada cargador de arranque / placa compatible con el software Arduino (IDE). Otros parámetros se explican claramente en los comentarios y solo deben cambiarse si sabe lo que está haciendo. El boceto también admite tres LED que le brindan una retroalimentación visual sobre el proceso de programación.
Para cargar el boceto en su placa Arduino, la que usará como programador, debe seleccionar el tipo de placa y el puerto, y luego puede proceder como de costumbre.
Program the bootloader
Si todos los cables están configurados, necesita cambiar al tipo de placa que desea programar con el cargador de arranque. Este paso es obligatorio para seleccionar el código del cargador de arranque adecuado y las configuraciones de los fusibles. El procedimiento de programación verifica la firma del microcontrolador antes de realizar cualquier acción de escritura, pero muchas placas comparten el mismo microcontrolador y cada una tiene su propio cargador de arranque. El puerto sigue siendo el de la ArduinoISP.Seleccione "Grabar cargador de arranque" en las herramientas y espere el mensaje de confirmación en la parte inferior de la interfaz del software Arduino (IDE). Si conectó los LED, puede seguir el proceso visualmente.
The Serial Programming Mode
El proceso de programación administra las tres líneas SPI (MISO, MOSI y SCK) de acuerdo con el protocolo de programación SPI estándar, el mismo que se utiliza para leer y escribir tarjetas de memoria SD. La única diferencia con las tarjetas de memoria es la falta de un pin CS (Chip select). En nuestros microcontroladores AVR, usamos el pin RESET que detiene la ejecución de cualquier boceto o cargador de arranque y coloca al microcontrolador en un estado específico donde escucha los comandos que llegan desde la interfaz SPI. El primer comando que requiere el protocolo es el que ingresa al microcontrolador en el modo de programación en serie.Una vez que este modo específico esté activo, podemos escribir y leer todas las áreas programables del microcontrolador: Flash, EEPROM y fusibles. Al final de la memoria Flash, tenemos el área de código del cargador de arranque, como se resalta en la imagen al principio de este artículo. El procedimiento "Burn Bootloader" también configura correctamente los fusibles del microcontrolador de acuerdo con el diseño de la placa. Esta es una de las razones por las que tiene que quemar el cargador de arranque seleccionando su modelo de tablero exacto en la lista.Technical aspects of programming
La herramienta de software de código abierto utilizada para programar el microcontrolador es avrdude. El proceso pasa por cuatro pasos: desbloquear la sección del cargador de arranque del chip, colocar los fusibles en el chip, cargar el código del cargador de arranque en el chip, bloquear la sección del cargador de arranque del chip.Los fusibles se administran de acuerdo con las preferencias almacenadas en cada archivo de parámetros asociado con la placa, evitando posibles errores.La gestión de los fusibles, generalmente un conjunto de tres bytes (bajo, alto y extendido), es el aspecto más delicado de la programación del cargador de arranque: una configuración incorrecta del fusible podría bloquear el microcontrolador y la placa. Los fusibles definen muchos aspectos de las funciones del microcontrolador como: seleccionar diferentes fuentes de reloj y cambiar la velocidad de funcionamiento del chip, establecer el voltaje mínimo requerido antes de que funcione el chip (brownout), configurar si se usa o no un cargador de arranque, configurar la cantidad de memoria asignada al cargador de arranque (de 256 a 2048 palabras - 512 a 4096 bytes), deshabilitando el reinicio o la programación en serie y evitando que los datos de EEPROM se borren al cargar un nuevo boceto.La descripción detallada de los fusibles se puede encontrar en la hoja de datos de cada microcontrolador.Cada configuración tiene su propio uso y es lógico permitir que el desarrollador bloquee el chip y lo proteja de la programación del ISP, pero puede suceder que, por error, se fije un fusible de la manera incorrecta, lo que le impide acceder al proceso de programación a través de la interfaz del ISP . Para recuperar el microcontrolador, debe confiar en un programador en serie de alto voltaje que usa 12V para restablecer los fusibles.Recap: burn the Bootloader in 8 steps
- Abra el firmware ArduinoISP (en Ejemplos) en su placa Arduino.
- Nota para Arduino 1.0: necesita hacer un pequeño cambio en el código ArduinoISP. Encuentre la línea en la función heartbeat () que dice "delay (40)"; y cambiarlo a "retraso (20);".
- Seleccione los elementos en las Herramientas & gt; Los menús de la placa y del puerto serie que corresponden a la placa que está utilizando como programador (no la placa que se está programando).
- Sube el sketch de ArduinoISP.
- Conecta tus tableros Arduino ..
- Seleccione el elemento en las Herramientas & gt; Menú de la placa que corresponde a la placa en la que desea grabar el gestor de arranque (no la placa que está utilizando como programador). Ver las descripciones de la junta en la página de entorno para más detalles.
- Seleccione el Arduino como ISP en el menú Herramientas & gt; Programador.
- Utilice el comando Burn Bootloader.