
Los microcontroladores AVR de ATMEL son una familia bastante potente y asequible. Son RISC y ofrecen características como la programación ISP (en el propio circuito), temporizadores, comparadores analógicos, PWM, RS232 y un largo etcétera. Aquí se explica qué se necesita para poder escribir programas en C y C++Ingredientes
Lo primero que necesitas instalar son las librerias:
Además necesitas algunas otras cosas como:
Para instalarlos, si usas Debian ya sabes:
# apt-get -f install avr-libc gcc-avr binutils-avr gdb-avr
Compilando un programa
El siguiente ejemplo de Makefile sería para poder compilar un programa dividido en varios ficheros fuente para un AT90S8515. Se trata de un micro con 512 Bytes de RAM, 8 K de Flash y 512 Bytes de EEPROM. Éste modelo ya está un poco obsoleto y ha sido sustituido por el ATMEGA8515, que es totalmente compatible pero ofrece varias mejoras. Aunque este ejemplo servirá para ilustrar la creación de un Makefile:
MCU=at90s8515
CC=avr-gcc
OBJCOPY=avr-objcopy
CFLAGS=-g -mmcu=$(MCU) -Wall -Wstrict-prototypes #—————————-
all: prueba.hex #—————————-
prueba.hex : prueba.out $(OBJCOPY) -R .eeprom -O ihex prueba.out prueba.hexprueba.out : prueba.o williams_8515.o potencia.o $(CC) $(CFLAGS) -o prueba.out -Wl,-Map,prueba.map\ prueba.o williams_8515.o potencia.o avr-objdump -S prueba.out > prueba.des
prueba.o : prueba.c $(CC) $(CFLAGS) -Os -c prueba.c
potencia.o : potencia.c $(CC) $(CFLAGS) -Os -c potencia.c
williams_8515.o: williams_8515.c $(CC) $(CFLAGS) -Os -c williams_8515.c
Esto genera un fichero, prueba.hex con el contenido del código máquina para el microcontrolador. El código está en formato de INTEL HEXADECIMAL. También obtendrás otro archivo prueba.dsm en el que puedes ver el desensamblado del código generado.
Los ficheros fuente de los que se parte son prueba.c, potencia.c y williams_8515.c
Otras cosas interesantes
Algunas cosas interesantes que nos ofrecen las binutils son por ejemplo:
$ avr-objdump -h prueba.out
prueba.out fue generado por el Makefile y contiene información diversa sobre la compilación. En éste ejemplo, la salida mostrará el tamaño de las diferentes secciones del programa.
$ avr-size prueba.out
Hace lo mismo que el comando mostrado anteriormente, pero de forma mas resumida.
Por último, el comando mostrado en el Makefile:
$ avr-objdump -S prueba.out
Devuelve el desensamblado del código.
Enlaces interesantes
Comentarios recientes
hace 17 horas 19 mins
hace 20 horas 54 mins
hace 2 días 19 horas
hace 2 días 19 horas
hace 3 días 12 horas
hace 3 días 18 horas
hace 4 días 19 mins
hace 4 días 30 mins
hace 4 días 3 horas
hace 5 días 17 horas