26.12.13

Atmega16 - Introducción

En este tutorial de como utilizar los recursos del microcontrolador ATmega16 voy a utilizar el lenguaje ensamblador (assembler) ya que considero a este como el más óptimo para aprender a programar, además ayuda a entender con mayor facilidad los recursos que tiene el microcontrolador.


También utilizaré el lenguaje C debido a que la gran cantidad de ejemplos que podemos encontrar. Otra ventaja importante de este lenguaje es su eficiencia y facilidad (una vez aprendido) a la hora de realizar proyectos de gran complejidad.

Las características del uC ATmega16:
- CPU de 131 instrucciones.
- 32 registros de propósito general (cada uno de 8 bits)
- Memoria de programa flash de 16KBytes
- Memoria SRAM de 1KByte
- 32 líneas de entrada/salida
- 3 timers (se puede generar hasta 4 PWM)
- ADC de 10 bits
- Comparador Analógico
- Comunicación serial USART, SPI, TWI
- Timer Watchdog
- Contador de tiempo real

Registros Trabajo:
Existen 32 registros de trabajo, los 16 primeros registros (R0 - R15) solo aceptan ciertas instrucciones en lenguaje ensamblador mientras que los últimos 16 registros las aceptan todas.

Para explicar esto con más detalle voy a hacer referencia al AVR Instruction Set.

La nomenclatura que se encuentra es la siguiente:
- Rd: Registro destino
- Rr: Registro fuente
- R: Resultado después de la ejecución de una instrucción.
- K: Dato constante
- k: Dirección constante
- b: Bit en un registro de propósito general o en un registro Entrada/Salida
- s: Bit en el registro de estado (SREG)
- A: Dirección de un registro Entrada/Salida
- q: Desplazamiento para direccionamiento directo

SREG:
- I: Habilitación global de interrupciones
- T: Copiar bits
- H: Acarreo auxiliar
- S: Signo
- V: Desbordamiento
- N: Negación
- Z: Cero
- C: Acarreo principal

Para poder programar en lenguaje ensamblador debemos entender a profundidad como funcionan las instrucciones, por ejemplo tenemos la instrucción ADD:


En la parte de "Operands" nos dice que los registros destino que participan son los 32 y los registros fuente que participan son los 32, también podemos ver que las banderas que cambian en el SREG son H,S,V,N,Z,C

Otra parte importante a tener en cuenta en la programación es que podemos formar 3 registros de 16 bits llamados X, Y y Z. Estos registros se forman de la siguiente manera:

R26 : R27 = X
R28 : R29 = Y
R30 : R31 = Z

Descargas:
Datasheet ATmega16A
AVR Instruction Set

0 comments:

Post a Comment