Programación de Micros AVR en Linux

CREACIÓN DE UN PROYECTO

Hola Mundo en un AVR

Programa APOS

APOS es un programa para crear plantillas de proyectos para microcontroladores AVR. Su uso es muy sencillo y cuenta con varias opciones para configurar el proyecto de acuero al hardware que se utilizará.

¿Cómo se utiliza?

APOS es un software CLI (Command Line Interface), no tiene interfaz gráfica por lo que es necesario utilizar la terminal de Linux.

Para ver la ayuda del programa se debe ejecutar el comando

						
							$ apos ?
						
					

Creación de un proyecto

Para crear un proyecto vacío hay que ejecutar el comando apos seguido del nombre del proyecto.

						
							$ apos NOMBRE_PROYECTO
						
					

Se creará una carpeta con el nombre NOMBRE_PROYECTO que incluye las carpetas include, src, el archivo Makefile, el archivo main.c y un archivo README.md

Opciones del programa APOS

Por default el programa crea un proyecto para el micro atmega328p a una frecuencia de 16 MHz configurado para utilizar el programador usbtiny

-m: Define el micro AVR a utilizar.
-f: Define la frecuencia de operación.
-p: Define el programador a utilizar.

						
							$ apos -m atemga32 -f 16000000 -p dragon_isp NOMBRE_PROYECTO
						
					

Otras opciones

APOS permite otras opciones avanzadas, como la creación de un proyecto con el codigo de un programa blink, la inicialización de un repositorio GIT y la definición de los fusibles del microcontrolador.

-b: Crea el proyecto con un programa blink de ejemplo.
-g: Inicializa el proyecto con repositorio GIT.
-lf: Define el valor del fusible bajo.
-hf: Define el valor del fusible alto.
-ef: Define el valor del fusible extendido.

Hola Mundo

Crear un proyecto "blink" con el micro atmega32 a una frecuencia de 16Mhz con el comando:

						
							$ apos -m atemga32 -f 16000000  hola_mundo

							apos: Project "hola_mundo" created!

							Project Information:
						  
							 Project Name:    "hola_mundo"
							 Git Repository:  False
							 Blink Template:  False
							 Microcontroller: atmega328p
							 CPU Frequency:   16000000
							 Low Fuse:        DE
							 High Fuse:       D9
							 Extended Fuse:   FF
							 Programmer:      usbtiny
						  
						
					

Estructura del proyecto

  • hola_mundo
    • include
      • Archivos de cabecera aquí
    • src
      • Archivos de código fuente aquí
    • main.c
    • Makefile
    • README.md

Compilación

Para compilar el programa se abre la carpeta del proyecto con el editor Visual Studio Code desde la terminal:

					
						$ code hola_mundo
							
						

Abrir la terminal integrada de Visual Studio Code en el menú Ver→Terminal integrado

Escribir el comando make en la terminal integrada para compilar:

						
								$ make

								AVR Memory Usage
								----------------
								Device: atmega32

								Program:     158 bytes (0.5% Full)
								(.text + .data + .bootloader)

								Data:          0 bytes (0.0% Full)
								(.data + .bss + .noinit)

						
					

Archivo main.c

						
							void AVRInit() {
							    DDBR = 0xFF // Puerto B como salida
							}

							int main() {
							    AVRInit();

							    while(1) // Ciclo Infinito
							    {
							        PORTB = 0xFF;   // Enciende los leds
							        _delay_ms(1000) // Retardo de 1s
							        PORTB = 0;      // Apaga los leds
							        _delay_ms(1000) // Retardo de 1s
							    }
							    return 0;
							}
						
					

Archivo Makefile

						
							PROJECT_NAME = hola_mundo
							DEVICE       = atmega32
							CLOCK        = 16000000
							PROGRAMMER   = -c usbasp -P usb
							FUSES        = -U hfuse:w:0xD9:m -U lfuse:w:0xDE:m #-U efuse:w:0xFF:m
							AVRDUDE      = avrdude $(PROGRAMMER) -p $(DEVICE)

							OBJECT_FILES   = main.o
							#OBJECT_FILES += ./src/mySource.o

							INCLUDEPATHS   = -I ./include
							#INCLUDEPATHS += -I ./include/myFolder
						
					

Siguiente capítulo

Carga del programa en el micro AVR

Ir al capitulo 3