La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Parte I Pines de E/S Interrupciones

Presentaciones similares


Presentación del tema: "Parte I Pines de E/S Interrupciones"— Transcripción de la presentación:

1 Parte I Pines de E/S Interrupciones
Periféricos del MSP430G2553 Parte I Pines de E/S Interrupciones Sistemas Electrónicos 3ºGIERM

2 Sistemas Electrónicos 3ºGIERM
MSP430G2553 Tope de gama de la familia G2, en formato DIP Contiene todos los periféricos posibles de la familia Memoria máxima: 16kB de FLASH 512B de RAM Varios formatos: PDIP 20 pines TSSOP 20 y 28 pines QFN 32 pines Sistemas Electrónicos 3ºGIERM

3 Sistemas Electrónicos 3ºGIERM
Estructura interna Sistemas Electrónicos 3ºGIERM

4 Sistemas Electrónicos 3ºGIERM
Pin-out (20pin DIP) Multiplexión de pines (2 o más funciones por pin) Vcc y Vss en los pines “de arriba” Los 14 pines superiores, compatibles con las familias de 14 pines (MSP430G2231, por ejemplo) Sistemas Electrónicos 3ºGIERM

5 Sistemas Electrónicos 3ºGIERM
Puertos de E/S Primer periférico a utilizar (o ya utilizado…) Entradas digitales: Resistencias de Pull-up o Pull-down Entradas de interrupción Sensor capacitivo Protegidas contra sobretensiones o sobrecorrientes Salidas digitales: Corriente máxima: 6mA (por pin), 48mA (por puerto) Sistemas Electrónicos 3ºGIERM

6 Características eléctricas de los pines
Características estáticas: Entradas Schmitt trigger Sin zona de incertidumbre Mejora el debouncing Sistemas Electrónicos 3ºGIERM

7 Características eléctricas de los pines
Características estáticas: Salidas: Alimentado a 3V, es compatible TTL 5V Corriente máxima, 6mA Sistemas Electrónicos 3ºGIERM

8 Características eléctricas de los pines
Características estáticas: Al crecer la corriente, cae la tensión de salida Sistemas Electrónicos 3ºGIERM

9 Registros de los puertos E/S
2 registros de datos, 4 registros de configuración, y 3 registros asociados con las interrupciones: Sistemas Electrónicos 3ºGIERM

10 Registros de configuración:
P1DIR: Dirección individual de cada pin 0: entrada (por defecto) 1: salida P1SEL2, P1SEL: Selección de función del pin: 00: pin de E/S 01: periférico primario 11: periférico secundario 10: reservado P1REN: habilitación de la resistencia de pull up/ down En conjunción con P1OUT, supuesto que el pin es de entrada: P1DIR.x=0, P1SEL2.x=0, P1SEL.x=0, P1REN=1. Si P1OUT.x=0, selecciona Pull-down, y si P1OUT.x=1, pull-up Sistemas Electrónicos 3ºGIERM

11 Registros de interrupción
Cada pin (de P1, P2) puede ser una interrupción. Sólo un vector de interrupción por puerto P1IE: habilita la interrupción de cada pin P1IES: Selecciona flanco de subida o bajada: P1IES.x=1: flanco de bajada P1IES.x=0: flanco de subida P1IFG: Flag de interrupción pendiente. Para distinguir qué entrada provocó la interrupción Se debe borrar por software, escribiendo un 0 Se pueden activar también por sw, para crear una int. sw. Sistemas Electrónicos 3ºGIERM

12 Sistemas Electrónicos 3ºGIERM
Registros de datos P1IN: valor de los pines de entrada. Sólo lectura P1OUT: valor para los pines de salida (r/w) También, si pin de entrada, configura la RpUP/DWN Sistemas Electrónicos 3ºGIERM

13 Sistemas Electrónicos 3ºGIERM
Esquemático Diferente según el pin Múltiples funciones P1IN, P1OUT, P1DIR, P1REN, P1IRQ, P1SEL… Sistemas Electrónicos 3ºGIERM

14 Sistemas Electrónicos 3ºGIERM
Sensor capacitivo Periférico PinOsc: posibilidad de usar los pines como sensores capacitivos sin componentes externos. Oscilador RC. Frecuencia depende de C C varía al acercar el dedo Librerías para el manejo Sistemas Electrónicos 3ºGIERM

15 Sistemas Electrónicos 3ºGIERM
Sensor capacitivo La capacidad parásita entre electrodo y tierra cambia al acercar el dedo: Necesidad de calibrado, una vez diseñado Sistemas Electrónicos 3ºGIERM

16 Sistemas Electrónicos 3ºGIERM
Modos de uso Para usar los pines habrá que: Configurar pines de E/S Configurar resistencias Pup/dwn de las entradas Actuar sobre las salidas Leer pines de entrada Para usar las interrupciones: Configurar las interrupciones (P1IE) Configurar el flanco (P1IES) Borrar Flags iniciales Habilitar la interrupción (general) del puerto Sistemas Electrónicos 3ºGIERM

17 Sistemas Electrónicos 3ºGIERM
EJEMPLO 1: Usando los led y el botón del Launchpad. Encender el led en P1.0 Mirar la entrada en P1.3, activa a nivel bajo Si está activa, encender el led en P1.6, y si no apagarlo. Sistemas Electrónicos 3ºGIERM

18 Sistemas Electrónicos 3ºGIERM
EJEMPLO 1: Configuración: Bucle: /* Bits 0 y 6 como salida: */ P1DIR = BIT0 | BIT6; /* P1.3 con resistencia de pull-UP */ P1OUT = BIT3; /* Habilita Pull-up en P1.3 */ P1REN = BIT3; P1OUT|=BIT0; //P1.0 encendido P1OUT&=~BIT6; //P1.6 apagado while(1){ if(!(P1IN&BIT3)){ //si P1.3=0(pulsado) P1OUT|=BIT6; //P1.6 on }else P1OUT&=~BIT6; // si no, P1.6 off } Sistemas Electrónicos 3ºGIERM

19 Sistemas Electrónicos 3ºGIERM
Interrupciones Romper la secuencia de programa Ejecutar una rutina específica Vector de interrupción: dirección de la rutina Rutina de interrupción: código que se ejecuta Flag de interrupción: bit que indica que se ha producido Antes de saltar, guarda en la pila PC y SR: Sistemas Electrónicos 3ºGIERM

20 Secuencia de interrupción
Debe estar habilitada la máscara local (p.ej. CCIE) y la máscara global (GIE) Proceso completo: Se produce la interrupción Se almacena PC Se almacena SR Lee el contenido del vector (fijo) Lo copia en el PC: salta a la rutina de interrupción Ejecuta la rutina Al salir, se recuperan SR y PC: vuelve a donde estaba Sistemas Electrónicos 3ºGIERM

21 Vectores de interrupción
Específicos de cada MC. Los del MSP430G2553: Sistemas Electrónicos 3ºGIERM

22 Uso de las interrupciones en CCS5
#pragma vector=TIMER0_A0_VECTOR __interrupt void rutina_T0(void) { //Código de la rutina} Directiva de compilación #pragma Nombres definidos en el archivo correspondiente (msp430g2553.h) #define PORT1_VECTOR (2 * 1u) /* 0xFFE4 Port 1 */ #define PORT2_VECTOR (3 * 1u) /* 0xFFE6 Port 2 */ #define ADC10_VECTOR (5 * 1u) /* 0xFFEA ADC10 */ #define USCIAB0TX_VECTOR (6 * 1u) /* 0xFFEC USCI A0/B0 Transmit */ #define USCIAB0RX_VECTOR (7 * 1u) /* 0xFFEE USCI A0/B0 Receive */ #define TIMER0_A1_VECTOR (8 * 1u) /* 0xFFF0 Timer0)A CC1, TA0 */ #define TIMER0_A0_VECTOR (9 * 1u) /* 0xFFF2 Timer0_A CC0 */ #define WDT_VECTOR (10 * 1u) /* 0xFFF4 Watchdog Timer */ #define COMPARATORA_VECTOR (11 * 1u) /* 0xFFF6 Comparator A */ #define TIMER1_A1_VECTOR (12 * 1u) /* 0xFFF8 Timer1_A CC1-4, TA1 */ #define TIMER1_A0_VECTOR (13 * 1u) /* 0xFFFA Timer1_A CC0 */ #define NMI_VECTOR (14 * 1u) /* 0xFFFC Non-maskable */ #define RESET_VECTOR (15 * 1u) /* 0xFFFE Reset [Highest Priority] */ Sistemas Electrónicos 3ºGIERM

23 Sistemas Electrónicos 3ºGIERM
Ejemplo 1.2 Repetir lo mismo que el ejemplo 1, pero por interrupciones En el main, sólo inicialización En la rutina, cambio el pin hasta que se deshabilite (suelte el pulsador) Contador de interrupciones, para comprobar rebotes Sistemas Electrónicos 3ºGIERM

24 Sistemas Electrónicos 3ºGIERM
Ejemplo 1.2 En el main: int main(void) { Grace_init(); //Configuración inicial: P1OUT = BIT3; /* P1.3 pull up */ P1DIR = BIT0 | BIT6; /* P1.0 y P1.6 outs */ P1REN = BIT3; /* P1.3 R. enable */ P1IES = BIT3; /* P1.3 act. flanco de bajada */ P1IFG = 0; /* Borra flags pendientes */ P1IE = BIT3; /*Activa interrupcion en P1.3*/ //Valores iniciales: P1OUT|=BIT0;//P1.0 encendido P1OUT&=~BIT6;//P1.6 apagado return (0); //FIN DEL MAIN } Sistemas Electrónicos 3ºGIERM

25 Sistemas Electrónicos 3ºGIERM
Ejemplo 1.2 En la rutina de interrupción: Si borramos el flag al principio, errores por rebotes int n=0; /* variable GLOBAL para depuracion*/ #pragma vector=PORT1_VECTOR __interrupt void PORT1_ISR_HOOK(void) { P1OUT|=BIT6; //P1.6 encendido while(!(P1IN&BIT3)); //Espera que se desactive P1OUT&=~BIT6; //P1.6 apagado P1IFG&=~BIT3; //borra flag de interrupcion n++; //incrementa contador ints } Sistemas Electrónicos 3ºGIERM


Descargar ppt "Parte I Pines de E/S Interrupciones"

Presentaciones similares


Anuncios Google