Você está na página 1de 51

MICROCONTROLADORES ATMEL

INTERRUPCIONES EN
AvrButterfly.

Jorge Vega Rosero


Giovanni Granados.

INTRODUCCION
El desarrollo de herramientas para aprendizaje para
cualquier rama del conocimiento ha sido motivo de
continua evolucin.
En Electrnica, nuevos desarrollos aparecen cada
da, estos desarrollos ameritan una inmediata
adaptabilidad forzada para estar en un nivel
competitivo ante otras Sociedades Tecnolgicas.

INTRODUCCION
Esta gua ayuda a que nos encaminemos
especficamente a desarrollos inciales con los
Microcontroladores Atmel.

El aporte es a dar a conocer el potencial de estos


Microcontroladores. Y que en menor tiempo posible el
estudiante interesado en esta tecnologa desarrolle su
potencial creativo.

INTRODUCCION
Nuestra rea de inters son las Interrupciones del
Microcontrolador ATmega 169 Fabricado por Atmel, y
que lo encontramos embebido en el kit de desarrollo
del AVR Butterfly.

INTERRUPCIONES

Las Interrupciones son un mtodo del que disponen los


Microcontroladores, para atender alguna circunstancia
que requiera su inmediata atencin. Al presentarse un
pedido de interrupcin el Microcontrolador da por
terminado cualquier instruccin en curso, y har un salto
a una subrutina de Interrupcin, una vez terminada esta
subrutina, volver a su labor anterior.

INTERRUPCIONES

AVRBUTTERFLY

En nuestro estudio nos basaremos en las


configuraciones del Atmega169, ya que es
el Microcontrolador integrado en el
AVRBUTTERFLY.

VECTORES DE
INTERRUPCION
NUMERO DE

DIRECCION DE

VECTOR

PROGRAMA

0X0000

RESET

0X0002

INT0

0X0004

PCINT0

INTERRUPCION EXTERNA POR CAMBIO EN PIN

0X0006

PCINT1

INTERRUPCION EXTERNA POR CAMBIO EN PIN

FUENTE

DEFINICION DE INTERRUPCION

PIN EXTERNO RESET


INTERRUPCION EXTERNA INT0

VECTORES DE
INTERRUPCION
5

0X0008

TIMER2 COMP

0X000A

TIMER2 OVF

0X000C

TIMER1 COMP

0X000E

TIMER1 COMPA TIMER/COUNTER1 COMPARACION CON VALOR DEFINIDO EN A

0X0010

TIMER1 COMPB TIMER/COUNTER1 COMPARACION CON VALOR DEFINIDO EN B

10

0X0012

TIMER1 OVF

TIMER/COUNTER2 COMPARACION CON VALOR DEFINIDO

TIMER/COUNTER2 POR DESBORDE

TIMER/COUNTER1 COMPARACION CON VALOR DEFINIDO

TIMER/COUNTER1 POR DESBORDE

VECTORES DE
INTERRUPCION
11

0X0014

TIMER0 COMP TIMER/COUNTER0 COMPARACION CON VALOR DEFINIDO

12

0X0016

TIMER0 OVF

13

0X0018

SPI, STC

14

0X001A

USART,RX

15

0X001C

USART, UDRE

16

0X001E

USART, TX

USART, TX COMPLETA

17

0X0020

USI START

USI CONDICION DE INICIO

TIMER/COUNTER0 POR DESBORDE

SPI TRANSMISION SERIAL COMPLETA

USART, RX COMPLETA

USART, REGISTRO DE DATO VACIA

VECTORES DE
INTERRUPCION
USI
18

0X0022

USI DESBORDE
OVERFLOW

19

0X0024

ANALOG COMP COMPARADOR ANALOGICO

20

0X0026

ADC

21

0X0028

EE READY

22

0X002A

SPM READY

23

0X002C

LCD

ADC, CONVERSION COMPLETA

EEPROM LISTA

ALMACENAMIENTO EN MEMORIA DE PORGRAMA LISTA

LCD INICIO DE FRAME.

ATMEGA169

PROYECTO1

Elaboracin un controlador continuo para Led


Tricolor(RGB), por medio de modulacin PWM.

OBJETIVOS

Mostrar el uso de las Interrupciones en la


generacin de seales PWM, y as poder
visualizar una gama de colores a partir
de un LED RGB.

PWM

La modulacin por anchura de pulsos (PWM) es


una tcnica de modulacin, en la que se modifica el
ciclo de trabajo de una seal peridica cuadrada,
esta variacin en el ciclo de trabajo, produce una
variacin en la transferencia de energa entregada.
Afectando directamente a la intensidad final del
Led.

PWM

El ciclo de trabajo de una seal peridica es el


ancho relativo de su parte positiva en relacin al
perodo. Cuando mas tiempo pase la seal en
estado alto, mayor ser la velocidad del motor.
Este tren de pulsos, en realidad, hace que el motor
marche alimentado por la tensin mxima de la
seal durante el tiempo en que esta se encuentra
en estado alto, y que pare en los tiempos en que la
seal esta en estado bajo.

Ciclo de Trabajo

PWM
Usos de seales PWM
PWM tiene diferentes usos:

Atenuacin de la intensidad de un LED.


Disponer de una salida analgica; si la salida digital esta
filtrada,
esto proveer de un voltaje entre el 0% y el 100%.
Generar seales de audio.
Proveer de un control de velocidad variable para motores.
Generar una seal modulada, como la utilizada en controles
remotos de televisores.

DIAGRAMA DE BLOQUES

Gama de colores

ROJO120, VERDE, 60 AZUL 240

ROJO 34, VERDE180 AZUL 240

Dificultades encontradas

Las salidas PWM naturales del


Atemega 169 estas reservadas.

Dificultades

Interrupciones al generar
PWM

Se activa una interrupcin cuando el Timer


llega a su mximo valor 0xFF y pasa a 0x00
Esta interrupcin es por desborde.
Tambin se activa cuando el Timer llega al valor
de comparacin, esta interrupcin es por
comparacin.

;H A B ILITA C IO N D E R EG IS TR O S PA R A FU N C IO N A M IEN TO D EL TIM ER O


H A B ILITA R _TIM ER 0_C O M P :
//TC C R 0A - TIM ER C O U N TER C O N TR O L R EG IS TER A
//FO C 0A 0
X
N O U SA D O
//W G M 00 W G M 01
11
FA S T P W M
//C O M 01A C O M 0A 0
00
D ES C O N EC TA D O O C 0A
//C S 0 2 C S 01 C S 00
10 0 C LK /256
//
//O R D EN (FO C 0A , W G M 00, C O M 01A , C O M 0A 0, W G M 01, C S 02,C S 01,C S 00 )
//
LD I R EG _TEM P,0B 0 100 110 0 ;0 B 01001100 ;G U A R D A M O S C O N FIG U R A C IO N D E M O D O .
Y P R EES C A LA D O R
O U T TC C R 0A ,R EG _TEM P
LD S R EG _TEM P,TIM S K 0 ;G U A R D A M O S EL ES TA D O A N TER IO R D E TIM S K 0 (IN TER R U P T
M A S K R EG IS TER )
S B R R EG _TEM P,(1< < O C IE0A ) + (1 < < TO IE0);H A B ILITA M O S LA IN TER R U P C IO N
0X 00014 Y 0X 00016
S TS TIM S K 0,R EG _TEM P ;C A R G A M O S EL VA LO R C O N FIG U R A D O EN TIM S K 0
LD I R EG _TEM P,0x0A ;C A R G A M O S EL VA LO R M A X IM O A L Q U E LLEG A R A EL TIM ER 2
S TS O C R 0A ,R EG _TEM P
R ET

Configuraciones

Configuraciones

;H A B ILITA C IO N D E R EG IS TR O S PA R A FU N C IO N A M IEN TO D EL TIM ER O


H A B ILITA R _TIM ER 0_C O M P :
//TC C R 0A - TIM ER C O U N TER C O N TR O L R EG IS TER A
//FO C 0A 0
X
N O U SA D O
//W G M 00 W G M 01
11
FA S T P W M
//C O M 01A C O M 0A 0
00
D ES C O N EC TA D O O C 0A
//C S 0 2 C S 01 C S 00
10 0 C LK /256
//
//O R D EN (FO C 0A , W G M 00, C O M 01A , C O M 0A 0, W G M 01, C S 02,C S 01,C S 00 )
//
LD I R EG _TEM P,0B 0 100 110 0 ;0 B 01001010 ;G U A R D A M O S C O N FIG U R A C IO N D E M O D O .
Y P R EES C A LA D O R
O U T TC C R 0A ,R EG _TEM P
LD S R EG _TEM P,TIM S K 0 ;G U A R D A M O S EL ES TA D O A N TER IO R D E TIM S K 0 (IN TER R U P T
M A S K R EG IS TER )
S B R R EG _TEM P,(1< < O C IE0A ) + (1 < < TO IE0);H A B ILITA M O S LA IN TER R U P C IO N
0X 00014 Y 0X 00016
S TS TIM S K 0,R EG _TEM P ;C A R G A M O S EL VA LO R C O N FIG U R A D O EN TIM S K 0
LD I R EG _TEM P,0x0A ;C A R G A M O S EL VA LO R M A X IM O A L Q U E LLEG A R A EL TIM ER 2
S TS O C R 0A ,R EG _TEM P
R ET

Cambio lgico en pin

//COLOR AZUL
INT_TIMER0_COMP:
CLI
CBI PORTB,0
SEI
RETI

INT_TIMER0_OVF:
CLI
SBI PORTB,0
SEI

RETI

DIAGRAMA DE FLUJO
PRINCIPAL

Diagrama de flujo CICLO


INFINITO

Diagrama de flujo CICLO


INFINITO

RESULTADOS
ROJO INC 1

AZUL INC 2

VERDE INC EN 3

00

00

00

ROJO INC 1

AZUL INC 2

VERDE INC EN
3

01

02

03

48

90

D8

02

04

06

49

92

DB

03

06

09

4A

94

DE

04

08

0C

4B

96

E1

05

0A

0F

4C

98

E4

06

0C

12

4D

9A

E7

07

0E

15

4E

9C

EA

08

10

18

4F

9E

ED

09

12

1B

50

A0

F0

0A

14

1E

51

A2

F3

0B

16

21

52

A4

F6

0C

18

24

53

A6

F9

0D

1A

27

54

A8

FC

0E

1C

2A

55

AA

FF

PROYECT2
Elaborar un programa en lenguaje C, que active un
ventilador cuando la lectura del ADC0 ha alcanzado el valor
Mximo decimal de 200. Y apagar el ventilador cuando el
ADC0 ha alcanzado el valor mnimo decimal de 100, utilizar
el NTC integrado del AvrButterfly. Ver grafica 3-19.

OBJETIVOS

Configurar el convertidor analgico


digital.
Realizar mediciones mediante el
sensor TNC intergrado del
AvrButterfly.
Activar un led, que representa el
Encendido de un Ventilador.

COMPORTAMIENTO DEL SISTEMA DEACUERDO A LA


ENTRADA ANALOGICA

DIAGRAMA DE BLOQUES

Esquemtico de sensor de temperatura interno


del AvrButterfly.
Este sensor es de comportamiento
logartmico, lo implica un largo proceso de
clculo para obtener valores de temperatura
exactos. Sin embargo mediantes mtodos de
clculo se puede llegar a una aproximacin
muy aceptable

void adc_init(void)
{
//SELECIO N D EL VO LTAJE D E REFEREN CIA
//AVCC CO N CAPACITO R EXTERN O AREF pin
AD M U X|= (0< < REFS1)|(1< < REFS0);
//set prescaller AD C
AD CSRA|= (1< < AD EN )|(1< < AD IE);//enable AD C w ith dum m y conversion
//set sleep m ode AD C noise reduction conversion
//set_sleep_m ode(SLEEP_M O D E_AD C);
}

ADEMUX

Gracias