Conceptos básicos de Interrupciones y E/S Atmel

Documentos relacionados
Guía de práctica. Dispositivo

Programación en ensamblador y en alto nivel (C)

TUTORIAL DE ATMEL AVR s de 8-bits

ASDRÚBAL LÓPEZ CHAU.

Microcontroladores de Atmel

SISTEMAS ELECTRÓNICOS AVANZADOS. ING. TÉC. INDUSTRIAL ELECTRÓNICO

Taller de Firmware. Introducción al PIC16F877. Facultad de Ingeniería Instituto de Com putación

RESETS & INTERRUPCIONES

Programación del Timer1 para la captura de flancos

Winide y Kit EVALQTY CDM 2011

Dependiendo del dispositivo usado, se tienen hasta 5 puertos de entrada/salida disponibles: PORTA PORTB PORTC PORTD PORTE

GUIA DE USUARIO Programador USBasp V3.0

MICROCONTROLADORES PIC

TEMA 5 LA MEMORIA DE DATOS MEMORIA RAM D.P.E. DESARROLLO DE PROYECTOS 1

RECURSOS FUNDAMENTALES

Laboratorio de Sistemas Embebidos Conceptos generales (2009)

Lector de códigos de barras con microcontrolador Motorola HC11

Entrada de RESET: pad por el que podemos reiniciar el chip en cualquier momento para que vuelva al inicio del programa.

Registros SFR vistos hasta ahora: Microcontroladores PIC

Diseño de Controladores Digitales.

Introducción a la programación en Lenguaje Assembler.

Estructura de Microprocesadores. Profesor Ing. Johan Carvajal Godínez

Analog To Digital Converter. Module (ADC) Curso de Microcontroladores Familia HC908 Flash de Freescale Parte II ING.

PIC 18F45XX CARACTERÍSTICAS GENERALES

Introducción a la Entrada/Salida

Laboratorio de Sistemas Electrónicos Digitales

Pines de entrada/salida (I/O) de propósito general. Mediante ellos, el micro PIC puede monitorizar y controlar otros dispositivos.

Tema 14. Interrupciones. Las. C. F. G.S. D.P.E. Módulo de Proyectos 1

NVIC : Nested Vectored Interrupt Controller

APUNTE DEL 8155 ELECTRÓNICA DIGITAL III

Comando de un ascensor de cuatro pisos

ANEXOS Configuración de los módulos utilizando la aplicación X-CTU:

V.- V.-El El manejo de de las las Interrupciones

Temporizadores y contadores en tiempo real: El módulo Timer0 del PIC.

Arquitectura de Computadores II 8086 Parte II

RB7/PGD RB6/PGC RB5 RB4 RB3/PGM RB2. RB1 RB0/INT VDD Vss RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RC7/RX/DT RC6/TX/CK RC5/SD0 RC4/SDI/SDA RD3/PSP3 RD2/PSP2

Capítulo VIII: PROGRAMACIÓN DEL PIC 16F876A

Diseño Basado en Microcontroladores. Programa Detallado

Introducción a Arduino

Controlador de Interrupciones (Versión programable) Manual de Usuario

Control remoto del EDUKIT08 vía PC...

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

Curso sobre Microcontroladores Familia HC9S08 de Freescale

PIC 18F45XX EL TIMER 0

Hoja de Datos NoMADA Advance [DAT001A NoMADA Advance 02/16]

CONTROLADOR DE TARJETA SD

Introducción al uso de la tarjeta de entrenamiento DEMO9S12XDT512

Entradas y Salidas. Componentes básicos de una PC

Tema 2: Estructura de los Microcontroladores

Programación de Microcontroladores

Microcontroladores y DSPs

Curso sobre Microcontroladores Familia HC9S08 de Freescale

BLOQUE 3. Enrique Mandado Pérez María José Moure Rodríguez. Microcontroladores

INSTITUTO TECNOLÓGICO SUPERIOR DE PÁNUCO APUNTES DE LA MATERIA DE: MICROPROCESADORES Y MICROCONTROLADORES I

El temporizador /contador Intel 8254

Ensamblador. Interrupciones. Dentro de una computadora existen dos clases de interrupciones:

TEMA III - Interrupciones en Sistemas en Tiempo Real

Programación en C para Sistemas Embebidos

MICROCONTROLADORES. M. C. Felipe Santiago Espinosa. Abril de 2015

Funcionamiento de la Pila (o stack)

Tutoría 2. Banco de memoria de 8 y 16 bits (8086)

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Diseño con Microcontroladores

4.2 Servicio de exploración de E/S

Esquema de partida. Maximum Operating Supply Voltage 5.5V USB 1 USART 1

APENDICE B Ensamblador IASM11/Simulador AVSIM11

Cartilla para Microcontrolador PIC16F /40 Pin 8-Bit CMOS FLASH.

La familia PIC18 USB posee 4 timers: Timer0, Timer1, Timer2 y Timer3, cada uno de los cuales tiene sus características únicas.

PRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador.

SISTEMAS OPERATIVOS Arquitectura de computadores

PIC MICRO ESTUDIO Reloj en tiempo real RTCU2 Clave: 719

CICLOS DEL PROCESADOR

COMUNICACIÓN SERIAL FAMILIA DSP56800: Síncronas y Asíncronas CAPÍTULO VII

PRÁCTICA 4 LOS BITS DE CONFIGURACIÓN DEL PIC16F628

PIC-Ready1. Placa adicional. Manual de usuario. MikroElektronika

Timer s Escuela Superior de Cómputo IPN. Departamento de Posgrado Dr. Julio Cesar Sosa Savedra curso.escom@yahoo.com

Práctica 5 - Entrada/Salida

7. Implementación de los temporizadores/contadores: ATMegaClassic

Entrada/Salida. Polling e Interrupciones. Verano de Mariano Moscato. Organización del Computador 1

DISPLAY LCD MICROPROCESADORES

Arquitectura de Computadores II Clase #3

Electrónica Digital II

El TIMER 0. (c) Domingo Llorente

Guía rápida para gestionar el puerto paralelo del PC

Objetivos. Objetivos. Arquitectura de Computadores. R.Mitnik

Control Digital en PC con MS-DOS

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Conceptos de Arquitectura de Computadoras Curso 2015

Estructura de Microprocesadores

Modulo LCD MODULO LCD

08 MINED MICROCONTROLES INDUSTRIALES Y EDUC.

Puertos de Entrada/Salida

Análisis general de un Microprocesador

Arquitectura intel Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

Interrupciones Fuentes de Interrupciones para el PIC16F1787

Programación del microcontrolador ATMega328P

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Nota Técnica /

ISP (Programación en sistema) de los microcontroladores de NXP (Philips) 89LPC9XX utilizando Flash Magic y la UART (puerto serie) del microcontrolador

Transcripción:

Conceptos básicos de Interrupciones y E/S Atmel Taller de Microcontroladores año 212 Optativa de grado y Curso de Posgrado

Interrupciones: conceptos básicos Mecanismo de control de flujo implementado en la mayoría de los microcontroladores para poder interactuar con el exterior. Permite interactuar con eventos sucediendo asíncronicamente a las tareas realizadas por el micro. Ejemplos: Un botón presionado por un usuario, Datos arribando por la UART, muestreos del ADC, un timer, etc. Programa Servicio de Interrupción Inst 1 Inst 2 interrupción Inst 1 Inst 3 Inst 2 Inst 4 Inst 5 Inst n Inst n llamada retorno

Interrupciones: conceptos básicos Programa con soporte para interrupciones: estructura básica Ejemplo: Un programa manejado por interrupción que haga nada y se active externamente. Pasos: 1. Seteo de las direcciones de salto en los vectores de interrupción 2. Configuración de las máscaras de interrupción necesarias para habilitar la interrupción deseada 3. Configuración del registro de control (MCUCR) 4. Habilitación de interrupciones global (SREG)

NOTA: Definición de nombres Todos los registros en la arquitectura se mapean en memoria física: banco de registros puertos de entrada/salida registros de control y estado vectores de interrupción Por convención se usan ciertos nombre predefinidos y aceptados El mapeo de esos nombres a direcciones reales de memoria esta en archivos de definición (*def.inc) Al incluir estos archivos se pueden utilizar en el programa todos los nombres de puertos, los nombres de bits individuales, etc.

8515def.inc ;***** I/O Register Definitions.equ SREG =$3f.equ SPH =$3e.equ SPL =$3d.equ GIMSK =$3b.equ GIFR =$3a.equ TIMSK =$39.equ TIFR =$38.equ MCUCR =$35.equ TCCR =$33.equ TCNT =$32.equ TCCR1A =$2f.equ TCCR1B =$2e.equ TCNT1H =$2d.equ TCNT1L =$2c.equ OCR1AH =$2b.equ OCR1AL =$2a.equ OCR1BH =$29.equ OCR1BL =$28 ;***** Bit Definitions.equ INT1 =7.equ INT =6.equ TOIE1 =7.equ OCIE1A =6.equ OCIE1B =5.equ TICIE =3.equ TOIE =1.equ TOV1 =7.equ OCF1A =6.equ OCF1B =5.equ ICF1 =3.equ TOV =1.equ SRE =7.equ SRW =6.equ SE =5.equ SM =4.equ ISC11 =3.equ ISC1 =2.equ ISC1 =1.equ ISC =.equ PORTA =$1b.equ DDRA =$1a.equ PINA =$19.equ PORTB =$18.equ DDRB =$17.equ PINB =$16.equ PORTC =$15.equ DDRC =$14.equ PINC =$13.equ PORTD =$12.equ DDRD =$11.equ PIND =$1

8515def.inc Vectores de interrupciones.equ INTaddr=$1 ;External Interrupt Vector Address.equ INT1addr=$2 ;External Interrupt1 Vector Address.equ ICP1addr=$3 ;Input Capture1 Interrupt Vector Address.equ OC1Aaddr=$4 ;Output Compare1A Interrupt Vector Address.equ OC1Baddr=$5 ;Output Compare1B Interrupt Vector Address.equ OVF1addr=$6 ;Overflow1 Interrupt Vector Address.equ OCaddr =$7 ;Output Compare Interrupt Vector Address.equ OVFaddr=$8 ;Overflow Interrupt Vector Address.equ SPIaddr =$9 ;SPI Interrupt Vector Address.equ URXCaddr=$a ;UART Receive Complete Interrupt Vector Address.equ UDREaddr=$b ;UART Data Register Empty Interrupt Vector Address.equ UTXCaddr=$c ;UART Transmit Complete Interrupt Vector Address.equ ACIaddr =$d ;Analog Comparator Interrupt Vector Address

Volvamos al ejemplo Paso 1 Seteo de las direcciones de salto en los vectores de interrupción La memoria de programa, desde la dirección $, contiene la tabla de Vectores de interrupción. El programa real debe comenzar después de esa tabla. La tabla almacena vectores que contienen la dirección de las rutinas de Interrupción correspondientes. Dirección $ $1 $2 Vector Reset INT INT1 Comentario Dirección de la rutina de reset del procesador Dirección de la rutina de manejo de interrupción externa INT Dirección de la rutina de manejo de interrupción externa INT...

La directiva.org Directiva ampliamente usada en ensambladores para reservar y definir Espacios de memoria ; Interrupt service vectors ; Handles reset and external interrupt vectors INT and INT1.org $ Reset ; Reset vector (when the MCU is reset).org INTaddr IntV ; INT vector (ext. interrupt from pin PD2).org INT1addr IntV1 ; INT1 vector (ext. interrupt from pin PD3) ; - Rutina Reset vector Reset: ldi TEMP,low(RAMEND) ; Set initial stack ptr location at ramend out SPL,TEMP ldi TEMP, high(ramend) out SPH, TEMP......

Paso 2 Configuración de las máscaras de interrupción necesarias para habilitar la interrupción deseada Para este paso es necesario configurar bits particulares del registro GIMSK (General Interrupt MaSK register) GIMSK bit 7 6 5 4 3 2 1 INT1 INT - - - - - - Read/write R/W R/W R R R R R R Valor inicial Estos dos a 1

Paso 3 Configuración del registro de control (MCUCR) Para este paso es necesario configurar bits particulares del registro MCUCR (General Control register) NOTA: MCUCR es acrónimo de MCU Control Register MCUCR bit 7 6 5 4 3 2 1 SRE SRW SE SM ISC11 ISC1 ISC1 ISC Valor inicial Se deben tocar estos cuatro

Configuración de ISCxx ISCx1 1 1 ISCx 1 1 Descripción Nivel bajo en el pin INTx genera interrupción Reservado Nivel de subida en el pin INTx genera interrupción Nivel de bajada en el pin INTx genera interrupción Si se desea que INT1 se active en flanco de subida e INT en nivel bajo, los cuatro bits deberán ser: 1

Paso 4 Habilitación de interrupciones global (SREG) Para este paso es necesario configurar bits particulares del registro SREG (Status register) SREG bit 7 6 5 4 3 2 1 I T H S V N Z C Valor inicial I = deshabilita TODAS las interrupciones (la instrucción SEI hace lo mismo) Se debe tocar este bit I = 1 habilita las interrupciones

Funcionamiento del programa Después de la inicialización vista el programa hará lo siguiente: 1. Un evento externo genera una INT en el pin PD2 2. Se ejecuta la instrucción de salto en el vector INT 3. Se ejecuta la rutina asociada al vector 4. En algún momento se ejecuta un RETI retornando al programa principal NOTAR QUE en los vectores de interrupción lo que hay son instrucciones de salto a las direcciones de las rutinas correspondientes

Programa.ASM de ejemplo Hints importantes en un código ASM: Programando interrupciones de dispositivos Un programa con 3 interrupciones: La de reset (inicio del programa), La interrupción externa INT, que muestra un mensage y El servicio de recepción de caracteres de la Usart (interrupción interna).include "m8def.inc".def Temp1 = r16.def Temp2 = r17.def Temp3 = r18.def item = r19.def nivel = r2.def char = r21.equ CLOCK = 8.equ BAUD = 96.equ UBRRVAL = CLOCK/(BAUD*16)-1 Definición de símbolos Parámetros de inicialización Del Usart

Programa.ASM de ejemplo Hints importantes en un código ASM: Programando interrupciones de dispositivos.org x RESET INT serialreceive Vector de la interrupción de reset Vector de la interrupción externa INT Vector de la interrupción de la Usart por carácter recibido

Programa.ASM de ejemplo Hints importantes en un código ASM: Programando interrupciones de dispositivos serialreceive: push Temp1 in Temp1, UDR mov char, Temp1 rcall sendchar pop Temp1 reti Servicio de interrupción De la Usart INT: ldi ldi rcall ldi rcall rcall reti msgint:.db ZH,high(2*msgINT) ZL,low (2*msgINT) clearlcd char,x3 printat loadbyte INT activa", Servicio de las demás interrupciones

Programa.ASM de ejemplo Hints importantes en un código ASM: Programando interrupciones de dispositivos ; Aqui Comienza a ejecutar el procesador ; -------------------------------------- RESET: ; Inicializa el stack pointer ldi Temp1, low(ramend) out SPL, Temp1 ldi Temp1, high(ramend) out SPH, Temp1 Comienzo de la interrupción de reset Carga el SP con el fin de RAM ;Inicializa la Uart ldi Temp1, LOW(UBRRVAL) out UBRRL, Temp1 ldi Temp1, HIGH(UBRRVAL) out UBRRH, Temp1 ; Formato: 8 Bit ldi Temp1, 1<<URSEL) (3<<UCSZ) out UCSRC, Temp1 sbi UCSRB, RXCIE sbi UCSRB, RXEN Inicialización del dispositivo Usart

Programa.ASM de ejemplo Hints importantes en un código ASM: Programando interrupciones de dispositivos ;Inicializa PortD para irq int ldi Temp1, x out DDRD, Temp1 ldi Temp1, b1 out MCUCR, Temp1 ldi Temp1, b1 out GIMSK, Temp1 ; Habilitar Interrupciones sei ;********************************** ; Bucle Principal ;********************************** final: final Puerto D seteado como input Int se activa en flanco Ascendente de clock Activa INT Habilita todas las interrupciones Puesto que todo sucede en las interrupciones aca no se hace nada y Solo se itera

Puertos de entrada/salida Los puertos de entrada/salida se mapean en la zona de memoria a continuación del banco de registros y antes de la memoria de uso general Tamaño variable según el modelo de microcontrolador dependiendo de la cantidad y tipo de dispositivos internos que posea Diseño ortogonal: Registros de control y estado del MCU Registros de flags del MCU Puertos Registros de manejo de interrupciones externas Registros de manejo de dispositivos internos Registros de acceso a los puertos externos

Puertos E/S del ATmega8 Flags y pila INTs control Timer, comparador y contador entrada Watch dog.equ SREG =$3f 63 ; status register.equ SPH =$3e 62 ; stack high.equ SPL =$3d 61 ; stack low.equ GIMSK =$3b 59 ; general interrupt mask.equ GIFR =$3a 58 ; general interrupt flag register.equ TIMSK =$39 57 ; timer/counter interrupt mask register.equ TIFR =$38 56 ; timer/counter interrupt flag register.equ MCUCR =$35 53 ; MCU control register.equ TCCR =$33 51 ; timer/counter control register.equ TCNT =$32 5 ; timer/counter.equ TCCR1A =$2f 47 ; timer/counter1 control register A.equ TCCR1B =$2e 46 ; timer/counter1 control register B.equ TCNT1H =$2d 45 ; timer/counter1 high.equ TCNT1L =$2c 44 ; timer/counter1 low.equ OCR1AH =$2b 43 ; output compare register 1 A high.equ OCR1AL =$2a 42 ; output compare register 1 A low.equ OCR1BH =$29 41 ; output compare register 1 B high.equ OCR1BL =$28 4 ; output compare register 1 B low.equ ICR1H =$25 37 ; input capture register 1 high.equ ICR1L =$24 36 ; input capture register 1 low.equ WDTCR =$21 33 ; watch dog timer control

Puertos E/S del ATmega8 Manejo eeprom Puertos de E/S accesibles por pines SPI USART Comp..equ EEARH =$1f 31 ; eeprom address register high.equ EEARL =$1e 3 ; eeprom address register low.equ EEDR =$1d 29 ; eeprom data register.equ EECR =$1c 28 ; eeprom control register.equ PORTA =$1b 27 ; puerto A.equ DDRA =$1a 26 ; data direction register A.equ PINA =$19 25 ; pin A.equ PORTB =$18 24 ; puerto B.equ DDRB =$17 23 ; data direction register B.equ PINB =$16 22 ; pin B.equ PORTC =$15 21 ; puerto C.equ DDRC =$14 2 ; data direction register C.equ PINC =$13 19 ; pin C.equ PORTD =$12 18 ; puerto D.equ DDRD =$11 17 ; data direction register D.equ PIND =$1 16 ; pin D.equ SPDR =$f 15 ; SPI data register.equ SPSR =$e 14 ; SPI status register.equ SPCR =$d 13 ; SPI control register.equ UDR =$c 12 ; USART data register.equ USR =$b 11 ; USART status register.equ UCR =$a 1 ; USART control register.equ UBRR =$9 9 ; USART baud rate register.equ ACSR =$8 8 ; analog comp control and status register

Pines de E/S Accesibles vía cuatro puertos de 8 bits (A, B, C, D) Puertos configurables bit a bit como entrada, salida, pull-up o triestado Tres registros por cada puerto: PORT : valor de salida en modo escritura o habilitación de pull-up en modo lectura PIN: valor de entrada en modo lectura DDR: selección de entrada o salida para cada pin 1 salida - entrada

Puerto de E/S genérico