0 penilaian0% menganggap dokumen ini bermanfaat (0 suara)
119 tayangan10 halaman
El documento describe el registro INTCON para controlar interrupciones en los PIC 16F87X. INTCON controla interrupciones causadas por el temporizador TMR0, cambios en las líneas RB4-RB7 de la puerta B y la activación del pin RB0/INT. También describe el funcionamiento del temporizador TMR0 y el registro OPTION_REG que configura el preescalador y temporizador.
El documento describe el registro INTCON para controlar interrupciones en los PIC 16F87X. INTCON controla interrupciones causadas por el temporizador TMR0, cambios en las líneas RB4-RB7 de la puerta B y la activación del pin RB0/INT. También describe el funcionamiento del temporizador TMR0 y el registro OPTION_REG que configura el preescalador y temporizador.
El documento describe el registro INTCON para controlar interrupciones en los PIC 16F87X. INTCON controla interrupciones causadas por el temporizador TMR0, cambios en las líneas RB4-RB7 de la puerta B y la activación del pin RB0/INT. También describe el funcionamiento del temporizador TMR0 y el registro OPTION_REG que configura el preescalador y temporizador.
Los PIC 16F87X tienen muchas causas que pueden originar
una interrupcin, 13 posibles causas los de 28 patas y 14 los de 40. Al aceptarse una interrupcin se salva el valor del PC en la Pila y se carga aquel con el valor 0004h, que es el vector de interrupciones. El PIC 16F84 tena 4 causas que generaban interrupcin: desbordamiento del TMR0, activacin de la pata de interrupcin RB0/INT, cambio de estado de una de las cuatro patas de ms peso de la Puerta B y finalizacin de la escritura de un byte en la EEPROM. Los nuevos PIC, adems de las causas que producen interrupcin en el 16F84, tienen las siguientes:
1 Desbordamiento del Timer 1 2 Desbordamiento del Timer 2 3 Captura o comparacin del mdulo CCP1. 4 Captura o comparacin del mdulo CCP2. 5 Transferencia en la Puerta serie sncrona. 6 Colisin de bus en la Puerta serie sncrona. 7 Fin de transmisin en el USART. 8 Fin de recepcin en el USART. 9 Fin de la conversin en el conversor A/D 10 Transferencia en la puerta paralela esclava (solo en los de 40 patas)
1. REGISTRO DE CONTROL DE INTERRUPCIONES (INTCON)
Se trata de un registro leble y escribible, para facilitar su acceso se ha duplicado en los cuatro bancos. Tiene la misin de controlar las interrupciones provocadas por TMR0, cambio de estado en las cuatro lneas de ms peso de la Puerta B y activacin en la patilla RB0/INT. Es muy parecido al registro que con el mismo nombre exist en el 16F84, solo cambia el bit 6 en los nuevos PIC que es el PIE (permiso de interrupcin de lo perifricos) en lugar del EEIE que tena de 16F84 para permitir la interrupcin cuando finalice la escritura de un byte en la EEPROM. El bit PEIE acta como una segunda llave parcial de permiso o prohibicin de las causas de interrupcin que no est complementadas en INTCON y que las provocan los restantes perifricos del microcontrolador. GIE es el bit de permiso global de todas las interrupciones.
GIE PEIE TOIE INT RBIE TOIF INTF RBIF
GIE: Bit de permiso global de interrupciones. 1 = Permitido 0 = Prohibido
PEIE: Bit de permiso de los perifricos que no se controlan con INTCON TOIE: Bit de permiso de interrupcin del TMR0. INTE: Bit de permiso de la interrupcin externa por RB0/INT
RBIE: Bit de permiso de la interrupcin por cambio en RB4-RB7
TOIFF: Sealizador de desbordamiento en TMR0. INTF: Sealizador de activacin de la patilla RB0/INT RBIF: Sealizador de cambio en RB4-RB7
TEMPORIZADOR TIMER 0 El microcontrolador PIC16F887 dispone de tres temporizadores/contadores independientes, denominados Timer0, Timer1 y Timer2. En este captulo se presenta una descripcin detallada de los mismos. El temporizador Timer0 tiene una amplia gama de aplicaciones en la prctica. Slo unos pocos programas no lo utilizan de alguna forma. Es muy conveniente y fcil de utilizar en programas o subrutinas para generar pulsos de duracin arbitraria, en medir tiempo o en contar los pulsos externos (eventos) casi sin limitaciones. El mdulo del temporizador Timer0 es un temporizador/contador de 8 bits con las siguientes caractersticas: Temporizador/contador de 8 bits; Pre-escalador de 8 bits (lo comparte con el temporizador perro guardin); Fuente de reloj interna o externa programable; Generacin de interrupcin por desbordamiento; y Seleccin del flanco de reloj externo programable. La siguiente figura muestra el esquema del temporizador Timer0 con todos los bits que determinan su funcionamiento. Estos bits se almacenan en el registro OPTION_REG.
Registro OPTION_REG
RBPU - PORTB Pull-up enable bit (resistencia Pull Up del puerto PORTB) o 0 - Resistencias pull-up del puerto PORTB estn deshabilitadas. o 1 - Pines del puerto PORTB pueden estar conectados a las resistencias pull-up. INTEDG - Interrupt Edge Select bit (bit selector de flanco activo de la interrupcin externa) o 0 - Interrupcin por flanco ascendente en el pin INT (0-1). o 1 - Interrupcin por flanco descendente en el pin INT (1-0). T0CS - TMR0 Clock Select bit (bit selector de tipo de reloj para el Timer0) o 0 - Los pulsos se llevan a la entrada del temporizador/contador Timer0 por el pin RA4. o 1 - El temporizador utiliza los pulsos de reloj internos (Fosc/4). T0SE - TMR0 Source Edge Select bit (bit selector de tipo de flanco) o 0 - Incrementa en flanco descendente en el pin TMR0. o 1 - Incrementa en flanco ascendente en el pin TMR0. PSA - Prescaler Assignment bit (bit de asignacin del pre-escalador) o 0 - Pre-escalador se le asigna al WDT. o 1 - Pre-escalador se le asigna al temporizador/contador Timer0. PS2, PS1, PS0 - Prescaler Rate Select bit (bit selector del valor del divisor de frecuencias) o El valor del divisor de frecuencias se ajusta al combinar estos bits. Como se muestra en la tabla a la derecha, la misma combinacin de bits proporciona los diferentes valores del divisor de frecuencias para el temporizador/contador Timer0 y el temporizador perro guardin, respectivamente.
PS2 PS1 PS0 TMR0 WDT 0 0 0 1:2 1:1 0 0 1 1:4 1:2 0 1 0 1:8 1:4 0 1 1 1:16 1:8 1 0 0 1:32 1:16 1 0 1 1:64 1:32 1 1 0 1:128 1:64 1 1 1 1:256 1:128 Cuando el bit PSA est a 0, el pre-escalador se le asigna al temporizador/contador Timer0, como se muestra en la siguiente figura:
Cuando el bit PSA est a 1, el pre-escalador se le asigna al temporizador perro guardin como se muestra en la siguiente figura:
Aparte de lo dicho anteriormente, cabe destacar lo siguiente: Al asignarle el pre-escalador al temporizador/contador, el pre-escalador se pondr a 0 con cualquier escritura en el registro TMR0. Al asignar el pre-escalador al temporizador perro guardin, tanto el WDT como el pre- escalador se pondrn a 0 con la instruccin CLRWDT. Al escribir en el registro TMR0, utilizado como un temporizador, no se inicia el conteo de los pulsos inmediatamente, sino con retraso de dos ciclos de instrucciones. Por consiguiente, es necesario ajustar el valor escrito en el registro TMR0. Al poner el microcontrolador en el modo de reposo se apaga el oscilador de reloj. No puede ocurrir el desbordamiento ya que no hay pulsos a contar. Es la razn por la que la interrupcin por el desbordamiento del TMR0 no puededespertar al procesador del modo de reposo.. Si se utiliza como un contador de reloj externo sin pre-escalador, la longitud de pulso mnima o tiempo muerto entre dos pulsos deber ser 2 Tosc + 20 nS (Tosc es el perodo de seal de reloj del oscilador). Si se utiliza como un contador de reloj externo con pre-escalador, la longitud de pulso mnima o tiempo muerto entre dos pulsos es slo 10nS. El registro del pre-escalador de 8 bits no est disponible al usuario, lo que significa que no es posible leerlo o escribir en l directamente. Al cambiar de asignacin del pre-escalador del Timer0 al temporizador perro guardin, es necesario ejecutar la siguiente secuencia de instrucciones escritas en ensamblador para impedir reiniciar el microcontrolador:
En breve Para utilizar el Timer0 apropiadamente, es necesario: Paso 1: Seleccionar el modo: El modo de temporizador se selecciona por el bit TOSC del registro OPTION_REG (TOSC: 0=temporizador, 1=contador). Cuando se asigna el pre-escalador al temporizador/contador se debe poner a cero el bit PSA del registro OPTION_REG. El valor del divisor de frecuencias se configura al utilizar los bits PS2-PS0 del mismo registro. Al utilizar una interrupcin, los bits GIE y TMR0IE del registro INTCON deben estar a uno. Paso 2: Medir y contar Para medir tiempo: Reiniciar el registro TMR0 o escribir un valor conocido en l. El tiempo transcurrido(en microsegundos al utilizar el oscilador de 4MHz) se mide al leer el registro TMR0. El bit de bandera TMR0IF del registro INTCON se pone a uno automticamente siempre que ocurra el desbordamiento del registro TMR0. Si est habilitada, ocurre una interrupcin. Para contar pulsos: La polaridad de pulsos a contar en el pin RA4 se selecciona por el bit TOSE del registro OPTION_REG (T0SE: 0=pulsos positivos, 1=pulsos negativos). Varios pulsos se pueden leer del registro TMR0. El pre-escalador y la interrupcin se utilizan de la misma forma que en el modo de temporizador.
Registro OPTION_REG
Leyenda: R/W - Bit de lectura/escritura, (1) Despus del reinicio, el bit se pone a uno El registro OPTION_REG contiene varios bits de control para configurar el pre - escalador del Timer0/WDT, el temporizador Timer0, la interrupcin externa y las resistencias pull-up en el puerto PORTB.
RBPU - Port B Pull up Enable bit (resistencia Pull Up Puerto B) o 1 - Desactivadas o 0 - Activadas
INTEDG - Interrupt Edge Select bit (bit selector de flanco activo de la interrupcin externa) o 1 - Interrupcin por flanco ascendente en el RB0/INT o 0 - Interrupcin por flanco descendente en el RB0/INT
T0CS - TMR0 Clock Source Select bit (bit selector de tipo de reloj para el Timer0) o 1 - Pulsos introducidos a travs del TOCKI (contador) o 0 - Pulsos de reloj internos Fosc/4 (temporizador)
T0SE - TMR0 Source Edge Select bit (bit selector de tipo de flanco en TOCKI) selecciona el flanco (ascendente o descendente) contado por el temporizador Timer0 por el pin RA4/T0CKI. o 1 - Incrementa en flanco descendente en el pin TOCKI. o 0 - Incrementa en flanco ascendente en el pin TOCKI.
PSA - Prescaler Assignment bit asigna el pre-escalador (hay slo uno) al temporizador o al WDT. o 1 - Pre - escalador se le asigna al WDT o 0 - Pre - escalador se le asigna al temporizador Timer0. PS2, PS1, PS0 Prescaler Rate Select bits (bit selector del valor del divisor de frecuencia) El valor del divisor de frecuencia se selecciona al combinar estos tres bits. Como se muestra en la siguiente tabla, el valor del divisor de frecuencia se le asigna al temporizador Timer0 o al temporizador perro guardin (WDT).
PS2 PS1 PS0 TMR0 WDT 0 0 0 1:2 1:1 0 0 1 1:4 1:2 0 1 0 1:8 1:4 0 1 1 1:16 1:8 1 0 1 1:64 1:32 1 1 0 1:128 1:64 1 1 1 1:256 1:128 Para conseguir el valor del divisor de frecuencia 1:1 cuando el temporizador Timer0 cuenta pulsos, el pre-escalador debe ser asignado al WDT. En consecuencia, el temporizador Timer0 no utiliza el pre-escalador, sino que cuenta directamente los pulsos generados por el oscilador, lo que era el objetivo.