Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
EMBEBIDOS:
INTERRUPCIONES,
TEMPORIZADOR Y CAPTURA
MSc. Roberto Furukawa
Abril 2015
Grupo Responsable Tema Fecha
1 Jose Buitron 3 (registro de Semana 6
control y memorias)
2 Johan Callomamany 6 (captura y PWM) Semana 6
3 Marco Rodriguez 7 (A/D) Semana 7
4 José Carrasco 8 (comunicación Semana 7
serie sincrona)
5 Gianmarco Gutierrez 9 (USART) Semana 9
6 Cristopher Bazan 10 (PIC 18CXX) Semana 9
Contenido
Interrupciones
Temporizadores
Módulos de captura, comparación y PWM
Alfredo Granados Ly
Interrupciones del PIC16F84
Alfredo Granados Ly
Registro INTCON
Alfredo Granados Ly
Interrupciones del PIC16F84
El PIC16F84 sólo acepta una interrupción por vez. Para conocer quien de las
fuentes produjo la interrupción hay que explorar los tres flags del registro
INTCON y uno del registro EECON1.
Proceso de interrupción:
• Habilitación de la interrupciones en el registro INTCON.
• Al aceptar la interrupción:
– El PC+1 se almacena en la PILA,
– El bit GIE del registro INTCON se pone a ‘0’ no aceptando ninguna otra interrupción.
– El PC toma el valor 0004H correspondiente a la dirección del vector de interrupción.
• La rutina de interrupción deberá determinar quien ha producido la interrupción.
• Se realiza el proceso que corresponde a la fuente de interrupción.
• Borrar el señalizador (flag) de la interrupción.
• RETFIE
– Se extrae de PILA el valor de PC.
– Se coloca el bit GIE = ‘1’.
Alfredo Granados Ly
Aplicaciones con Interrupciones
Alfredo Granados Ly
Aplicaciones
1.- Realizar un programa para generar por el pin RB2 del PIC16F84 una señal
de
1KHz (DC=50%) - Utilice interrupciones.
2.- Escribir una rutina para determinar que fuente ha producido la interrupción.
3.- Escribir un programa para manejar un teclado al PIC16FXX.
Alfredo Granados Ly
Generar por el pin RB2 del PIC16F84 una señal
de 1KHz (DC=50%) utilizando Interrupciones.
Para generar una señal de 1KHz
utilizamos el TMR0 como temporizador.
La señal de reloj se obtiene del Cristal
de 4MHz (Tclk = 1us).
Utilizando el pre-escaler (1/2 ó Tclk =
2us), con lo cual el TMR0 se llena en
512us. Debemos hacer que el TMR0
comience a contar en 6 para que se
desborde a los 500 us.
Nota: Hay que poner a ‘0’ el bit TOIF por software. Hay que considerar las instrucciones que se
ejecutan entre el salto.
Alfredo Granados Ly
Detección de Fuente de Interrupción
Esta porción de código nos ayudará a determinar quién produjo la fuente de Interrupción
en el PIC16F84. Debemos consultar por cada una de las fuentes de interrupción:
TOIF = Desbordamiento TMR0.
INTF = Fuente externa.
RBIF = Cambio en los pines del RB7:RB4
EEIF = Fin de escritura de la EEPROM.
No olvidar que al final de la subrutina de interrupción debemos limpiar el flag que
generó la interrupción.
Alfredo Granados Ly
Manejo de Teclado Matricial
El teclado permite ingresar información
numérica al sistema. Es un elemento pasivo cuyo
diagrama interno se muestra en el gráfico.
Cuando se pulsa una tecla se hace contacto una
fila con una columna. Si no se pulsa ninguna
tecla, las filas están desconectadas de las
columnas.
El puerto B en los PIC16FXX está diseñado
para la conexión de teclados de este tipo ya
que contiene 8 resistencias internas (PULL-UP)
que se utilizan para evitar las entradas
flotantes cuando no se pulsa una tecla.
Forma de conexión:
FILA1 = RB4 (I) COL1 = RB0 (O)
FILA2 = RB5 (I) COL2 = RB1 (O)
FILA3 = RB6 (I) COL3 = RB2 (O)
FILA4 = RB7 (I) COL4 = RB3 (O)
Alfredo Granados Ly
Manejo de Teclado Matricial
Para explorar el teclado y averiguar si se ha pulsado una tecla, se envía un nivel bajo y
otros tres niveles altos por los terminales de columnas. Si existe una tecla pulsada en la
columna por la que se ha introducido un nivel bajo, dicho nivel saldrá por la fila
correspondiente que haga contacto, produciendo una interrupción por cambio de estado.
Entonces, leyendo los estados de los pines RB7-RB4 sabremos que que tecla se trata
Alfredo Granados Ly
Interrupciones del PIC16F877
El bit PEIE da permiso a los periféricos que no se controlan en el INTCON (11 fuentes).
Alfredo Granados Ly
Interrupciones del PIC16F877
El registro INTCON se encuentra en todos los bancos (0BH) y funciona de la misma forma
que en el PIC16F84. En el caso del PIC16F877 que contiene más fuentes de interrupción, los
bits que se encargan de generar las solicitudes de interrupción (Flag) y los respectivos
habilitadores se encuentran en 2 pares de registros:
Alfredo Granados Ly
Interrupciones del PIC16F877
Alfredo Granados Ly
Memoria EEPROM de Datos
En el PIC16F84 tenemos 64 bytes de memoria EEPROM para almacenar datos que por motivos
de la aplicación se desean mantenerse por periodos grandes de tiempo y son muy
importantes.
De acuerdo al fabricante esta memoria puede grabarse hasta 1’000,000 de veces y con
periodos de tiempo de hasta 40 años.
En el caso del PIC16F877 se utilizan los mismos registros, pudiendo grabar como máximo 256
bytes. La operación de escritura dura entre 10ms a 2 ms dependiendo del PIC utilizado.
Alfredo Granados Ly
Memoria EEPROM de Datos
Alfredo Granados Ly
Watch Dog Timer (WDT)
Los mCs PIC cuenta con un circuito de
vigilancia también llamado Watch
Dog (WD) que consisten en un
contador de 8 bits y su función es la
de reiniciar el sistema ante fallas de
programación.
Alfredo Granados Ly
Watch Dog Timer (WDT)
El período fundamental del WDT es de 18ms. Este tiempo varía con la temperatura y el
voltaje de alimentación y las condiciones en el proceso de fabricación de las partes. Si se
requieren períodos más largos, se puede utilizar el pre-escalador del registro OPTION,
logrando períodos de hasta 2.3 seg.
Problema:
Calcular cada cuantas instrucciones en nuestro programa debemos colocar una instrucción
CLRWDT para evitar que el mC se re-inicie (se sabe que se tiene conectado un Xtal de
4MHz al PIC16F877).
Alfredo Granados Ly
Modo de Bajo Consumo (SLEEP)
Es un modo en el cual se detiene la operación del PIC y el consumo de corriente es mínimo
(en el orden de los 0.01mA). El PIC entra a este modo después de ejecutar la instrucción
SLEEP.
En este estado se detiene la ejecución de las instrucciones, así como se bloquea cualquier
entrada al TMR0 (ya sea como contador ó temporizador). Si el WDT está habilitado,
entonces la cuenta se limpia después de ejecutar SLEEP, pero no detiene al oscilador RC,
con lo cual pasado un determinado tiempo el WDT reactivará al PIC.
Los puertos conservan el estado que tenían antes de ejecutarse la instrucción SLEEP. Para el
más bajo consumo en este modo, todos los pines de entrada/salida deben estar
conectados a 5v o a tierra y el pin MLCR (RESET) a nivel alto.
Alfredo Granados Ly
TMR1
Es un contador de 16 bits, que tiene las siguientes características:
Temporizador (fxtal/4) - Contador (ext: RC0) - Oscilador (fxtal: RC0-RC1)
Pre-escalador: 1, 1/2, 1/4, 1/8.
Habilitador de cuenta (TMR1ON).
Sincronización de los pulsos externos con los internos.
Reset del Timer-1 por CCP1 (comparador).
Alfredo Granados Ly
T1CON
Alfredo Granados Ly
T1CON
Diferentes formas de configuración para el trabajo del TMR1:
Pre-escalador: 1/8.
Se recomienda habilitar el TIMER1 después de configurarlo:
MOVLW H’30’
MOVWF T1CON1
BSF T1CON1,TMR1ON
Alfredo Granados Ly
TMR1 como reloj de tiempo real
Muchas de las aplicaciones requieren de
medir exactamente el tiempo (seg), por lo que
el el TMR1 se adapta perfectamente a éste
tipo de requerimiento.
Tiempo Tiempo
Pre-escaler TMR1H
Overflow Overflow
1 2 seg 80H 1 seg
2 4 seg C0H 0.5 seg
4 8 seg E0H 0.25 seg
8 16 seg F0 0.125 seg
Alfredo Granados Ly
TMR2
Es un contador de 8 bits, que tiene las siguientes características:
Sólo modo temporizador (fxtal/4).
Pre-divisor: 1, 1/4, 1/16.
Post-divisor: 1, 1/2, 1/3, 1/4,...... 1/15, 1/16
Capaz de ocasionar interrupción al coincidir TMR2 y PR2.
Capaz de generar los baudios para el puerto serial síncrono (SSP).
Habilitador de cuenta (TMR2ON) - no funciona en modo SLEEP.
Alfredo Granados Ly
T2CON
El pre-divisor y post-divisor se ponen a 0 al escribir en el TMR2.
Alfredo Granados Ly
USO del TMR2
El TMR2 del PIC se complementa muy bien con los módulos CCP (captura / comparación)
y SSP (puerto serial síncrono).
Al funcionar como modo temporizador podemos liberar al TMR0 de realizar las funciones
de generador de base de tiempos.
Ejemplo: Escribir un programa para generar una señal de 200Hz por el pin RA0 del
PIC16F877.
Nota: considere la frecuencia del cristal de 4MHz.
Alfredo Granados Ly
CCP (Capture/Comparation/PWM)
Los módulos de captura y comparación están diseñados para complementar el trabajo
de los temporizadores: TMR1 y TMR2.
Cada módulo CCP contiene un registro de 16 bits el cual puede operar como un
registro de captura de 16bits, como un registro de comparación de 16 bits ó como un
registro de 10 bits PWM. Ambos módulos CCP1 y CCP2 funcionan de manera idéntica
con excepción en el modo de disparo especial.
Cada módulo CCP tiene 3 registros:
Alfredo Granados Ly
CCP (Capture/Comparation/PWM)
Alfredo Granados Ly
CCP (Modo Captura)
En modo captura el valor que tiene el TMR1 es capturado en los registros CCPR1H y
CCPR1L cuando ocurre un evento especial por el pin RC2/CCP1 o RC1/T1OSI/CCP2
(estos pines deben ser configurados como entrada: TRISC).
La captura se realiza por la ocurrencia de los siguientes eventos:
CCPxM3 CCPxM2 CCPxM1 CCPxM0 FORMA DE CAPTURA
0 0 0 0 Módulo CCPx desconectado.
0 1 0 0 Un flanco ascendente.
0 1 0 1 Un flanco descendente.
0 1 1 0 Cada 4 flancos ascendentes.
0 1 1 1 Cada 16 flancos ascendentes.
Alfredo Granados Ly
CCP (Modo Captura)
Aplicación: Medir el tiempo existente entre los impulsos que llegan al pin RC2/CCP1.
Solución:
- TMR1 como temporizador.
- Modo captura con cada flanco descendente.
- Generar una interrupción en el modo de captura para cargar las variables.
- Multiplicar el valor capturado por el factor del predivisor para calcular el tiempo
exacto.
Alfredo Granados Ly
CCP (Modo Comparación)
En este modo se compara de manera continua el contenido del:
TMR1H con CCPRxH y
TMR1L con CCPRxL,
ocurriendo el evento que se muestra en esta tabla cuando ambos registros coinciden:
Alfredo Granados Ly
CCP (Modo PWM)
En este modo se consigue controlar la duración del nivel alto (el pin RC2/CCP1 está
como salida). Para controlar los cambios del pin RC2/CCP1 se usa dos comparadores.
Uno hace que un flipflop se pone a 1 cuando PR2 = TMR2, poniendose luego el TMR2
a cero.
Luego el flipflop se pone a 0 cuando CCPR1H= TMR2.
Alfredo Granados Ly
CCP (Modo PWM)
Alfredo Granados Ly