Tabla de contenido:

USO DE EXtreme Burner para la programación del microcontrolador AVR: 8 pasos
USO DE EXtreme Burner para la programación del microcontrolador AVR: 8 pasos

Video: USO DE EXtreme Burner para la programación del microcontrolador AVR: 8 pasos

Video: USO DE EXtreme Burner para la programación del microcontrolador AVR: 8 pasos
Video: PROGRAMAR EL ATMEGA328P ATMEL CON EL PROGRAMADOR USBASP AVR Y EL SOFWARE AVRDUDESS 2024, Mes de julio
Anonim
USO DE EXtreme Burner para la programación del microcontrolador AVR
USO DE EXtreme Burner para la programación del microcontrolador AVR

Todos ustedes, la fraternidad de usuarios de AVR, y los que acaban de entrar en la transmisión, algunos de ustedes comenzaron con microcontroladores PIC y otros comenzaron con AVR de ATMEL, ¡esto está escrito para ustedes!

Así que compró un USBASP porque es económico y efectivo actualizar la ROM en su dispositivo Atmega, o tal vez en la gama ATTINY. ¡Estos se pueden obtener por menos de $ 5, como clones chinos del USB-ASP de código abierto! AVRdude es el software para programarlos.

Indudablemente, sabe cómo generar un archivo Hex usando Atmel Studio (todavía uso AVR Studio v4.19 en lugar de la última v7 porque es más ágil y rápido en mi computadora portátil con CPU de un solo núcleo) / Netbook y instalación de WINAVR si está leyendo esto ¡Todo lo que esté escrito en DotNet corre LENTO! ¡y las versiones posteriores están diseñadas para que su computadora portátil funcione como una tortuga! Puede usar Studio v4.19, la mejor versión de Studio de ATMEL para microcontroladores AVR, cambiar a la versión 7 cuando realmente lo necesite para los chips posteriores, y hacer que su tiempo en la computadora portátil sea más productivo, ¡trabajando en lugar de esperar! Esto es lo que recomiendo.

Una línea de comando típica de AVR dude para programar un Atmega con un archivo Hex, se ejecuta así:

ESCRIBIR EN FLASH: AVRdude -s -c avrisp -p t44 -P usb -U "flash: w: D: / ARDUINO / pwmeg1.hex: a"

aquí pwmeg1.hex es el archivo hexadecimal de Intel para ser "quemado" o "flasheado" en la "MCU de destino" en el microcontrolador Lingo

¡Eso es un bocado para recordar! Puede escribir un archivo por lotes y ejecutarlo en la línea de comando en Windows, nombrándolo write_flash.bat. De manera similar, para leer los fusibles, ¡otro bocado de una línea para recordar! Se vuelve tedioso.

para lectura flash + eeprom: AVRdude -s -c avrisp -p t44 -P usb -U "flash: r: D: / ARDUINO / pwmeg1.hex: i" -U "eeprom: r:: i"

La solución es utilizar una de las herramientas de interfaz gráfica de usuario fáciles de usar para AVRdude como Bitburner, programador de Khazama, que son casi similares en mérito. eXtreme Burner. He usado mucho la herramienta gratuita: eXtreme Burner, es versátil, confiable, y este tutorial trata sobre eso. No solo puede actualizar su archivo / programa hexadecimal a la MPU, utilizando comandos emitidos para AVRdude en segundo plano, también puede ayudarlo a configurar FUSES, que es un tema complicado que a menudo confunde a los principiantes con la programación AVR. Aquí hay un enlace a un excelente tutorial sobre el tema de FUSES que puede revisar o repasar. Una advertencia: ATMEL usa el estado '1' de un bit FUSE para indicar su estado 'predeterminado' (estado no configurado o no programado) y '0' para indicar su estado programado, configurado o activado. Esto es justo lo contrario de lo que hace con los bits FUSE en un microcontrolador PIC. Tenga cuidado cuando modifique los bits del fusible del reloj, como hacer que el reloj RC interno cambie a cristal externo, ya que esto creará problemas al conectarse al chip sin una configuración de cristal externo. De manera similar, tenga cuidado cuando cambie el estado de bits de fusibles críticos como SPIEN y RESET DISABLE (estos siempre deben establecerse en SPIEN = 0 y RESET DISABLE = 1 si desea continuar comunicándose con la MCU con su USB-ASP en modo ISP / SPI Si estropea esto, necesitará un programador de alto voltaje para "desbloquear" su AVR.

Si se está preguntando "¿qué diablos son los fusibles" y "qué hacen"? Lea este excelente artículo:

Otro tema relacionado es cómo configurar la velocidad del reloj de su AVR MPU, que es capaz de alcanzar velocidades desde 1Mhz hasta 16 o 20Mhz. También hay una opción de cristal de baja frecuencia de baja potencia especial de 31,25 kHz que, si se diseña correctamente, puede hacer que su AVR funcione con pilas AA durante 3 meses.

Ambos bits de fusible de reloj (frecuencia y tipo de reloj RC interno / cristal externo y otros bits de fusible) se pueden configurar a través de la pestaña FUSIBLES en eXtreme Burner. Primero le mostraremos cómo leer la ROM y luego cómo actualizar el archivo hexadecimal usando eXtreme Burner. Por supuesto, también puede usar los sitios web de fusibles AVR en línea, pero la opción que explico también se puede usar cuando está fuera de línea, en cualquier lugar.

Paso 1: Configuración a realizar:

Ajustes a realizar
Ajustes a realizar
Ajustes a realizar
Ajustes a realizar
Ajustes a realizar
Ajustes a realizar
Ajustes a realizar
Ajustes a realizar

Las imágenes muestran los AJUSTES que se deben realizar antes de comenzar a trabajar. (es una sola vez). En el elemento del submenú 'Configuración de hardware', seleccionamos 375Hz porque la mayoría de las MCU de fábrica ATMEL están configuradas en la configuración predeterminada de reloj de CPU de 1 Mhz en el oscilador RC interno. La velocidad del ISP es un cuarto de F_cpu. Eso nos da 375 Khz de velocidad más cercana, también podría ir a una velocidad más baja, no hará mucha diferencia. Puede intentar conectarse dejando esto en su valor predeterminado y emitir un 'leer todo', si falla, puede venir aquí y alterar la velocidad, haciéndola más baja.

Porque si no puede conectarse (el mensaje se daría en la ventana del programador "no se puede comunicar con el chip, no puede SCK" significa que la señal del reloj de su PC no se pudo sincronizar con el chip que está tratando de leer o programa)., no podrá cambiar la velocidad del reloj de la CPU o alterar su velocidad y tipo. ¡Conectar es la base de todo! Es como "PRIMER CONTACTO" como se ve en las películas de Spielberg. Si tiene éxito en esto, siempre puede aumentar la velocidad del reloj de su MCU programando los fusibles en consecuencia, y luego use una velocidad más alta para conectarse.

Así que revise las instantáneas de configuración de hardware que se proporcionan aquí, luego configure también el tipo de dispositivo (el chip que está tratando de programar, su número de modelo).

Paso 2: Configuración del tipo de dispositivo

Configuración del tipo de dispositivo
Configuración del tipo de dispositivo
Configuración del tipo de dispositivo
Configuración del tipo de dispositivo
Configuración del tipo de dispositivo
Configuración del tipo de dispositivo

vea la captura de pantalla, Imagen 1, hemos configurado "ATTINY44A". Este es un microcontrolador de 14 pines sin UART. He estado usando esto recientemente, la versión SSU. Si instaló la versión de stock de Extreme Burner, no verá Attiny44A en la lista desplegable de selección de dispositivo, verá un Attiny44 que, a todos los efectos, también podemos usar para programar Attiny44A, para introducir cualquier dispositivo que no esté en esta lista desplegable, lea mi otro instructivo "Hacking eXtreme Burner".

He estado usando Atmega88PA-AU también con eXtreme Burner pero en este Instructable mencionamos "Attiny44A" en todas partes. Ahora, ¿cómo se hace una versión de placa de prueba del pequeño chip SMD cuadrado de 7 mm y se prueba con sus programas? (vea las fotos que indican el tamaño del chip), Para esto, vea mi otro instructivo donde demuestro cómo hacer Módulos enchufables adecuados para Breadboard usando Attiny44A-SSU y ATmega88PA-AU

Una vez que aprenda esta técnica, podrá comprobar cualquier chip con el que tenga curiosidad por jugar, ya sea su paquete SMD o DIL. Por ejemplo, incluso he usado un chip SMD que viene en un paquete Quad de paso de clavija de 0,8 mm y 32 pines (Atmega88A) de manera similar.

. O simplemente puede usar la versión DIL de 28 pines del Attiny44A para este Instructable o cualquier AVR que esté utilizando en este momento para probar eXtreme Burner para la programación de AVR.

Paso 3: Emitir un READ ALL o READ FLASH

Emitir un READ ALL o READ FLASH
Emitir un READ ALL o READ FLASH
Emitir un READ ALL o READ FLASH
Emitir un READ ALL o READ FLASH

Conecte su USBasp al puerto USB de su computadora portátil, supongo que ya ha cargado los controladores correctos que venían con su programador y que se detectó correctamente. Debería aparecer en 'Dispositivos e impresoras' en el menú de inicio de Windows si así fuera, tan pronto como se conecte al puerto USB. Conecte su chip de destino en su placa con su USBasp (los pines SDI // ISP relevantes que usan un cable de 6 o 10 pines deben estar conectados entre los dos, es decir, los pines: MOSI, RESET, MISO, SCK, Vcc, Ground).

Emita LEER TODO desde el MENÚ de Xtreme Burner. Vea fotos y mensajes que obtuvimos. Inicialmente, su pantalla mostraba 'FF' para ROM en la Primera PESTAÑA del quemador, después de leer todo, mostrará el contenido real de ROM en el chip. Si utiliza un chip nuevo de fábrica o un chip borrado, verá FF en el contenido después de "Leer todo". Un chip no programado mostrará 'FF' en su memoria, al igual que una EEPROM (segunda pestaña en el programador), la última pestaña muestra los FUSIBLES.

Después de LEER TODAS las 3 pestañas mostrarían la información correcta contenida en el chip. Antes de eso, no lo haría, así que emita un Leer todo primero tan pronto como conecte todo.

Paso 4: escriba en Flash (su archivo hexadecimal se incluyó en la ROM del chip)

Escribir en Flash (su archivo hexadecimal se incluyó en la ROM del chip)
Escribir en Flash (su archivo hexadecimal se incluyó en la ROM del chip)
Escribir en Flash (su archivo hexadecimal se incluyó en la ROM en el chip)
Escribir en Flash (su archivo hexadecimal se incluyó en la ROM en el chip)
Escribir en Flash (su archivo hexadecimal se incluyó en la ROM en el chip)
Escribir en Flash (su archivo hexadecimal se incluyó en la ROM en el chip)

Seleccione un archivo usando el cuadro de diálogo Examinar que se abre al hacer clic en el primer icono en la barra de MENÚ de arriba. Seleccionamos un archivo como ves en la foto. Una vez que seleccione el archivo hexadecimal (formato intel hexadecimal), la barra de menú que mostraba "ningún archivo cargado" cambió al nombre de archivo que cargó.

Ahora emita un Write Flash desde el menú del software. Los mensajes le mostrarán lo que está sucediendo. ver las fotos.

Después de una escritura exitosa, verá el 'FF' que marca un cambio de ROM nuevo o borrado a lo que contiene su programa o archivo hexadecimal. El tamaño o la cantidad de bytes que ocupa su archivo en la ROM también lo conoce al mirar esta pantalla, que le muestra el contenido real de la ROM de su chip de destino que acaba de mostrar.

El paso de verificación también se realiza leyendo el chip, según los AJUSTES que hicimos en el primer paso. Esto se ve en los mensajes de que la verificación también se realizó correctamente.

Paso 5: FUSIBLES: Cómo configurarlos en EXtreme Burner

FUSIBLES: Cómo configurarlos en EXtreme Burner
FUSIBLES: Cómo configurarlos en EXtreme Burner

Cuando emitió un READ ALL, se leyeron los fusibles del chip. Esa es la PRIMERA foto que se muestra en fusibles.jpg.

Ahora quizás necesite cambiarlos por otra cosa. Los fusibles constan de 4 cajas en la última PESTAÑA de la pantalla de su eXtreme Burner. A saber, BYTE DE FUSIBLE BAJO, BYTE DE FUSIBLE ALTO, BYTE DE FUSIBLE EXTENDIDO, BYTE DE FUSIBLE DE BLOQUEO y BYTE DE CALIBRACIÓN. en ese orden se muestran.

Simplemente puede usar una calculadora de fusibles EN LÍNEA y completarlos como el de

eleccelerator.com/fusecalc/fusecalc.php?

O puede usar eXtreme Burner para hacerlo por usted. fuera de línea en cualquier momento: seleccione de la lista desplegable que aparece cuando hace clic en el botón DETALLES que se encuentra debajo de cada tipo de byte de fusible. Simplemente haga doble clic en cualquier línea en la pantalla DETALLES y observe cómo cambia de CONFIGURADO a BORRADO y cambie su estado con el clic del mouse en cada línea. El byte de fusible en el cuadro de arriba cambiaría en consecuencia.

Si se pregunta "¿qué diablos son los fusibles" y "qué hacen"? Lea este excelente artículo:

www.instructables.com/id/Avr-fuse-basics-Running-an-avr-with-an-external-cl/

Paso 6: Configuración de fusibles con la calculadora de fusibles EXtreme Burner

Configuración de fusibles con la calculadora de fusibles EXtreme Burner
Configuración de fusibles con la calculadora de fusibles EXtreme Burner
Configuración de fusibles con la calculadora de fusibles EXtreme Burner
Configuración de fusibles con la calculadora de fusibles EXtreme Burner
Configuración de fusibles con la calculadora de fusibles EXtreme Burner
Configuración de fusibles con la calculadora de fusibles EXtreme Burner

Puede ver la pantalla de detalles que aparece para cada uno de los bytes de fusible (BAJO, ALTO, EXTENDIDO, BLOQUEO y Calibración). El byte de calibración debe dejarse sin cambios, ya que muestra el byte de datos de calibración en el AVR que se aplica al oscilador RC interno. El byte LOCK es generalmente solo FF, (no discutido en las fotos anteriores) ya que no bloquearía el Flash o EEPROM mientras se encuentra en la etapa de aprendizaje. Estaría cambiando solo los bytes LOW, HIGH y EXTENDED. Ten cuidado !

Si cambia el bit SPIEN a 1 (el estado no programado es 1 en los microcontroladores AVR) no podrá comunicarse con su chip usando USBASP o cualquier programador. El estado predeterminado también se muestra en su pantalla para cada bit de fusible. Esto le advierte que el valor predeterminado de SPIEN es siempre 0 (estado programado) para permitirle usar el modo SPI para la programación del ISP. El bit Debug-wire o DW siempre se deja 1 (sin programar) cuando SPIEN se establece en 0. Este también es su estado predeterminado. Además, en los bits de fusibles extendidos, "Habilitación de autoprogramación" debe ser "1" (no programado) si está utilizando su USB-ASP para programar su chip de destino (sin utilizar la ROM del cargador de arranque como en ARDUINO).

Puede cambiar los bits CLOCK (3 en número) para seleccionar RC interno o cristal externo. Normalmente lo dejo para RC interno que le permite obtener 2 pines adicionales que implica liberar el cristal externo para usar como pines PORT para sus proyectos AVR. Por lo general, se necesita cristal externo cuando necesita una sincronización de alta precisión en su proyecto. Para los estudiantes, RC interno es suficiente.

Por lo general, una vez que se decide por alguna combinación de fusibles, no la cambiará. Sería una sola vez. Solo estaría flasheando la ROM o, a veces, también la EEPROM. Para flashear la EEPROM, su estudio WINAVR / ATMEL genera un archivo.eep separado si su programa usa la EEPROM para almacenar datos. De lo contrario, la EEPROM no se utiliza, se llena con los datos 'FF' que muestran el 'estado SIN DATOS' de la EEPROM.

Paso 7: valor final de los bits de fusible

Valor final de los bits de fusible
Valor final de los bits de fusible

Después de configurar todos los bits del fusible y cerrar las casillas DETALLES que usó, puede ver el valor de los bits del fusible calculado por el programa (ver imagen). Todo lo que queda es emitir un "Fusibles de escritura" usando el menú. Y mire los mensajes que informan una escritura exitosa. Más tarde, también podría emitir un READ ALL desde el menú y verificar si los fusibles leídos en la última TAB de la pantalla del quemador coinciden con lo que deseaba escribir en el chip. (Verificación de fusibles).

Notaría que al comienzo de este Instructable cuando hicimos un READ FUSES, ¡la pantalla muestra los mismos valores de FUSE que vemos aquí! Eso es porque estos son los fusibles que uso a menudo y rara vez los cambio una vez que los configuro en mi MCU, a menos que cambie la frecuencia de 1 Mhz a 4Mhz para algunos proyectos. El AVR se puede configurar a un máximo de 20 Mhz (algunos chips solo hasta 16 Mhz). ¡La frecuencia que establezca para F_cpu también depende del voltaje que suministre al chip! Por ejemplo, si su chip opera desde 1.8V de Vcc hasta 5.5V de Vcc (consulte la hoja de datos), ¡no esperaría ejecutar su Chip a 20 mhz si le suministrara solo 1.8V! ¡estás esperando demasiado de él! Una tabla en la hoja de datos le dice a qué voltaje alcanza la frecuencia máxima en qué cifra. Cuanto mayor sea la frecuencia de operación del chip, más calor y más energía consume. Piense en la frecuencia como el latido del corazón de un animal. ¡Un colibrí con una frecuencia alta de latidos del corazón tendría una mayor quema de energía por minuto en comparación con una ballena o elefante con un latido mucho más bajo! Pero luego puede hacer mucho más en menos tiempo. El MCU es así.

Paso 8: Terminar

Ahora que ha completado todos los pasos en eXtreme Burner, ha leído la ROM de un chip, abrió un archivo HEX y lo envió al chip y verificó que el flash estaba bien, también aprendió cómo configurar los fusibles y flashearlos en el chip..

Si tiene alguna pregunta, con gusto responderé o modificaré el tutorial para que quede más claro.

Para algunas fichas, es posible que falte su entrada en la lista desplegable de selección de fichas en el menú. O puede enfrentar errores de escritura y verificar errores. En tales casos, lea mi otro Instructable "Hacking eXtreme Burner" para resolver el problema.

Feliz programación.

Recomendado: