Você está na página 1de 21

INTERRUPCIONES Y TEMPORIZADORES

Programacin en C para electrnica

Interrupciones
Programacin en C para electrnica

Interrupciones y temporizadores- Programacin en C para electrnica

Interrupciones del PIC 16F876A


3

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

Interrupciones del PIC 16F876A


4

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

Interrupciones y temporizadores- Programacin en C para electrnica

Registros de interrupcin
6

Interrupciones y temporizadores- Programacin en C para electrnica

Registros de interrupcin
7

Interrupciones y temporizadores- Programacin en C para electrnica

Interrupciones en CCS
8

CCS dispone de directivas para el manejo de interrupciones.

Ejemplo:

#int_XXXX.

La directiva especifica que la funcin que la sigue es la funcin de interrupcin correspondiente.

//interrupcin timer 1 #int_TIMER1 void TIMER1_isr (void) { switch (ciclo) { case 0: ....

Interrupciones y temporizadores- Programacin en C para electrnica

Interrupciones en CCS
9

Interrupciones y temporizadores- Programacin en C para electrnica

Funciones para interrupciones


10

El compilador incluye funciones para facilitar el manejo de interrupciones en C. enable_interrupts(level)

Activa las interrupciones indicadas por level. desactiva las interrupciones indicadas por level. Borra el flag de interrupcin indicado.

disable_interrupts(level)

clear_interrupts(level)

Interrupciones y temporizadores- Programacin en C para electrnica

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

Interrupciones y temporizadores- Programacin en C para electrnica

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

Interrupciones y temporizadores- Programacin en C para electrnica

Temporizadores:
15

El PIC 16F876A dispone de tres temporizadores/contadores:

Timer 0: 8 bits. Timer 1: 16 bits. Timer 2: 16 bits.

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:

Temporizador (incrementa cada ciclo mquina). Contador sncrono. Contador asncrono.

Interrupciones y temporizadores- Programacin en C para electrnica

17

Timer 1:

Interrupciones y temporizadores- Programacin en C para electrnica

18

T1CON:

Interrupciones y temporizadores- Programacin en C para electrnica

Timer 1 en C:
19

CCS provee funciones de configuracin de los teporizadores:

setup_timer_X (modo)

Programa el modo de funcionamiento del timer X Lee el valor de la cuenta.

get_timerX ()

set_timerX (valor)

Escribe valor en los registros de cuenta.

Interrupciones y temporizadores- Programacin en C para electrnica

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 |.

Interrupciones y temporizadores- Programacin en C para electrnica

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).

get_timer1() devuelve (16 bits) el valor de los registros TMR1H yTMR1L.

value=get_timer1();

Interrupciones y temporizadores- Programacin en C para electrnica

Você também pode gostar