puede recibir pulsos desde el exterior por la patita T0CKl o puede contar los impulsos internos proporcionados por CLKOUT cuya frecuencia Fosc/4. Ing. Diana Valdivieso Herrera Temporizador TMR0 El TMR0 se comporta como un registro de propsito especial ubicado en la posicin 1 del banco 0 de la memoria de datos, puede ser escrito (movwf) y ledo (movf) en cualquier momento. Ing. Diana Valdivieso Herrera Registro Option Ing. Diana Valdivieso Herrera El registro Option es un registro de propsito especial ubicado en la posicin 1 del banco 1, nos permite configurar TMR0. Ing. Diana Valdivieso Herrera Ing. Diana Valdivieso Herrera TMR0 como contador inicio bsf 03,5 clrf trisb movlw 1F movwf trisa movlw EF movwf option bcf 03,5 clrf tmr0 movf tmr0,0 Ing. Diana Valdivieso Herrera TMR0 como temporizador En este caso se utiliza el desbordamiento del TMR0, para controlar la duracin de un evento en el programa, en este caso es necesario verificar el registro INTCON. Ing. Diana Valdivieso Herrera Registro INTCON Este registro ocupa la direccin 0BH del banco 0 y est duplicado en 8BH del banco 1. Ing. Diana Valdivieso Herrera De momento el bit que nos interesa es TOIF (TMR0 Overflow Interrupt Flag bit), este flag indica que se ha producido un desbordamiento del Timer 0, es decir que ha pasado de b11111111 a b00000000. TOIF=0. El TMR0 no se ha desbordado. TOIF=1. El TMR0 se ha desbordado (debe borrarse por software)
Ing. Diana Valdivieso Herrera Como se trata de un contador ascendente, este debe ser cargado con el valor que se desea contar restado de 256. Es decir para contar 100 impulsos se debe cargar el valor decimal 156 Ing. Diana Valdivieso Herrera Temporizacin=4(1/F)*Preescaler*(256-tmr0)
Temporizacin=tiempo deseado Preescaler=rango del divisor Tmr0=valor cargado en tmr0 Ing. Diana Valdivieso Herrera El watchdog (WDT) Es un contador de 8 bits, provoca un reset cuando se desborda y esto ocurre cuando el programa est colgado. Puede ser bloqueado, mediante uno de los bits de la palabra de configuracin (utilizando la directiva __Config). Ing. Diana Valdivieso Herrera El watchdog se activa cada 18 ms, pero este tiempo se puede ampliar hasta 2.3 segundos utilizando el divisor de frecuencia. Ing. Diana Valdivieso Herrera EEPROM de Datos Consta de 64 bytes. No estn mapeados en la memoria de datos. Para poder leerla y escribirla se utilizan 4 registros: EEDATA EEADR EECON1 EECON2 Ing. Diana Valdivieso Herrera Ing. Diana Valdivieso Herrera Registros utilizados para acceder a la EEPROM EEDATA (direccin 8 del banco 0), guarda los datos que se leen o escriben en la EEPROM. EEADR (direccin 9 del banco 0) guarda la direccin de memoria a acceder, puesto que slo se necesitan 6 bits para direccionar 64 bytes, los 2 bits de ms peso de este registro siempre son cero. EECON2 (direccin 9 del banco 1), no implementado, sirve como dispositivo de seguridad.
Ing. Diana Valdivieso Herrera Registros utilizados para acceder a la EEPROM EECON1(direccin 8 banco 1), sirve para el control de las operaciones con la EEPROM, a continuacin se muestra su distribucin.
Ing. Diana Valdivieso Herrera Registro EECON1 RD: Lectura (1: cuando se va a leer la EEPROM, pasa a 0 al terminar). WR: Escritura (1: cuando se va a escribir la EEPROM, pasa a 0 al terminar). WREN: Permiso de escritura (1: habilita la escritura).
Ing. Diana Valdivieso Herrera WRERR: Indicador de error en la escritura (1: cuando la escritura termina antes de tiempo). EEIF: Indicador de final de escritura (1: la escritura se complet con xito) Ing. Diana Valdivieso Herrera Proceso de Escritura 1 se carga en el registro EEDATA el dato a grabar. 2 se carga en el registro EEADR la direccin de la posicin a escribir. 3 se recomienda deshabilitar las interrupciones.
Ing. Diana Valdivieso Herrera 4 se ejecuta la siguiente secuencia: movlw 0x55 movwf EECON2 movlw 0xAA movwf EECON2 bsf EECON1,WR 5 esperar a que termine la escritura, el bit EEI F del registro EECON1 se pone a 1y WR se pone a 0. 6 deshabilitar la escritura y poner a 0 EEIF Ing. Diana Valdivieso Herrera Ejemplo bcf status,rp0 movlw 00 movwf eeadr movlw 12 movwf eedata bsf status,rp0 bsf eecon1,wren movlw 55 movwf eecon2 movlw 0aa movwf eecon2 bsf eecon1,wr
Ing. Diana Valdivieso Herrera Proceso de Lectura 1 El registro EEADR debe contener la direccin de memoria a leer. 2 Puesta a 1 del bit RD del registro EECON1. 3 Esperar a que la operacin termine, el microcontrolador pone a 0 el bit RD. 4 Lectura en el registro EEDATA del dato direccionado. Ing. Diana Valdivieso Herrera Ejemplo bcf status,rp0 movlw 00 movwf eeadr bsf status,rp0 bsf eecon1,rd bcf status,rp0 movf eedata,w
Ing. Diana Valdivieso Herrera Interrupciones Tienen 4 causas: 1. Activacin de la patita RB0/INT. 2. Desbordamiento del temporizador TMR0. 3. Cambio de estado en una de las patitas (RB4-RB7). 4. Finalizacin de la escritura en la EEPROM de datos.
Ing. Diana Valdivieso Herrera Interrupciones Si las interrupciones estn permitidas: Se deposita el valor de PC en la pila. Se pone GIE a 0. Se carga el PC con el valor 0004H. Se debe verificar mediante programa de que interrupcin se trata. Ing. Diana Valdivieso Herrera Registro Intcon Como vimos anteriormente este registro se encuentra ubicado en las direcciones 0BH y 8BH. Ing. Diana Valdivieso Herrera Registro Intcon GIE (Permiso Global de Interrupciones) 1: Permite la ejecucin de todas las interrupciones cuyos bits individuales lo permitan. 0: Las prohbe. EEIE (Permiso de Interrupcin por fin de escritura de la EEPROM) 1: Permite la interrupcin por fin de escritura de la EEPROM.
Ing. Diana Valdivieso Herrera Registro Intcon TOIE (Permiso de Interrupcin por sobrepasamiento del TMR0) 1: Permite la interrupcin. INTE (Permiso de interrupcin por activacin de la patita RB0/INT) 1: Permite la interrupcin.
Ing. Diana Valdivieso Herrera Registro Intcon RBIE (Permiso de interrupcin por cambio de estado RB7: RB4) 1: Permite la interrupcin. TOIF (Sealizador de sobrepasamiento del TMR0) 1: Se pone a 1 al desbordarse TMR0
Ing. Diana Valdivieso Herrera Registro Intcon INTF (Sealizador de activacin de la patita RB0/INT) 1: Toma este valor al activarse RB0/INT. RBIF (Sealizador de cambio de estado en las patitas RB7:RB4) 1: Toma este valor cuando detecta un cambio de estado en alguna de estas lneas. Ing. Diana Valdivieso Herrera Interrupcin externa INT Se da con la activacin de la patita RB0/INT, el bit INTF se pone a 1 y si INTE y GIE estn en 1 se produce la interrupcin. Para utilizar esta interrupcin, se debe configurar INTDEG del registro OPTION (bit 6), para indicar al PIC el flanco activo de la patita RB0/INT (flanco ascendente=1,flanco descendente=0). Ing. Diana Valdivieso Herrera Interrupcin por desbordamiento del TMR0 Ocurre cada vez que el contador pasa de FFH a 00H. El indicador TOIF se pone a 1 y si GIE y TOIE estn activas (valor lgico 1) se produce la interrupcin. Es necesario recargar el TMR0 cada vez que se desborda, de lo contrario sigue contando desde 00H hasta FFH. Ing. Diana Valdivieso Herrera Interrupcin por cambio de estado en RB7-RB4 Esta interrupcin esta pensada para trabajar con un teclado matricial conectado a estas lneas, de modo que cada vez que se presione una tecla se activara la interrupcin. Su sealizador es RBIF, para que se produzca la interrupcin deben estar en 1 GIE y RBIE. Ing. Diana Valdivieso Herrera Interrupcin por finalizacin de escritura en la EEPROM de datos Debido al tiempo considerable que tarda escribir en la EEPROM, 10 ms, es recomendable utilizar la interrupcin que se genera al finalizar la escritura, como en los casos anteriores el sealizador EEIF se pone en 1 y si GIE y EEIE son 1, la interrupcin se realiza. Durante la escritura las interrupciones deben estar prohibidas. Ing. Diana Valdivieso Herrera