temporizacion interruptores de microcontroladores pic16f877a 2011 de urbe o-713 o-723

23
Realizado por: Ing. Ender Pereira (Msc) TEMPORIZACIONES / INTERRUPCIONES

Upload: luis-sanchez

Post on 15-Jul-2015

155 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 1/23

 

Realizado por: Ing. Ender Pereira (Msc)

TEMPORIZACIONES / INTERRUPCIONES

Page 2: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 2/23

 

CICLO DE INSTRUCCION

y Los PIC 16F87XA disponen de un ciclo de instrucción igual a cuatro ciclos delreloj principal.

y Un ciclo de instrucción equivale a 4 ciclos de reloj. Esto es porque :

y Con el primer ciclo de reloj el C incrementa el contador de Programa paraobtener la dirección de memoria donde se encuentra la instrucción a ejecutar.

y En el segundo ciclo se Busca la instrucción en la memoria y se carga en elregistro IR (Registro de instrucciones).

y El tercer ciclo es el encargado de Decodificar la instrucción.

y El cuarto ciclo Ejecuta la instrucción.

Page 3: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 3/23

 

Módulos de temporización

Page 4: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 4/23

 

TIMER0

Registro

OPTION

Page 5: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 5/23

 

TMR0

TMR0 = Valor inicial

TMR0 = Valor inicial + 1

TMR0 = Valor inicial + 2

TMR0 = 0 INTCON (TMR0IF) = 1

Cuando pasen el numero de ciclos de instrucción

necesarios según la división de frecuencia que escogió

Cuando pasen el numero de ciclos necesarios de

instrucción según la división de frecuencia que escogió

POR

FORMULA

Page 6: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 6/23

 

TIMER0

y Formula para conseguir el tiempo requerido:

02560 Vtmr tmr  !divisor rang ot osc

iontempor izacVtmr 

 _ 40

vv

!

Vtmr0 =Numero de incrementos que debe dar el Temporizador para desbordarse.

tosc =1 / fosc 

rango_divisor =valor seleccionado para el divisor de frecuencias

tmr0 =valor en el que debe inicializarse el registro TMR0 

Page 7: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 7/23

Pasos para TMR0 como temporizador 

Configure el registro OPTION, donde entre otras cosas debe seleccionar el divisor de

frecuencias.

Encuentre la Temporización máxima

Utilice la Formula Vtmr0

Utilice la formula Tmr0

El valor de tiempo es encontrado al desbordarse TMRO. Para ello debe monitorear el bit TMR0IF(INTCON<2>). El cual se pone a 1 al ocurrir esta situación.

divisor rang ot osciontempor izac _ 4256 vvv!

divisor rang ot osc

iontempor izacVtmr 

 _ 40

vv

!

02560 Vtmr Tmr  !

Temporización debe ser la que usted estabuscando, siempre y cuando no exceda la

Temporización máxima. De lo contrario

debe escoger una Temporización que no

exceda la máxima y repetir esta varias

veces hasta encontrar la Temporización que

esta buscando.

Con este valor inicializara al TMR0 en la rutina

correspondiente.

 

Page 8: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 8/23

EJEMPLO TMR0 como temporizador REALICE LOS CALCULOS PARA ALCANZAR 500 msg, con un oscilador de 4 Mhz

Si no se especifica divisor de frecuencia debe escoger 256, de lo contrario seleccione el divisor de

frecuencia que se le este indicando.

1) Configure el registro OPTION, donde entre otras cosas debe seleccionar el divisor de

frecuencias.

Option = 10000111

2) Encuentre la Temporización máxima divisor rang ot osciontempor izac _ 4256 vvv!

m s g iontempor izac 536,652566

1025,04256 !v

vvv!

3) Utilice la Formula Vtmr0divisor rang ot osc

iontempor izacVtmr 

 _ 40

vv

!

24414,2442561025,04

105,620

6

3

}!

vvv

v

!

Vtmr 62,5msg x 8 veces = 500 msg

4) Utilice la formula Tmr0 02560 Vtmr Tmr  ! 122442560 !!Tmr 

 Al inicializar TMR0 en este valor, conseguiremos que cuando este se desborde, tener 62,5 msg x 8 = 500 msg

 

Page 9: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 9/23

TMR1

y EL TIMER1 tiene los siguientes modos de trabajo:

y Como Temporizador 

y Como contador Síncrono/Asincrono a través del pin RC0/T1CKl.

y El módulo de TIMER1 es un temporizador/contador de 16 bits, formado por dosregistros de 8 bits cada uno TMR1H y TMR1L.

y El valor de los registros TMR1H y TMR1L se incrementan desde 0000H hastaFFFFH, en cuyo instante se vuelve a poner a 0000h y se activa el flag TMR1IF

(PIR1<0>).

y La interrupción de TMR1 puede ser habilitada por el bit TMR1IE (PIE1 <0>).

 

Page 10: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 10/23

REGISTRO T1CON

 

Page 11: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 11/23

TIMER1

y Formula para conseguir 

el tiempo requerido:

divisor rang ot osc

iontempor izacVtmr 

 _ 41

vv

!

Vtmr1=Numero de incrementos que debe dar el Temporizador para desbordarse.

tosc =1 / fosc 

rango_divisor =valor seleccionado para el divisor de frecuencias

tmr1=valor en el que debe inicializarse el registro tmr1.

1655361 Vtmr Tmr  !

 

Page 12: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 12/23

Pasos para TMR1 como temporizador y Configure el registro T1CON, donde entre otras cosas debe seleccionar el divisor 

de frecuencias.

y Encuentre la Temporización máxima

y Utilice la Formula Vtmr1

y Utilice la formula Tmr1

y Convierta el valor obtenido en la formula Tmr1 a hexadecimal o binario

y Coloque los dos dígitos menos significativos (hexadecimal) u 8 bits menos

significativos (binario) en TMR1L y los restantes en TMR1H

y El valor de tiempo es encontrado al desbordarse TMR1. Para ello debe

monitorear el bit TMR1IF (PIR1<0>). El cual se pone a 1 al ocurrir esta situación.

divisor rang ot osciontempor izac _ 465536 vvv!

divisor rang ot osc

iontempor izacVtmr 

 _ 41

vv

!

1655361 Vtmr Tmr  !

Temporización debe ser la que usted esta

buscando, siempre y cuando no exceda la

Temporización máxima. De lo contrario debe

escoger una Temporización que no exceda la

máxima y repetir esta varias veces, hasta

encontrar la Temporización que esta buscando.

 

Page 13: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 13/23

EJEMPLO TMR1 como temporizador REALICE LOS CALCULOS PARA ALCANZAR 500 msg, con un oscilador de 4 Mhz

Si no se especifica divisor de frecuencia debe escoger 8, de lo contrario seleccione el divisor de

frecuencia que se le este indicando.

1) Configure el registro T1CON, donde entre otras cosas debe seleccionar el divisor de

frecuencias.

T1CON = 00110001

2) Encuentre la Temporización máxima divisor rang ot osciontempor izac _ 465536 vvv!

m s g iontempor izac 288,52486

1025,0465536 !v

vvv!

3) Utilice la Formula Vtmr1divisor rang ot osc

iontempor izacVtmr 

 _ 41

vv

! 6250081025,04

105001

6

3

!

vvv

v

!

Vtmr 

4) Utilice la formula Tmr1 1655361 Vtmr Tmr  ! 303662500655361 !!Tmr 

 Al inicializar TMR1 en este valor, conseguiremos que cuando este se desborde, tener 500 msg

5) Convierta el valor a

Hexadecimal y coloquelos en

TMR1L y TMR1H

TMR1H=0Bh

TMR1L= DCh

 

Page 14: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 14/23

INTERRUPCIONES

y Las interrupciones son desviaciones del flujo de control del programaoriginadas asíncronamente por diversos sucesos que no se hallan bajola supervisión de las instrucciones.

y El comportamiento del Microcontrolador ante la interrupción es quedetiene la ejecución del programa en curso, se salva la dirección actualdel PC en la pila y se carga el PC con una dirección reservada de lamemoria de código, llamada vector de interrupción.

 

Page 15: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 15/23

INTERRUPCIONES

y Permiten realizar programas multitarea.

y Evitan el Polling, es decir ,evitan el ir testeando continuamentetodos los procesos.

y El vector de interrupción se halla situado en la dirección 0x004en donde comienza la rutina de servicio a la interrupción (RSI)

y En dicho vector se suele colocar un GOTO que traslada el flujode control a la zona de la memoria de código destinada acontener la rutina de atención a la interrupción.

y

La RSI (Rutina de Servicio de Interrupción) suele comenzar guardando en la memoria de datos los registros que la RSI va aalterar y después al finalizar la rutina de RSI, antes del retorno alprograma principal se recuperan los valores guardados y serestauran los valores iníciales de los registros alterados.

 

Page 16: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 16/23

TIPOS DE INTERRUPCION

y Interrupción externa en el pin RB0/INT

y Finalización del temporizador/contador TMR0

y Finalización de escritura en la EEPROM de datos

y Cambio de estado en los pines RB4 a RB7

y Finalización del temporizador/contador TMR1

y Finalización del temporizador/contador TMR2

y Captura o comparación en el modulo CCP1

y Captura o comparación en el modulo CCP2

y Transferencia en la Puerta serie Síncrona

y Colisión de bus en la Puerta serie Síncrona

y Fin de transmisión en el USART

y Fin de Recepción en el USART

y Fin de conversión en el convertidor A/D

y Transferencia en la Puerta Paralela esclava

y

Cambio en el comparador Analógico

 

Page 17: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 17/23

DIAGRAMA DE INTERRUPCIONES

 

Page 18: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 18/23

INTCON

GIE PEIE TMR0IE INTE RBIE TMR0IF INTF RBIF

El registro INTCON es el registro

principal que se usa en el control y

estado de las interrupciones. Pero si

el dispositivo posee interrupciones

periféricas, entonces se empleantambién los registros PIE1, PIR1,

PIE2, PIR2 dependiendo del tipo de

dispositivo.

 

Page 19: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 19/23

IMPORTANTE ( Para cualquier interrupción )

y Nota 1: Los señalizadores de las interrupciones individuales son puestos a 1independientemente del estado de sus correspondientes bits de permiso o del bitGIE.

y Nota 2: Cuando se ejecuta una interrupción el bit GIE es puesto a cero (0) y las

interrupciones que habían pendientes para ejecutar en el próximo ciclo de relojson ignoradas. Al retornar de la interrupción por la instrucción RETFIE, el bit GIEes colocado nuevamente a 1 para permitir nuevamente interrupciones.

y Nota 3:  Antes de retornar de una interrupción se debe colocar a cero el bitseñalador que provoco dicha interrupción.

y Nota 4: Si existe algún registro que es afectado por la rutina de interrupción estedeberá ser respaldado al entrar en la rutina de interrupcion, para no alterar elbuen funcionamiento del programa.

y Nota 5: Cuando varias interrupciones son posibles, se debe de averiguar cualinterrupción ocurrió, lo cual se realiza preguntando por los bits señaladores delas posibles interrupciones que pueden estar presentes.

 

Page 20: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 20/23

PIE1

 

Page 21: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 21/23

PIR1

 

Page 22: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 22/23

y CCP2IE: Permiso de interrupción en el modulo CCP2

1: Permite

0: Prohíbe

y BCLIE: Permiso de interrupción por colisión de bus en el SSP cuando doso mas maestros tratan de transmitir al mismo tiempo

1: Permite

0: Prohíbe

y EEIE: Permiso de interrupción por fin de escritura en la EEPROM de datos

1: Permite0: Prohíbe

y CMIE: Permiso de interrupción por cambio en comparadores analógicos

1: Permite

0: Prohíbe

 

Page 23: Temporizacion Interruptores de Microcontroladores PIC16f877A  2011 DE URBE O-713 O-723

5/13/2018 Temporizacion Interruptores de Microcontroladores PIC16f877A 2011 DE URBE O-713 O-723 - slidepdf.com

http://slidepdf.com/reader/full/temporizacion-interruptores-de-microcontroladores-pic16f877a-2011-de-urbe-o-713-o-723 23/23

y CCP2IF: Bandera de interrupción en el modulo CCP2

1: Ocurrió una captura o comparación en el modulo CCP2

0: No ha ocurrido una captura o comparación en el modulo CCP2

y BCLIF: Bandera de interrupción por colisión de bus en el SSP cuando dos omas maestros tratan de transmitir al mismo tiempo

1: Ocurrió colisión en de bus en el SSP

0: No ha ocurrido colisión en de bus en el SSP

y EEIF: Bandera de interrupción por fin de escritura en la EEPROM de datos

1: Ocurrió el fin de escritura en la EEPROM de datos0: No ha ocurrido el fin de escritura en la EEPROM de datos

y CMIF: Bandera de interrupción por cambio en comparadores Analógicos

1: Ocurrió un cambio en alguno de los dos comparadores analógicos del PIC

0: No han ocurrido cambios en los comparadores analógicos