Você está na página 1de 5

MEMORIA EEPROM El contenido de la EEPROM se puede cambiar durante el funcionamiento (similar a la RAM), pero se queda permanentemente guardado despus

de la prdida de la fuente de alimentacin (similar a la ROM). Por lo tanto, la EEPROM se utiliza con frecuencia para almacenar los valores creados durante el funcionamiento, que tienen que estar permanentemente guardados. Por ejemplo, si usted ha diseado una llave electrnica o una alarma, sera estupendo permitir al usuario crear e introducir una contrasea por su cuenta. Por supuesto, la nueva contrasea tiene que estar guardada al apagar la fuente de alimentacin. En tal caso una solucin perfecta es el microcontrolador con una EEPROM embebida. El PIC16F887 dispone de 256 localidades de memoria EEPROM controlados por los bits de los siguientes registros: EECON1 (registro de control); EECON2 (registro de control); EEDAT (almacena los datos listos para escritura y lectura); y EEADR (almacena la direccin de la EEPROM a la que se accede). Adems, el registro EECON2 no es un registro verdadero, no existe fsicamente en el chip. Se utiliza slo durante la escritura de los datos en la memoria. Los registros EEDATH y EEADRH se utilizan durante la escritura y lectura de la EEPROM. Los dos se utilizan tambin durante la escritura y lectura de la memoria de programa (FLASH). Registro EECON1

EEPGD - Program/Data EEPROM Select bit (bit de seleccin de memorias) 1 - Acceso a la memoria Flash de programa. 0 - Acceso a la memoria de datos EEPROM. WRERR - EEPROM Error Flag bit (bit de error de escritura) 1 - Se produce un error de escritura de forma prematura y ha ocurrido un error. 0 - Se ha completado la operacin de escritura. WREN - EEPROM Write Enable bit (bit de habilitacin de escritura) 1 - Escritura de datos en la EEPROM habilitada. 0 - Escritura de datos en la EEPROM deshabilitada. WR - Write Control bit (bit de control de escritura) 1 - Se ha iniciado una operacin de escritura de datos en la EEPROM. 0 - Se ha completado una operacin de escritura de datos en la EEPROM. RD - Read Control bit (bit de control de lectura) 1 - Inicia una lectura de la memoria EEPROM. 0 - Lectura de la memoria EEPROM deshabilitada.

LECTURA DE LA MEMORIA EEPROM Para leer los datos de la memoria EEMPROM, siga los siguientes pasos: Paso 1: Escribir la direccin (00h - FFh) en el registro EEADR.

Paso 2: Seleccionar el bloque de memoria EEPROM al poner a cero el bit EEPGD del registro EECON1. Paso 3: Poner a uno el bit RD del mismo registro para leer el contenido de la localidad. Paso 4: El dato se almacena en el registro EEDAT y est listo para su uso.

ESCRITURA EN LA MEMORIA EEPROM Antes de escribir los datos en la memoria EEPROM es necesario escribir la direccin en el registro EESADR y los datos en el registro EESAT. Slo ha quedado seguir a una secuencia especial para iniciar la escritura para cada byte. Durante el proceso de escritura las interrupciones deben estar deshabilitadas. // El ejemplo muestra cmo utilizar la librera EEPROM en el compilador mikroC PRO for PIC.
char ii; // La variable ii utilizada en el bucle void main(){ ANSEL = 0; ANSELH = 0; PORTB = 0; PORTC = 0; PORTD = 0; TRISB = 0; TRISC = 0; TRISD = 0; for(ii = 0; ii < 32; ii++) EEPROM_Write(0x80+ii, ii); EEPROM_Write(0x02,0xAA); EEPROM_Write(0x50,0x55); Delay_ms(1000); PORTB = 0xFF; PORTC = 0xFF; Delay_ms(1000); PORTB = 0x00; PORTC = 0x00; Delay_ms(1000); PORTB = EEPROM_Read(0x02); // Leer los datos de la direccin 2 de la EEPROM y // Llenar el bfer con los datos // Escribir los datos en la direccin 0x80+ii // Escribir un dato en la direccin 2 de la EEMPROM // Escribir un dato en la direccin 0x5 de la EEMPROM // Diodos en los puertos PORTB y PORTC // para indicar el comienzo de la lectura // Configuracin de los pines AN como E/S digitales

// Visualizarla en el puerto PORTB PORTC = EEPROM_Read(0x50); // Leer los datos de la direccin 0x50 de la EEPROM y

// Visualizarla en el puerto PORTC Delay_ms(1000); for(ii = 0; ii < 32; ii++) { // Leer el bloque de 32 bytes de la direccin

PORTD = EEPROM_Read(0x80+ii); // 0x80 y visualizarla en el puerto PORTD Delay_ms(250); } }

MEMORIA FLASH El microcontrolador ejecuta el programa cargado en la memoria Flash. Esto se denomina el cdigo ejecutable. Cada palabra se interpreta por la CPU como una instruccin a ser ejecutada durante el funcionamiento del microcontrolador. Todas las instrucciones que el microcontrolador puede reconocer y ejecutar se les denominan colectivamente Conjunto de instrucciones. Como es ms fcil trabajar con el sistema de numeracin hexadecimal, el cdigo ejecutable se representa con frecuencia como una serie de los nmeros hexadecimales denominada cdigo Hex. Ya que es posible escribir y borrar el contenido de esta memoria prcticamente un nmero ilimitado de veces, los microcontroladores con memoria Flash son perfectos para estudiar, experimentar y para la fabricacin en pequea escala. Librera de Memoria Flash Esta biblioteca proporciona rutinas para acceder a la memoria flash del microcontrolador. Tenga en cuenta que los prototipos difieren para las familias PIC16 y PIC18. Importante: Debido a las caractersticas especficas de memoria flash de las familias P16/P18, la librera flash es MCU dependiente. Operaciones de memoria Flash que son MCU dependientes: La operacin de lectura es compatible. Para este grupo de MCU slo leer la funcin est implementado. Leer y escribir operaciones soportadas (escritura se ejecuta como borrado y escritura). Para este grupo de MCU ls funciones de leer y escribir estn implementan. Tenga en cuenta que la operacin de escritura que se ejecuta como borrado y escritura, puede escribir menos bytes que los que borra. Leer, escribir y borrar operaciones apoyadas. Para este grupo de lectura MCU, escribir y borrar las funciones estan implementadas. Adicionalmente, el bloque de memoria flash tiene que ser borrado antes de la escritura (la operacin de escritura no se ejecuta como borrado y escritura). Consulte hoja de MCU datos antes de utilizar la biblioteca flash. FLASH_Read Para PIC16: sub function FLASH_Read(dim Address as word) as word Regresa los datos desde una direccin especifica de la memoria flash. dim tmp as byte ... main: ... tmp = FLASH_Read(0x0D00) ... end. FLASH_Write Para PIC16: sub procedure FLASH_Write(dim Address as word, dim byref Data as word[4]) Escribe los bloques de datos en la memoria Flash. Tamao del bloque es MCU dependiente. P16: Esta funcin puede borrar un segmento de memoria antes de escribir bloques de datos en l (MCU dependiente). Adems, el segmento de memoria que se borran puede ser mayor que el tamao del bloque de datos que se escribirn (MCU dependiente). Por lo tanto, se recomienda escribir tantos bytes como se van a borrar. FLASH_Write escribe 4 posiciones de memoria flash en una fila, por lo que debe ser llamado tantas veces como sea necesario para cumplir con el tamao del bloque de datos que se va a escribir.

dim toWrite as byte[64] ... main: ... ' initialize array: for i = 0 to 63 toWrite[i] = i next i ... ' write contents of the array to the address 0x0D00: FLASH_Write_64(0x0D00, toWrite) ... end.

FLASH_Erase Para PIC16: sub procedure FLASH_Erase(dim address as word) Borra bloques de memoria a partir de una direccin dada. Por P16 Familly se aplica slo para los de MCU cuya memoria flash no soporta operaciones de borrado y escritura (consulte la hoja de datos). FLASH_Erase_64($0D00) EJEMPLO: Esta es una simple demostracin de cmo utilizar la memoria flash interna del PIC16 para almacenar datos. Los datos se escriben a partir de la ubicacin dada, luego, las mismas ubicaciones se leen y los datos se muestran en PORTB y PORTC. program Flash_Write
dim counter as byte addr, data_ as word dataAR as word[4][4] main: ANSEL = 0 ' Configure AN pins as digital ' Disable comparators ' Initial PORTB value ' Set PORTB as output ' Initial PORTC value ' Set PORTC as output ANSELH = 0 C1ON_bit = 0 C2ON_bit = 0 PORTB = 0 TRISB = 0 PORTC = 0 TRISC = 0 Delay_ms(500) Todos los bloques escritos en la memoria del programa se realizan como palabras de 16 borrado por las operaciones de escritura de ocho palabras. La operacin de escritura se borde alineado y no puede ocurrir a travs de fronteras. Por lo tanto, se recomienda realizar escrituras de flash en pedazos de 16 palabras. Esa es la razn por la que los bits de la direccin de inicio menores de 4 [0:3] deben ser cero. Desde que la rutina FLASH_Write escribe en trozos de 4 palabras, tenemos que llamarlo 4 veces en una fila. dataAR[0][0]= 0x3FAA+0 dataAR[0][1]= 0x3FAA+1

dataAR[0][2]= 0x3FAA+2 dataAR[0][3]= 0x3FAA+3 dataAR[1][0]= 0x3FAA+4 dataAR[1][1]= 0x3FAA+5 dataAR[1][2]= 0x3FAA+6 dataAR[1][3]= 0x3FAA+7 dataAR[2][0]= 0x3FAA+8 dataAR[2][1]= 0x3FAA+9 dataAR[2][2]= 0x3FAA+10 dataAR[2][3]= 0x3FAA+11 dataAR[3][0]= 0x3FAA+12 dataAR[3][1]= 0x3FAA+13 dataAR[3][2]= 0x3FAA+14 dataAR[3][3]= 0x3FAA+15 addr = 0x0430 for counter = 0 to 3 Delay_ms(100) FLASH_Write(addr+counter*4, dataAR[counter]) next counter Delay_ms(500) addr = 0x0430 for counter = 0 to 15 data_ = FLASH_Read(addr) Inc(addr) Delay_us(10) PORTB = data_ PORTC = word(data_ >> 8) Delay_ms(500) next counter end. ' ' two MSB's will always be '00' and PORTC MS Byte ' display data on PORTB LS Byte ' P16's FLASH is 14-bit wide, so ' starting Flash address, valid for P16F887 ' write some data to Flash

MEMORIA RAM Es la tercera y la ms compleja parte de la memoria del microcontrolador. En este caso consiste en dos partes: en registros de propsito general y en los registros de funciones especiales (SFR). Todos estos registros se dividen en cuatro bancos de memoria. Aunque los dos grupos de registros se ponen a cero al apagar la fuente de alimentacin, adems estn fabricados de la misma forma y se comportan de la manera similar, sus funciones no tienen muchas cosas en comn. Al apagar la fuente de alimentacin, se pierde el contenido de la memoria RAM. Se utiliza para almacenar temporalmente los datos y los resultados inmediatos creados y utilizados durante el funcionamiento del microcontrolador. Por ejemplo, si el programa ejecuta la adicin (de cualquier cosa) es necesario tener un registro que representa lo que se llama suma en vida cotidiana. Con tal propsito, uno de los registros de la RAM es denominado suma y se utiliza para almacenar los resultados de la adicin.

Você também pode gostar