EEPROM. Memoria de programa Características Algunos dispositivos pueden leer la memoria de programa. Leer checksums, calibración de datos, tablas. 14-bits de datos comparados con los 8 de retlw 0xnn Accesibles a través de Registros de Funciones Especiales SFR Si una palabra de la memoria de programa no es una instrucción válida se ejecutará un NOP para no alterar el funcionamiento del microcontrolador Las MCU FLASH pueden escribir la memoria de programa Algunos dispositivos pueden necesitar tensiones de programación para la escritura. La FLASH de programa se puede escribir hasta 1K veces. 1 1
EEPROM. Memoria de programa Registros de acceso Acceso R/W (PIC16F877) EEDATA contiene el LSbyte del dato EEDATH contiene el MSbyte del dato EEADR contiene el LSbyte de la dirección EEADRH contiene el MSbyte de la dirección EECON1 Registro de control R/W EECON2 Registro de control de escritura Acceso de lectura únicamente (PIC16F77, PIC16C926) PMDATA contiene el LSbyte del dato PMDATH contiene el MSbyte del dato PMADR contiene el LSbyte de la dirección PMADRH contiene el MSbyte de ladirección PMCON1 Registro de control de lectura 2 2
EEPROM. Memoria de programa Proceso de lectura de la memoria FLASH Los 8 bits de menor peso de la dirección se cargan en el regitro PMADR (EEADR) Los 5 bits de mayor peso se cargan en el registro PMADRH (EEADRH) Se pone a 1 el bit EEPGD, EECON1<7> Se pone a 1 el bit RD, PMCON1<0> (EECON1<0>) Las dos siguientes instrucciones no se buscan cuando la CPU lee la memoria de programa: se ejecutan dos instrucciones NOP El dato estar a disponible en los registros PMDATH:PMDATA (EEDATH:EEDATA) en el siguiente ciclo de instrucción. El bit RD se pone a cero. El bit EEIF en PIR2 se pone a uno. 3 3
EEPROM. Memoria de programa Proceso de lectura de la memoria FLASH 4 4
EEPROM. Memoria de programa Proceso de escritura de la memoria FLASH Cargar la dirección de memoria en EEADRH:EEADRL Cargar el dato en EEDATH:EEDATA Poner a 1 el bit EEPGD, EECON1<7>, para seleccionar la memoria de programa Poner a 1 el bit WREN, EECON1<2> para habilitar la escritura Inhibir las interrupciones Cargar 55h en el registro EECON2 Cargar AAh en el registro EECON2 Poner a 1 el bit WR, EECON1<1>. Inicio de la escritura La dos siguientes instrucciones se ignoran La CPU se para mientras la memoria se programa. A diferencia del modo SLEEP el reloj y los periféricos siguen activos. Al finalizar la escritura, WR se pone a 0, EEIF en PIR2 se pone a 1, y la ejecución continua. Se pueden activar las interrupciones Hay que poner a cero el bit WREN, EECON1<2> para inhibir otras ecrituras. 5 5
EEPROM. Memoria de programa Proceso de escritura de la memoria FLASH 6 6
EEPROM. Memoria de datos Características No volátil Almacena hasta 256 bytes de datos La EEPROM de datos se puede escribir hasta 100K veces Registros utilizados: EEDATA contiene el byte de datos. EEADR contiene el byte de dirección EECON1 registro de control de lectura y escritura EECON2 No implementado físicamente, se utiliza para inicializar la lectura escritura. 7 7
EEPROM. Memoria de datos Registro EECON1 bit 7:5 No implementados: se leen 0 bit 4 EEIF: Bit de interrupción de operación de escritura de la EEPROM 1 = Escritura completada (debe ponerse a 0 por Sw) 0 = Escritura no completada o no iniciada bit 3 WRERR: Bit de error de la EEPROM 1 = Operación de escritura terminada prematuramente (MCLR reset o WDT reset durante una operación normal) 0 = Escritura completada bit 2 WREN: Bit de habilitación de escritura en la EEPROM 1 = Permite ciclos de escritura 0 = Inhibe la escritura de la EEPROM de datos 8 8
EEPROM. Memoria de datos Registro EECON1 bit 1 WR: Bit de control de escritura 1 = Inicia un ciclo de escitura. Se borra por Hw cunado la operación se completa. El bit WR solo puede ser puesto a 1 ( no se puede borrar ) por Sw 0 = Ciclo de escritura en la EEPROM de datos completado bit 0 RD: Bit de control de lectura 1 = Inicia la lectura de la EEPROM. LA lectura dura un ciclo. RD es puesto a 0 por Hw. El bit RD solo puede ser puesto a 1 ( no se puede borrar ) por Sw 0 = No se ha iniciado ciclo de lectura en la EEPROM 9 9
EEPROM. Memoria de datos Proceso de lectura Cargar la dirección en EEADR Poner a 0 el bit EEPGD, EECON1<7> Selecciona EEPROM para un acceso de lectura o escritura Poner a 1 el bit RD, EECON1<0> Inicia la operación de lectura El dato estará disponible en EEDATA en el siguiente ciclo de instrucción RD se pone a 0 EEIF en PIR2 se pone a 1 10 10
EEPROM. Memoria de datos Proceso de lectura 11 11
EEPROM. Memoria de datos Proceso de escritura Cargar la dirección en EEADR Cargar el dato en EEDATA Poner a 0 el bit EEPGD, EECON1<7> Poner a 1 el bit WREN, EECON1<2> Inhibir las interrupciones Cargar 55h en EECON2 Cargar AAh en EECON2 Poner a 1 el bit WR, EECON1<1> Poner a 0 el bit WREN, EECON1<2> Cuando la escritura se complete WR se pondrá 0 o EEIF a 1 Habilitar interrupciones 12 12
EEPROM. Memoria de datos Proceso de escritura 13 13
Tipos de osciladores. Rangos de frecuencia HS (High Speed) Alta velocidad Diseñado para cristales de cuarzo y resonadores cerámicos de de más de 4 Mhz. Consumo de corriente elevado, el modo más rápido disponible. XT (XTAL ) Modo de cristal Opera con cristales de cuarzo y algunos resonadores de 1 a 4 MHz Consumo de potencia moderado LP (Low Power) Bajo consumo Diseñado para cristales de 32kHz, puede ser utilizado hasta los 200kHz. Consumo de potencia muy bajo Usado en aplicaciones sensibles a la temporización RC Resistencia y condensador externos Generan una frecuencia aproximada a la deseada bajo costo Consumo de potencia moderado Frecuencia generada imprecisa, no se recomienda para aplicaciones de temporización o RS 232 14 14
Tipos de osciladores. Rangos de frecuencia IntRC (Internal RC) Un oscilador RCinterno en la MCU proporciona el reloj Frecuencia de oscilación habitual 4 Mhz Consumo de potencia moderado Puede incorporar un registro (OSCCAL) de calibración Frecuencia generada imprecisa, no se recomienda para aplicaciones de temporización o RS 232 ER (External Resistor) Un resistor pude establecer la frecuencia Bajo costo Consumo de potencia moderado Frecuencia generada imprecisa, no se recomienda para aplicaciones detemporización o RS 232 15 15
Palabra de configuración 14 bits que permiten al usuario personalizar ciertos aspectos de funcionamiento de la MCU: watchdog, modo del oscilador etc. Se mapean en la posición de memoria 2007h. Esta posición solo es accesible durante la programación del dispositivo. 16 16
Palabra de configuración CP1:CP0: Bits de protección de código 11 = Sin protección 10 = Ver hojas de características del dispositivo 01 = Ver hojas de características del dispositivo 00 = Toda la memoria protegida Nota: Algunos dipositivos pueden usar más bits para especificar la protección de código, otros únicamente usan CP0 (CP0=1 sin protección; CP0=1 con protección) DP: Bit de protección de memoria EEPROM de datos protegida 1 = Protegida off 0 = EEPROM de datos protegida BODEN: Bit de habilitación de Brown-out Reset 1 = BOR enabled 0 = BOR disabled Nota: La habilitación del Brown-out Reset habilita el Power-up Timer (PWRT) independientemente del valor del bit PWRTE. Asegurarse que Power-up Timer está habilitado si Brown-out Reset está habilitado 17 17
Palabra de configuración PWRTE: Bit de habilitación de Power-up Timer 1 = PWRT inhibido 0 = PWRT habilitado MCLRE: Bit de selección del pin MCLR 1 = Función como MCLR 0 = Función como E/S digital. MCLR es puesta internamente a VDD. WDTE: Bit de habilitación del Watchdog Timer 1 = WDT habilitado 0 = WDT inhibido FOSC1:FOSC0: Bits de selección de oscilador 11 = oscilador RC 10 = oscilador HS 01 = oscilador XT 00 = oscilador LP FOSC2:FOSC0: Bits de selección de oscilador 111 = oscilador EXTRC, con CLKOUT 110 = oscilador EXTRC 101 = oscilador INTRC, con CLKOUT 100 = oscilador INTRC 011 = Reservado 010 = oscilador HS 001 = oscilador XT 000 = oscilador 18 LP 18
Palabra de configuración BKBUG: Bit de habilitación del modo de depurado In-Circuit. 1 = BKBUG inhibido 0 = BKBUG habilitado WRT: Bits de de habilitación de escritura en la memoria FLASH de programa. LPVD: Low Voltage In-Circuit Serial. Habilitación de la programación serie de bajo voltaje. 19 19
Palabra de configuración La directiva del ensamblador config establece la palabra de configuración 20 20
Palabra de configuración directiva config 21 21
Palabras de identificación Se destinan cuatro posiciones de memoria (2000h-2003h) para datos específicos del usuario Checksum, código de identificación, número de serie, etc. Se pueden leer y escribir solo durante la programación Se recomienda utilizar solo los 4 bits de menor peso de cada localización. Se utiliza la directiva idelocs <expre> para establecer las palabras de identificación 22 22