Académique Documents
Professionnel Documents
Culture Documents
Al igual que todo programa en C, el mismo consiste de una funcin principal llamada main() y
antes de sta, se deben agregar las libreras especficas para cada funcin utilizada.
La librera donde estn las definiciones del micro AVR que se va a utilizar es io.h por lo que
debe colocarse siempre:
#include<avr/io.h>
Las libreras que trae el compilador se pueden colocar entre signos < > o entre comillas dobles
. No es as con libreras creadas por el usuario, que slo admiten comillas dobles.
Dentro de las libreras que trae el compilador, podemos mencionar:
<ctype.h>: funciones de operaciones con caracteres
<math.h>: funciones matemticas
<stdint.h>: tipos enteros estndar
<stdlib.h>: Utilidades generales
<string.h>: funciones de manejo de cadenas de caracteres
Especficas de AVR
<avr/interrupt.h>: manejo de interrupciones
<avr/io.h>: definiciones especficas del dispositivo AVR
<avr/power.h>:manejo de reduccin de energa
<avr/wdt.h>: manejo del timer Watchdog
<util/crc16.h>: clculo de CRC
<util/delay.h>: funciones para lazos de retardobusy-wait
<util/parity.h>: generacin de bit de paridad
<util/setbaud.h>: macros de ayuda para clculos de baud rate
entre otras.
Nota:
Tener en cuenta que no todas las funciones de libreras del estndar ANSI tienen su
correspondencia con libreras WIN-GCC.
Para una mejor implementacin de programas y uso de funciones genricas, se aconseja leer
el manual avr-libc-user-manual del compilador que se encuentra en el C:\WINAVRxxxxxxxx\doc\avr-libc\.
#define DORD 5
#define MSTR 4
#define CPOL 3
#define CPHA 2
#define SPR1 1
#define SPR0 0
En orden de acceder a un bit particular como un valor de byte, se usa la macro _BV(). La
implementacin de esta macro es justamente el desplazamiento de bits, es decir:
_BV(3) => 1 << 3 => 0x08
Por ejemplo si queremos setear el SPR1 en SPCR, haremos
SPCR |= _BV(SPR1);
==
SPCR |= _BV(1);
Manejo de Interrupciones
Para el manejo de interrupciones se hace uso de la funcin ISR (en versiones anteriores Signal)
includa en <avr/interrupt.h>. Hay funciones particulares:
sei();
cli();
Descripcin
ADC_vect
ANALOG_COMP_vect
Analog Comparator
EE_READY_vect
EEPROM Ready
INT0_vect
External Interrupt 0
INT1_vect
External Interrupt 1
PCINT0_vect
PCINT1_vect
PCINT2_vect
SPI_STC_vect
SPM_READY_vect
TIMER0_COMPA_vect
TIMER0_OVF_vect
Timer/Counter0 Overflow
TIMER1_CAPT_vect
TIMER1_COMPA_vect
TIMER1_COMPB_vect
TIMER1_OVF_vect
Timer/Counter1 Overflow
TIMER2_COMPA_vect
TIMER2_COMPB_vect
TIMER2_OVF_vect
Timer/Counter2 Overflow
USART_RX_vect
USART, Rx Complete
USART_TX_vect
USART, Tx Complete
USART_UDRE_vect
WDT_vect