Está en la 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.

#int_XXXX.

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

Ejemplo:

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

10

Funciones para
interrupciones

El compilador incluye funciones para


facilitar el manejo de interrupciones en C.
enable_interrupts(level)

disable_interrupts(level)

Activa las interrupciones indicadas por


level.
desactiva las interrupciones indicadas por
level.

clear_interrupts(level)

Borra el flag de interrupcin indicado.

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)

get_timerX ()

Programa el modo de funcionamiento


del timer X
Lee el valor de la cuenta.

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

También podría gustarte