Escolar Documentos
Profissional Documentos
Cultura Documentos
Interrupciones
Programacin en C para electrnica
Las interrupciones permiten la interrupcin del programa a cualquier suceso (interno o externo). Al producirse una interrupcin el PIC salta a la direccin del vector (0004h) de interrupcin y ejecuta la rutina. Cuando la rutina de manejo de la interrupcin finaliza (RETFIE) el programa retorna al punto donde se interrumpi el programa.
Interrupciones y temporizadores- Programacin en C para electrnica
El PIC 16F876A tiene un nico vector de interrupcin y todas las interrupciones provocan un salto a ese vector. (0004h) La rutina de manejo de la interrupcin debe identificar qu evento interrumpi el programa para ejecutar la rutina correspondiente. El PIC posee registros con flags de interrupcin que permiten identificar el evento.
Interrupciones y temporizadores- Programacin en C para electrnica
Registros de interrupcin
5
Registros de interrupcin
6
Registros de interrupcin
7
Interrupciones en CCS
8
Ejemplo:
#int_XXXX.
//interrupcin timer 1 #int_TIMER1 void TIMER1_isr (void) { switch (ciclo) { case 0: ....
Interrupciones en CCS
9
Activa las interrupciones indicadas por level. desactiva las interrupciones indicadas por level. Borra el flag de interrupcin indicado.
disable_interrupts(level)
clear_interrupts(level)
level
11
Level es una constante definida en el fichero de cabecera (#include <16F876A.h>). Genera el cdigo necesario para activar las interrupciones correspondientes modificando los registros ITCON, PIE1 y PIE2. Cuando se activa alguna interrupcin es necesario activar globalmente las interrupciones.
Interrupciones y temporizadores- Programacin en C para electrnica
level
12
Ejemplos:
13
enable_interrupts(INT_TIMER1); enable_interrupts(GLOBAL);
disable_interrupts(GLOBAL);
clear_interrupts(INT_RTCC); enable_interrupts(GLOBAL | INT_RTCC);
Nota: Esta ultima solo se puede hacer con interrupciones del mismo registro.
Interrupciones y temporizadores- Programacin en C para electrnica
14
Temporizadores
Programacin en C para electrnica
Temporizadores:
15
Pueden funcionar como contadores de flancos externos o como temporizador (contador de ciclos mquina). Disponen de prescaler para ampliar el tamao de la cuenta (hasta x256).
Interrupciones y temporizadores- Programacin en C para electrnica
Timer 1:
16
Cuenta de 16 bits en dos registros de 8 bits: TMR1H (parte alta) y TMR1L (parte baja) Los registros de cuenta se pueden leer y escribir. Interrupcin por desboradmiento de FFFFh a 0000h. Controlado por el registro T1CON. Funcionamiento como:
17
Timer 1:
18
T1CON:
Timer 1 en C:
19
setup_timer_X (modo)
get_timerX ()
set_timerX (valor)
setup_timer_1(mode)
20
Configura el timer 1. El modo de funcionamiento (mode)es una constante definida en el archivo de cabecera. Los modos se pueden agrupar con |.
set_timer1(value) y get_timer1
21
set_timer1 escribe value (entero de 16 bits) en los registros de cuenta del timer 1 (TMR1H yTMR1L).
value=get_timer1();