domingo, 20 de marzo de 2011

Guía iniciación AVR ATtiny 48/88

Los microntroladores ATtiny 48/88 son una familia de microcontroladores de 8 bits. Sus características son:
  • Microcontrolador de 8-bit, de bajo consumo y alto rendimiento.
  • Concebido para ser programado en lenguaje C.
  • 123 instrucciones, la mayoría sólo necesitan un 1 ciclo de reloj.
  • 32x8 registros de proposito general.
  • 4K/8K Bytes de memoria flash programable en circuito.
  • 64 bytes de memoria EEPROM.
  • 256/512 bytes de memoria interna SRAM.
  • Un 8-bit Timer/counter  con prescaler separado y modo de comparación.
  • Un 16-bit Timer/counter  con prescaler, modo de comparación y captura.
  • 6 o 8 canales ADC de 8-bit.
  • Interfase serie SPI maestro/esclavo.
  • Interfase serie de 2 hilos (compatible con I2C Philips).
  • Perro guardian con oscilador separado.
  • Sistema de programación en circuito via SPI.
  • Oscilador interno.
  • 24 líneas programables de entrada/salida.
  • Velocidad de reloj de 4 a 12 Mhz. 

Requisitos para entorno de trabajo:

  • Computadora con sistema operativo LINUX, Windows XP o superior.
  • Programa para entorno de trabajo Atmel AVR Studio 4.18 SP3, página de descarga(solo Windows). 
  • Programador AVRISP mkII o similar.
  • Paquete de compilador y librerías WinAVR , página de descarga (sólo Windows).
  • En los sistemas LINUX instalar los siguiente paquetes:  avr-lib, binutils-avr y gcc-avr.
Una de las mejores formas para aprender a manejar microcontrolares es escribir programas. El primer programa es un equivalente al hola mundo de los programas de computadoras, este programa consiste en encender y apagar un led. Como primer paso hay que crear un archivo con el nombre holaM_tiny.c con un editor de texto de su preferencia. El archivo debe contener el siguiente código fuente:


#define F_CPU 4000000UL
 

#include <avr/io.h>
#include <util/delay.h> 

static void init_system(void);


int main(void)
{
     init_system();
     DDRD = (1 << PD3);

     for ( ; ; )
     {
          PORTD = (1 << PD3);
          _delay_ms(500);
          PORTD = (0 << PD3);
          _delay_ms(500);
     }
}


static void init_system(void)
{
     /* configurar oscilador a 4MHz*/
     asm("ldi r16,0x80");
     asm("sts 0x61,r16");
     asm("ldi r16,0x01");
     asm("sts 0x61,r16");
}



El funcionamiento básico del código es encender y apagar un led, dura encendido 500ms y otros 500ms apagado. El siguiente diagrama muestra como hay que conectar el microcontrolador:


El diagrama utiliza el microcontrolador ATtiny 48/88 en encapsulado PDIP, el número de pin de cada puerto cambia de orden según el tipo de encapsulado. 

Método de compilación en LINUX, en una terminal de comandos  escribir:

$ avr-gcc -g -Os -mmcu=attiny88 -c holaM_tiny.c
avr-gcc -g -mmcu=attiny88 -o holaM_tiny.out holaM_tiny.o

Comando para crear archivo hex. 

$ avr-objcopy -j .text -O ihex holaM_tiny.out holaM_tiny.hex 

Todos los comandos anteriores deben lanzarse usando como carpeta de trabajo en la ubicación del archivo holaM_tiny.c .

Método de compilación en sistemas Windows. El primer paso es abrir el programa AVR Studio 4, después dentro del menú "Project", seleccionar  Project Wizard.

 En la ventana emergente que aparece seleccionar "New Project".

 Después, marcar la opcón de "Project type" en AVR GCC, también seleccionar "Create initial file" "Create folder". En el campo "Project name" poner "holaM_tiny" y en "Initial file" colocar "holaM_tiny".

 En el siguiente paso poner "Debug platform" en "AVR Simulator 2" y en "Device" colocar "ATtiny88". Terminar presionando el botón de "Finish".

 Quedará una ventana con un editor de texto, en este editor de texo colocar el código fuente anterior. Para compilar el proyecto y obtener el archivo hex, hay que ir al menú "Build" y seleccionar "Build".



Para terminar el proyecto sólo hay que cargar el archivo holaM_tiny.hex con el programador de nuestra preferencia. En la siguiente entrada vamos a explicar que realizan cada una de las ordenes del programa. Si alguien tiene alguna duda puede ponerla en la sección de comentarios o mandarme un correo electrónico.
  

No hay comentarios:

Publicar un comentario