17 oct 2012

Programar un Microcontrolador en Linux (Ubuntu)




Pues de nuevo me encuentro escribiendo un pequeño manual esperando ayudar a estudiantes que se hayan visto en el mismo problema que yo, que es el  programar un microcontrolador usando lenguaje C en una distribución de linux, en mi caso Ubuntu.

Para esto solo usaremos dos herramientas que ya están incluidas en nuestro sistema, las cuales son:
  • Un editor de texto plano (gedit, kate, etc.)
  • Terminal
Antes de empezar a programar debemos tener las herramientas necesarias para poder compilar y crear nuestros archivo .hex que es el que usaremos para programar el microcontrolador.

Instalamos lo siguiente:

sudo apt-get install avr-libc binutils-avr avrdude gcc gcc-avr

Ahora si, ya podemos empezar a programar. 
Para ver la manera de compilar nuestro programa y generar el archivo .hex desde la terminal, haremos un programa sencillo que enciende y apaga un led.

Abrimos nuestro editor de texto y copiamos el siguiente codigo:

#include <avr/io.h>
#include <avr/iom8535.h> //biblioteca para el atmega8535
#define F_CPU 1000000UL
#include <util/delay.h>

int main(void)
{
DDRB = 0x01; //pone portb para salida
while(1){
PORTB = 0b00000001; //prende el led inicialmente
_delay_ms(250); //esperamos 250 mili-segundos
PORTB = 0b00000000; //apaga el led
_delay_ms(250); //esperamos 250 mili-segundos
}
return 1;
}

Por el momento no explicaré el código, ya que el motivo de este tutorial es para compilar y crear el archivo .hex usando una distribución de Linux.

Para compilar nuestro programa nos dirigimos a la ubicación donde hemos guardado nuestro archivo, una vez estando ahí abrimos una terminal y escribimos lo siguiente:

avr-gcc -mmcu=atmega8535 nombre_programa.c -o nombre_salida

Notemos que -mmcu=atmega8535 es el microcontrolador en el cual cargaré el .hex, dependiendo del microcontrolador que vayan a usar será el nombre que deberán incluir.

-mmcu=nombre_del_uc_a_usar

Si nuestro programa no generó errores es hora de pasar a la creación de nuestro .hex, para esto en la terminal escribimos lo siguiente.

avr-objcopy -O ihex nombre_salida source.hex 

Y con esto hemos generado nuestro archivo .hex que será el que programaremos en el microcontrolador.

Para ver su funcionamiento podemos hacer uso de Proteus , esto lo explicaré posteriormente en mi canal de youtube.

Espero que este pequeño tutorial haya sido de ayuda. 
Hasta la próxima...