MICROCONTROLADORES ATMEL INTERRUPCIONES EN Avr Butterfly Jorge Vega
MICROCONTROLADORES ATMEL INTERRUPCIONES EN Avr. Butterfly. Jorge Vega Rosero Giovanni Granados.
INTRODUCCION El desarrollo de herramientas para aprendizaje para cualquier rama del conocimiento ha sido motivo de continua evolución. En Electrónica, nuevos desarrollos aparecen cada día, estos desarrollos ameritan una inmediata adaptabilidad forzada para estar en un nivel competitivo ante otras Sociedades Tecnológicas.
INTRODUCCION Esta guía ayuda a que nos encaminemos específicamente a desarrollos iníciales con los Microcontroladores Atmel. n El aporte es a dar a conocer el potencial de estos Microcontroladores. Y que en menor tiempo posible el estudiante interesado en esta tecnología desarrolle su potencial creativo. n
INTRODUCCION Nuestra área de interés son las Interrupciones del Microcontrolador ATmega 169 Fabricado por Atmel, y que lo encontramos embebido en el kit de desarrollo del AVR Butterfly. n
INTERRUPCIONES n Las Interrupciones son un método del que disponen los Microcontroladores, para atender alguna circunstancia que requiera su inmediata atención. Al presentarse un pedido de interrupción el Microcontrolador da por terminado cualquier instrucción en curso, y hará un salto a una subrutina de Interrupción, una vez terminada esta subrutina, volverá a su labor anterior.
INTERRUPCIONES
AVRBUTTERFLY n En nuestro estudio nos basaremos en las configuraciones del Atmega 169, ya que es el Microcontrolador integrado en el AVRBUTTERFLY.
VECTORES DE INTERRUPCION NUMERO DE DIRECCION DE FUENTE DEFINICION DE INTERRUPCION VECTOR PROGRAMA 1 0 X 0000 RESET 2 0 X 0002 INT 0 3 0 X 0004 PCINT 0 INTERRUPCION EXTERNA POR CAMBIO EN PIN 4 0 X 0006 PCINT 1 INTERRUPCION EXTERNA POR CAMBIO EN PIN EXTERNO RESET INTERRUPCION EXTERNA INT 0
VECTORES DE INTERRUPCION 5 0 X 0008 TIMER 2 COMP 6 0 X 000 A TIMER 2 OVF 7 0 X 000 C TIMER 1 COMP 8 0 X 000 E TIMER 1 COMPA TIMER/COUNTER 1 COMPARACION CON VALOR DEFINIDO EN A 9 0 X 0010 TIMER 1 COMPB TIMER/COUNTER 1 COMPARACION CON VALOR DEFINIDO EN B 10 0 X 0012 TIMER 1 OVF TIMER/COUNTER 2 COMPARACION CON VALOR DEFINIDO TIMER/COUNTER 2 POR DESBORDE TIMER/COUNTER 1 COMPARACION CON VALOR DEFINIDO TIMER/COUNTER 1 POR DESBORDE
VECTORES DE INTERRUPCION 11 0 X 0014 TIMER 0 COMP TIMER/COUNTER 0 COMPARACION CON VALOR DEFINIDO 12 0 X 0016 TIMER 0 OVF 13 0 X 0018 SPI, STC 14 0 X 001 A USART, RX 15 0 X 001 C USART, UDRE 16 0 X 001 E USART, TX COMPLETA 17 0 X 0020 USI START USI CONDICION DE INICIO TIMER/COUNTER 0 POR DESBORDE SPI TRANSMISION SERIAL COMPLETA USART, RX COMPLETA USART, REGISTRO DE DATO VACIA
VECTORES DE INTERRUPCION 18 0 X 0022 USI OVERFLOW USI DESBORDE 19 0 X 0024 ANALOG COMPARADOR ANALOGICO 20 0 X 0026 ADC 21 0 X 0028 EE READY 22 0 X 002 A SPM READY 23 0 X 002 C LCD ADC, CONVERSION COMPLETA EEPROM LISTA ALMACENAMIENTO EN MEMORIA DE PORGRAMA LISTA LCD INICIO DE FRAME.
ATMEGA 169
PROYECTO 1 Elaboración un controlador continuo para Led Tricolor(RGB), por medio de modulación PWM.
OBJETIVOS n Mostrar el uso de las Interrupciones en la generación de señales PWM, y así poder visualizar una gama de colores a partir de un LED RGB.
PWM n La modulación por anchura de pulsos (PWM) es una técnica de modulación, en la que se modifica el ciclo de trabajo de una señal periódica cuadrada, esta variación en el ciclo de trabajo, produce una variación en la transferencia de energía entregada. Afectando directamente a la intensidad final del Led.
PWM n n El ciclo de trabajo de una señal periódica es el ancho relativo de su parte positiva en relación al período. Cuando mas tiempo pase la señal en estado alto, mayor será la velocidad del motor. Este tren de pulsos, en realidad, hace que el motor marche alimentado por la tensión máxima de la señal durante el tiempo en que esta se encuentra en estado alto, y que pare en los tiempos en que la señal esta en estado bajo.
Ciclo de Trabajo
PWM Usos de señales PWM tiene diferentes usos: n n n Atenuación de la intensidad de un LED. Disponer de una salida analógica; si la salida digital esta filtrada, esto proveerá de un voltaje entre el 0% y el 100%. Generar señales de audio. Proveer de un control de velocidad variable para motores. Generar una señal modulada, como la utilizada en controles remotos de televisores.
DIAGRAMA DE BLOQUES
Gama de colores
ROJO 120, VERDE, 60 AZUL 240
ROJO 34, VERDE 180 AZUL 240
Dificultades encontradas n Las salidas PWM naturales del Atemega 169 estas reservadas.
Dificultades
Interrupciones al generar PWM n n n Se activa una interrupción cuando el Timer llega a su máximo valor 0 x. FF y pasa a 0 x 00 Esta interrupción es por desborde. También se activa cuando el Timer llega al valor de comparación, esta interrupción es por comparación.
; HABILITACION DE REGISTROS PARA FUNCIONAMIENTO DEL TIMERO HABILITAR_TIMER 0_COMP: //TCCR 0 A - TIMER COUNTER CONTROL REGISTER A //FOC 0 A 0 X NO USADO //WGM 00 WGM 01 11 FAST PWM //COM 01 A COM 0 A 0 00 DESCONECTADO OC 0 A //CS 02 CS 01 CS 00 100 CLK/256 // //ORDEN(FOC 0 A, WGM 00, COM 01 A, COM 0 A 0, WGM 01, CS 02, CS 01, CS 00) // LDI REG_TEMP, 0 B 01001100 ; GUARDAMOS CONFIGURACION DE MODO. Y PREESCALADOR OUT TCCR 0 A, REG_TEMP LDS REG_TEMP, TIMSK 0; GUARDAMOS EL ESTADO ANTERIOR DE TIMSK 0 (INTERRUPT MASK REGISTER) SBR REG_TEMP, (1<<OCIE 0 A) + (1<<TOIE 0) ; HABILITAMOS LA INTERRUPCION 0 X 00014 Y 0 X 00016 STS TIMSK 0, REG_TEMP; CARGAMOS EL VALOR CONFIGURADO EN TIMSK 0 LDI REG_TEMP, 0 x 0 A; CARGAMOS EL VALOR MAXIMO AL QUE LLEGARA EL TIMER 2 STS OCR 0 A, REG_TEMP RET
Configuraciones
Configuraciones
; HABILITACION DE REGISTROS PARA FUNCIONAMIENTO DEL TIMERO HABILITAR_TIMER 0_COMP: //TCCR 0 A - TIMER COUNTER CONTROL REGISTER A //FOC 0 A 0 X NO USADO //WGM 00 WGM 01 11 FAST PWM //COM 01 A COM 0 A 0 00 DESCONECTADO OC 0 A //CS 02 CS 01 CS 00 100 CLK/256 // //ORDEN(FOC 0 A, WGM 00, COM 01 A, COM 0 A 0, WGM 01, CS 02, CS 01, CS 00) // LDI REG_TEMP, 0 B 01001100 ; 0 B 01001010 ; GUARDAMOS CONFIGURACION DE MODO. Y PREESCALADOR OUT TCCR 0 A, REG_TEMP LDS REG_TEMP, TIMSK 0; GUARDAMOS EL ESTADO ANTERIOR DE TIMSK 0 (INTERRUPT MASK REGISTER) SBR REG_TEMP, (1<<OCIE 0 A) + (1<<TOIE 0) ; HABILITAMOS LA INTERRUPCION 0 X 00014 Y 0 X 00016 STS TIMSK 0, REG_TEMP; CARGAMOS EL VALOR CONFIGURADO EN TIMSK 0 LDI REG_TEMP, 0 x 0 A; CARGAMOS EL VALOR MAXIMO AL QUE LLEGARA EL TIMER 2 STS OCR 0 A, REG_TEMP RET
Cambio lógico en pin n n n //COLOR AZUL INT_TIMER 0_COMP: CLI CBI PORTB, 0 SEI RETI n n n INT_TIMER 0_OVF: CLI SBI SEI n n RETI PORTB, 0
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 D 8 02 04 06 49 92 DB 03 06 09 4 A 94 DE 04 08 0 C 4 B 96 E 1 05 0 A 0 F 4 C 98 E 4 06 0 C 12 4 D 9 A E 7 07 0 E 15 4 E 9 C EA 08 10 18 4 F 9 E ED 09 12 1 B 50 A 0 F 0 0 A 14 1 E 51 A 2 F 3 0 B 16 21 52 A 4 F 6 0 C 18 24 53 A 6 F 9 0 D 1 A 27 54 A 8 FC 0 E 1 C 2 A 55 AA FF
PROYECT 2 Elaborar un programa en lenguaje C, que active un ventilador cuando la lectura del ADC 0 ha alcanzado el valor Máximo decimal de 200. Y apagar el ventilador cuando el ADC 0 ha alcanzado el valor mínimo decimal de 100, utilizar el NTC integrado del Avr. Butterfly. Ver grafica 3 -19.
OBJETIVOS n n n Configurar el convertidor analógico digital. Realizar mediciones mediante el sensor TNC intergrado del Avr. Butterfly. Activar un led, que representa el Encendido de un Ventilador.
COMPORTAMIENTO DEL SISTEMA DEACUERDO A LA ENTRADA ANALOGICA
DIAGRAMA DE BLOQUES
Esquemático de sensor de temperatura interno del Avr. Butterfly. Este sensor es de comportamiento logarítmico, lo implica un largo proceso de cálculo para obtener valores de temperatura exactos. Sin embargo mediantes métodos de cálculo se puede llegar a una aproximación muy aceptable
n n n n n void adc_init(void) { //SELECION DEL VOLTAJE DE REFERENCIA //AVCC CON CAPACITOR EXTERNO AREF pin ADMUX|=(0<<REFS 1)|(1<<REFS 0); //set prescaller ADCSRA|=(1<<ADEN)|(1<<ADIE); //enable ADC with dummy conversion //set sleep mode ADC noise reduction conversion //set_sleep_mode(SLEEP_MODE_ADC); }
ADEMUX
n. Gracias
- Slides: 51