Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Diseo de sistemas microprocesados
Semana 9: Puertos I/O, manejo de teclado matricial e Interrupciones en el dsPIC30F3014
Profesor: Mag. Ing. Sergio Salas Arriarn
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Puertos del dsPIC30F3014
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
En total se cuentan con 5 puertos I/O
El Puerto B tiene 13 bits (RB0-RB12). Adems, cada uno de estos pines puede configurarse como entrada analgica. Los pines RB6 y RB7 se utilizan para la programacin de la memoria FLASH a travs del grabador Pickit2. Los pines RB0-RB5 funcionan tambin como generadores de interrupcin por cambio de estado (CNx). El Puerto C consta de tres pines (RC13, RC14, RC15). El pin RC15 funciona como entrada del cristal externo. Si se utiliza una seal de reloj externa por el pin CLKI o el oscilador interno en reemplazo del cristal, este pin puede funcionar como puerto I/O. Los pines RC13 y RC14 pueden operar como generadores de interrupcin por cambio de estado (CNx) o tambin como entrada de un cristal de baja frecuencia (por ejemplo, 32,768 kHz.). El Puerto A est compuesto por un solo pin (RA11). Este pin puede ser configurado como generador de interrupcin externa (INT0) para la deteccin de flancos de subida de seales digitales. El Puerto D se compone de 6 pines (RD0-RD3 y RD8-RD9). Estos pines pueden operar tambin para los modos de Entrada de captura, Comparacin Mag. Ing.e Sergio Salas de salida y tambin para dos interrupciones externas adicionales (INT1
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
El registro de configuracin de entrada salida TRISx
El mapa de memoria del dsPIC30F3014 cuenta con registros de configuracin salida denominados TRISx (donde x puede ser A, B, C, D y F). Cada registro T bits de longitud.
Si por ejemplo, TRISB = 0x000F, entonces los cuatro primeros bits (RB0-RB3) como entrada. Los 9 bits restantes del Puerto B (RB4-RB12) se configuran com Y qu sucede con los 3 bits restantes del TRISB? Pues, al no estar implemen en el dsPIC el valor de los bits 15, 14 y 13 de TRISB no interesan.
Es posible acceder tambin al registro TRISB haciendo uso de la declaracin d (utilizando una Union declarada en la librera p30fxxxx.h) de la siguiente maner TRISBbits.TRISB0 = 0; //Pin RB0 configurado como salida. TRISBbits.TRISB10 = 1; //Pin RB10 configurado como entrada.
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Configuracin de los puertos analgicos
La combinacin del registro TRISB y el registro ADPCFG permite el control y operacin d tambin operan como entrada analgica. Los pines del Puerto B que se desean utilizar co analgica deben tener sus respectivos pines del TRISB puestos a 1 lgico. Si los pines d a 0 entonces el voltaje convertido ser el nivel alto (VOH) el nivel bajo (VOL).
Cuando se lee el registro PORTB estando todos los pines configurados como entrada an lgico detectado ser siempre 0 en cada pin.
Por defecto todos los pines del Puerto B estn configurados como entrada analgica. Si e como salida digital, no habr ningn conflicto. Pero, si se quiere utilizar los pines del Puer entrada digital es necesario poner cada bit respectivo del registro ADPCFG a 1 lgico. P si TRISB = 0xFFFF y ADPCFG = 0x00FF, entonces los pines RB12-RB8 funcionan como mientras que los pines RB7-RB0 operan como entrada digital.
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Los registros PORTx y LATx
Los registros LATx han sido incorpor para solucionar los problemas de gen las instrucciones que leen y modifica las puertas de entrada y salida. Cualquier escritura sobre el registro LATx o PORTx genera que dicho val se muestre en el Puerto. Si se configura el puerto como entrad Y se lee el registro PORTx entonces, Leer el valor introducido en dicho pu Si se lee el registro LATx se obtendr valor del LATCH el cual NO es simila al valor del puerto.
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Ejemplo de configuracin de puertos
int main() { /*Al iniciar el programa todos los pines son entrada por defecto*/
TRISB = 0x0000; /*El Puerto B tiene 13 bits se configuran todos como salida*/ LATB = 0x1CA5; /*Acceso al Puerto B a travs del registro LATCH*/ PORTB = 0x1CA6; /*Acceso directo al Puerto B*/
LATB++; realizarse LATB++;
while(1); return(0);
/*Cualquier manipulacin del valor del Puerto B debe sobre el registro LATCH*/ /*LATB = LATB + 1*/
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
En el mdulo de desarrollo
Los 8 pines menos significativos del Puerto B (RB0-RB7) se encuentran conectados a 8 LEDs. La conexin se habilita colocando los Jumpers que separan las resistencias de los pines del dsPIC30F3014. Esto se observa en el diagrama esquemtico de la figura inferior:
Mag. Ing. Sergio Sala
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
En el mdulo de desarrollo
El pin RD9 controla la habilitacin del Display 7 segmentos de la derecha, mientras que el pin RD8 controla el Display 7 segmentos de la izquierda. Poniendo el respectivo pin a 0 lgico se habilita el Display. El Puerto F controla el encendido y apagado de los segmentos del Display (RF0 = A, RF1 = B, etc). El punto se controla con el pin RB0. Dado que el Display es de tipo nodo comn, cada segmento se encender con 0 lgico,
Mag. Ing. Sergio Salas Dado que los segmentos de ambos
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Ejercicios
Haciendo uso de los 8 LEDs conectados al Puerto B desarrolle lo siguiente:
1. Usted cuenta con dos pulsadores en su placa conectados a los pines RC13 y RC14. Ambos pulsadores se encuentran configurados en Pull up, con lo cual, al estar abiertos permitirn que el estado lgico de los pines sea 1. Disee un programa que al detectar la secuencia 00 en RC14 y RC13 muestre el byte 0x00 en el Puerto B. Luego,si la secuencia es 01 deber mostrar el byte 0x0F, si es 10 el byte 0xF0 y si es 11 el byte 0xFF 2. Disee un programa donde un solo LED se mantenga encendido cada 300 milisegundos. La secuencia de encendido del LED debe ser as RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB6, RB5, RB4, RB3, RB2, RB1 y repetirse una y otra vez. 3. Disee un ecualizador con los 8 LEDs conectados al Puerto B. Para esto, deber generar la siguiente secuencia: 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F y 0xFF y viceversa. Cada estado deber durar 50 milisegundos. 4. Muestre en el Display 7 segmentos controlado por el pin RD8 la cifra 7 y en el otro Diplay 7 segmentos la cifra 2. Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
El teclado matricial
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Las resistencias de Pull up de los pines CNx
RC13/CN1
dsPIC30F3014
5V
Una resistencia de Pull up permite RC14/CN0 fijar una tensin de 5V en un pin de entrada RB5/CN7 cuando este se encuentra desconectado. Esto es RB4/CN6 ideal para la conexin de CNPU1 = 0b0000000011111111 pulsadores en los RB3/CN5 cuales se hace contacto con tierra. El bit respectivo del registro CNPU1 permite activar las RB2/CN4 primeras 8 resistencias de Pull up de los pines CN0-CN7. RB1/CN3 Con este bit a 1 se habilitan los Pull ups internos de los pines CN0RB0/CN2 CN7. Mag. Ing. Sergio Sala Con este bit a 0 las resistencias
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Algoritmo de lectura del teclado usando los pines CN0-CN7 (Inicio)
5V 1 1 1 1
Entradas digitales
RB3 RB2
RB1
RB0
0V 0V 0V 0V RC14RC13RB5 RB4
Salidas digitales
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Algoritmo de lectura del teclado usando los pines CN0-CN7 (Segunda parte)
5V 1 0 1 1
Entradas digitales
Se pulsa la tecla 4
RB3 RB2
RB1
RB0
0V 0V 0V 0V RC14RC13RB5 RB4
Salidas digitales
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Algoritmo de lectura del teclado usando los pines CN0-CN7 (Tercera parte)
0 0 0 0
RB2
RB1
RB0
5V 5V 0V 1 1 1 RC14RC13RB5 RB4
Entradas digitales con pull up activo
Mag. Ing. Sergio Salas
Salidas digitales
Se pulsa la tecla 4
RB3
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Algoritmo de lectura del teclado usando los pines CN0-CN7 (Parte final)
Dado que primero, el 0 lgico fue detectado en el pin RB2 y el segundo 0 lgico fue detectado en el pin RC14, la interseccin da Fila 2 y Columna 1. Eso implica la posicin 0x04 y coincidentemente la tecla 4. Posteriormente, se deben ignorar los Glitches producidos por el efecto de soltar la tecla pulsada. Para esto se debe realizar un retardo de tiempo de alrededor de 200 mseg. De no realizarse este retardo se corre el riesgo de detectar ms de una pulsacin. Finalmente, se configuran nuevamente los pines RB5-RB2 como como salidas digitales con el estado 0 lgico y los pines RB1, RB0, RC13 y RC14 como entradas con Pull up activo. Y el proceso de espera de la pulsacin de la siguiente tecla se repite.
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Algoritmo de deteccin de las teclas pulsadas (parte 1)
typedef union{ struct{ unsigned char bit0:1; unsigned char bit1:1; unsigned char bit2:1; unsigned char bit3:1; unsigned char bit4:1; unsigned char bit5:1; unsigned char bit6:1; unsigned char bit7:1; }_bits; unsigned char _byte; }teclado; unsigned char LeeTeclado(void); unsigned char k;
Mag. Ing. Sergio Sala
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Algoritmo de deteccin de las teclas pulsadas (parte 2) int main()
{
TRISB = 0xFFF0; //Los cuatro pines menos significativos son sal TRISC = 0xFFFF; //RC13 y RC14 son CN0 y CN1 ADPCFG = 0xFFFF; LCD_CONFIG(); BORRAR_LCD(); ESCRIBE_MENSAJE("Prueba",6); LATB=0; CNPU1 = 0x00FF; while(1) { k = LeeTeclado(); POS_CURSOR(1,7); if(k!='N') ESCRIBE_CHAR(k); } return(0); Mag. Ing. Sergio Sala
Algoritmo de deteccin de las teclas pulsadas (parte 3)
Carrera: Ingeniera Electrnica
Facultad de Ingeniera Electrnica y Mecatrnica
unsigned char LeeTeclado(void) { teclado a; a._bits.bit0 = PORTCbits.RC14; a._bits.bit1 = PORTCbits.RC13; a._bits.bit2 = PORTBbits.RB5; a._bits.bit3 = PORTBbits.RB4; if(a._byte == 0b00001111) return('N'); else if(a._byte == 0b00000111) { //COL 4 TRISB &= 0xFF0F; TRISB |= 0x000F; TRISC = 0x0FFF; LATB = 0; LATC = 0; CNPU1 = 0x00FF; a._bits.bit0 = PORTBbits.RB0; a._bits.bit1 = PORTBbits.RB1; a._bits.bit2 = PORTBbits.RB2; a._bits.bit3 = PORTBbits.RB3; __delay_ms(200);
Mag. Ing. Sergio Salas
Algoritmo de deteccin de las teclas pulsadas (parte 4)
Carrera: Ingeniera Electrnica
Facultad de Ingeniera Electrnica y Mecatrnica
if(a._byte == 0b00000111) {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('A');} else if(a._byte == 0b00001011) {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('B');} else if(a._byte == 0b00001101) {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('C');} else if(a._byte == 0b00001110) {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('D');} else {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('M');} } else if(a._byte == 0b00001011) { //COL3 TRISB &= 0xFF0F; TRISB |= 0x000F; TRISC = 0x0FFF; LATB = 0; LATC = 0; CNPU1 = 0x00FF;
Mag. Ing. Sergio Sala
Algoritmo de deteccin de las teclas pulsadas (parte 5)
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
a._bits.bit0 = PORTBbits.RB0; a._bits.bit1 = PORTBbits.RB1; a._bits.bit2 = PORTBbits.RB2; a._bits.bit3 = PORTBbits.RB3; __delay_ms(200); if(a._byte == 0b00000111) {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('3');} else if(a._byte == 0b00001011) {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('6');} else if(a._byte == 0b00001101) {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('9');} else if(a._byte == 0b00001110) {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('#');} else {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('M');} } else if(a._byte == 0b00001101) { //COL2 TRISB &= 0xFF0F; TRISB |= 0x000F; TRISC = 0x0FFF; LATB = 0; LATC = 0; CNPU1 = 0x00FF;
Mag. Ing. Sergio Salas
Algoritmo de deteccin de las teclas pulsadas (parte 6)
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
a._bits.bit0 = PORTBbits.RB0; a._bits.bit1 = PORTBbits.RB1; a._bits.bit2 = PORTBbits.RB2; a._bits.bit3 = PORTBbits.RB3; __delay_ms(200); if(a._byte == 0b00000111) {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('2');} else if(a._byte == 0b00001011) {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('5');} else if(a._byte == 0b00001101) {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('8');} else if(a._byte == 0b00001110) {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('0');} else {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;return('M');}
} else if(a._byte == 0b00001110) { //COL1 TRISB &= 0xFF0F; TRISB |= 0x000F; TRISC = 0x0FFF; LATB = 0; LATC = 0; CNPU1 = 0x00FF;
Mag. Ing. Sergio Salas
Algoritmo de deteccin de las teclas pulsadas (parte 7)
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
a._bits.bit0 = PORTBbits.RB0; a._bits.bit1 = PORTBbits.RB1; a._bits.bit2 = PORTBbits.RB2; a._bits.bit3 = PORTBbits.RB3; __delay_ms(200); if(a._byte == 0b00000111) {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;retu else if(a._byte == 0b00001011) {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;retu else if(a._byte == 0b00001101) {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;retu else if(a._byte == 0b00001110) {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;retu else {TRISB &= 0xFFF0;TRISB |= 0x00F0;TRISC = 0xFFFF;LATB = 0;retu
} else return('N'); }
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Las Interrupciones
En el mundo de los microcontroladores, es muy comn implementar programas multita encuentran pendientes de mltiples procesos: lectura de un dato proveniente del ADC, un byte por el puerto serie UART, pulsacin de una tecla del teclado matricial, un flanco un sensor digital, el desbordamiento de un Timer, un evento de Reset, etc.
Muchos de estos eventos son procesos no predecibles que pueden ocurrir en cualquie Si el procesador se encuentra siempre pendiente de que cualquiera de estos eventos o suceder ciertos problemas: 1. El consumo de energa aumenta. 2. El procesador puede perder un evento por no registrarlo a tiempo. 3. Si dos eventos ocurren en simultneo el procesador puede ignorar uno de ellos. 4. El procesador puede verse limitado en su capacidad de procesamiento al tener que sostener tantos procesos a la vez.
Para evitar todos estos inconvenientes, los microcontroladores cuentan con un sistema que permite detectar eventos externos al procesador en los momentos que ocurren y s procesador con tareas en el instante que dicho evento ha sido generado.
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
El concepto de una interrupcin
Telfono con la bocina malograda Hombre trabajando en la programacin de un microcontrolador dsPIC30F3014. (Tarea Principal)
Timbre malogrado
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
La prioridad de una interrupcin
Qu sucede si el telfono y el timbre suenan al mismo tiem A quin se atiende primero?
Prioridad 5 (menor)
Telfono con la bocina malograda Hombre trabajando en la programacin de un microcontrolador dsPIC30F3014. (Tarea Principal)
Timbre malogrado
Prioridad 7 (mayor)
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Posibles causas de interrupcin en el dsPIC30F3014
Interrupcin externa 0 (INT0). Interrupcin por cambio de estado (CNx). Entrada de captura 1 (IC1). Interrupcin externa 1 (INT1). Comparacin de salida 1 (OC1). Interrupcin externa 2 (INT2). Timer 1. Receptor del UART 2. Entrada de captura 2 (IC2). Transmisor del UART 2. Comparacin de salida 2 (OC2). Bus CAN. Timer 2. Deteccin de bajo voltaje (LVD). Timer 3. Interrupciones reservadas. SPI1 Receptor del UART 1. Transmisor del UART 1. Fin de conversin del ADC. Escritura de la FLASH finalizada (NVM). Interrupcin modo esclavo I2C. Interrupcin modo maestro I2C. Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Tabla de interrupciones del dsPIC30F3014
El nmero de interrupcin (INT Number) especifica la prio natural de la interrupcin. Mientras menor sea este nmer alta ser la prioridad.
El nmero de vector es el identificador de la interrupcin e de vector de interrupciones (IVT).
Los vectores de interrupciones se encuentran en la memo a partir de la direccin 0x000014.
Cuando un evento de interrupcin ocurre, el Puntero de pr (PC) salta a la direccin respectiva del vector de interrupc La direccin de dicho vector se debe encontrar la instrucc RUT_INT_XX, donde XX es el nombre asociado a la inter especfica de dicho vector.
El salto a la rutina de interrupcin toma cuatro ciclos de re ocurre para salir de la interrupcin y regresar al punto don PC se haba quedado. Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Banderas de interrupcin
Los registros IFSx contienen las banderas de las diversas interrupciones del dsPIC30F automticamente se ponen a 1 lgico para indicar que una interrupcin ha ocurrido. Un la interrupcin esta bandera debe ser puesta a 0 lgico por Firmware, ya que de no ha interrupcin ser considerada no atendida por el CPU y esta se volver a ejecutar.
Por ejemplo, para borrar la bandera de interrupcin por el TIMER 1 se puede realizar la asignacin al registro IFS0:
IFS0bits.T1IF = 0;
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Los registros habilitadores de interrupciones
Los registros IECx permiten habilitar las respectivas interrupciones del CPU. Una vez pu el respectivo bit, la interrupcin queda activa y es posible que un evento la dispare. Esto normalmente se habilitan una sola vez en el programa, a menos que el programador des interrupcin a raz de otro evento.
Para habilitar la interrupcin por el Timer 1 se hace la siguiente asignacin al registro IEC IEC0bits.T1IE = 1;
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica
Los registros de configuracin de prioridad de interrupcin
Carrera: Ingeniera Electrnica
Si se van a utilizar unas cuantas interrupciones del dsPIC es posible reasignar las prior interrupciones y evitar as la prioridad por defecto dada por la tabla IVT. Solo es posibl prioridades donde el valor de 7 es la mxima prioridad. Para esto se cuenta con los reg contienen un conjunto de 3 bits para asignar la prioridad a cada tipo de interrupcin. Por ejemplo, para que el Timer 1 tenga prioridad 3 se tiene que ejecutar la siguiente ins IPC0 = IPC0 | 0x3000;
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
La rutina de interrupcin
La rutina de interrupcin es una funcin que tiene un tipo especial de declaracin: void __attribute__((__interrupt__))
Este tipo de declaracin implica que la funcin es de interrupcin y es llamada automtic eventos que generan que la bandera de interrupcin sea 1 lgico. Esta funcin no recib parmetros.
El nombre de la rutina de interrupcin corresponde al vector asignado en la IVT. Este val Las libreras de cabecera del proyecto. El nombre del vector tiene la siguiente nomencla _(identificador de la interrupcin)interrupt. Por ejemplo, la rutina de interrupcin para el Timer 1 tiene el siguiente nombre:
void __attribute__((__interrupt__)) _T1Interrupt(void)
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
La interrupcin INT0
El pin RA11 puede funcionar como generador de interrupcin externa por flanco de baj seal cuadrada. Cada vez que se detecta un flanco de bajada en esta seal se dispara (INT0)
RA11
dsPIC30F3014
INT 1
INT 2
Mag. Ing. Sergio Salas
Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica
Programa de manejo de la INT0
int main() { TRISB = 0xFF00; //Los cuatro pines menos significativos son salida ADPCFG = 0xFFFF; TRISAbits.TRISA11 = 1; LATB = 0; IFS0bits.INT0IF = 0; IPC0 = IPC0 | 0x0001; //Prioridad 1 IEC0bits.INT0IE = 1; while(1); return(0); } void __attribute__((__interrupt__)) _INT0Interrupt(void){ LATB++; __delay_ms(100); IFS0bits.INT0IF = 0; }
Mag. Ing. Sergio Salas