Almacenamiento de información (parte 1)

Almacenamiento de información

En esta entrada quiero centrarmeen las distintas formas de almacenamiento de datos en los microcontroladores.Observa los ejemplos de cómo se utilizan los comandos para almacenar y leer, además te recomiendo que analizes y repitas los códigos que se te proporcionan.

Variables

Es la primera forma de la quevamos a hablar. Definimos que una variable es un lugar en donde podemosalmacenar información temporalmente (ejemplo: memoria RAM), desarrollaremos ahoralas variables según el tipo de microcontrolador:

  • PICAXE: podemos utilizar únicamente dos tipos de variables tipo byte (b0, b1, b2, etc.) y Word (w0, w1, w2). Donde una variable Word es un conjunto de dos variables tipo byte, así que w0=b0+b1.Si son línea educativa se tiene hasta 28 variables tipo byte y 14 word, si es de la línea avanzada tiene 56 variables tipo byte y 28 word.

b0 = readadc(c.3)
b1 = 15
pinsc = b1

  • Arduino: acá tenemos más libertad de declaración de variables (int, long, char, etc.) y podemos nombrarlas como queramos.
 int cuenta = 0;
cuenta = cuenta +1;

  • PIC: según el lenguaje de programación, en mi caso que utilizo MikroC nos da la misma versatilidad que con Arduino para declarar variables.
 char letra = a;
unsigned int control= 240;

Memoria EEPROMinterna

Esta es la segunda forma quepodemos enlistar y es una memoria en la cual podemos almacenar un valor, éstequeda guardado incluso cuando se retira la alimentación del microcontrolador.Así que recurrimos a la EEPROMcuando queremos guardar valores y que éstos permanezcan intactos inclusodespués de quitar el voltaje.

NOTA: el tiempo de vida de la EEPROM generalmente es de100,000 ciclos de lectura/escritura, así que asegúrate de utilizar únicamente la EEPROM cuando la necesites.


  • PICAXE: estos microcontroladores generalmente tienen un espacio de 256 bytes de memoria EEPROM, pero algunos como el 8M2 la tienen compartida con la memoria del programa.
 Comando para trabajar con lamemoria EEPROM interna:

EEPROM: no es una instrucción,sino es un método de pre-almacenamiento de información a la EEPROM, este comando noocupa espacio en la longitud del programa.

EEPROM localización,(dato, dato, dato,…)

Ejemplo:
EEPROM 0,(“CORTO CIRCUITO”) ‘almacena en la memoria EEPROMeste valor al momento de programar el microcontrolador.
Read: lee los datos tipo byte de la memoria EEPROM.

read localización,variable, variable
Ejemplo:
EEPROM 0,(“CORTO CIRCUITO”)

for b0 = 0 to 13
            read b0, b1
            sertxd (b1)
next b0
 Write: lee los datos tipo byte de la memoria EEPROM

 write localización,dato, dato
Ejemplo:
for b0 = 0 to 4
            b1=b0+1
            write b0,b1
next b0

  • Arduino: Según el MCU que este en tu placa Arduino, así es su capacidad de almacenamiento en la EEPROM por ejemplo: ATmega328 1024 bytes, ATmega168 512 bytes, ATmega2560 4 Kbytes (4096 bytes). Arduino especifica que la memoria EEPROM del ATmega se tarda en escribir 3.3 ms.

Comando para trabajar con lamemoria EEPROM interna:

Write(): escribe un byte en la EEPROM

EEPROM.write(dirección,valor)

Donde valor puede tener un valor binario entre 0 hasta 255.


Ejemplo: nota que el ciclo se puso en el void setup para quese ejecutara solo una vez.
#include<EEPROM.h>

void setup()
{
            for (int i = 0; i < 512; i++)
            {
          EEPROM.write(i, i);
          delay(3);
            }
}

void loop()
{
}


Read (): lee un byte en la EEPROM, si los espacios no han sido escritos,éstos tienen un valor de 255.


EEPROM.read(dirección)

Ejemplo:
#include<EEPROM.h>
int valor, a= 0;

void setup()
{
}

void loop()
{
            valor = EEPROM.read(a);
            a = a + 1;
            if (a == 1024)
            {
                        a = 0;
            }
            delay (500);
}

  • PIC: según el microcontrolador que escojas así será su capacidad de almacenamiento en la EEPROM, ejemplo: 16F84A 64bytes, 16F688 256 bytes, 18F2550 256 bytes. Los comandos que se muestran son para MikroC. El retardo mínimo recomendado por MikroC es de 20 milisegundos.
Comando para trabajar con lamemoria EEPROM interna:

EEPROM_Write: escribe informaciónen una dirección de la memoria EEPROM


EEPROM_Write(unsigned int dirección, unsignedshort dato);

Ejemplo:

unsigned short i = 0, j = 0;

void main() {
  j = 4;
  for (i= 0; i < 20; i++)
   EEprom_Write(i, j++);
   delay_ms(20);
}


EEPROM_Read: lee la informaciónde una dirección en la memoria EEPROM.


EEPROM_Read(unsigned int dirección);

Ejemplo:
unsignedshort i = 0, j = 0;

void main(){
  PORTB = 0;
  TRISB = 0;

  for (i = 0; i < 20; i++) {
    PORTB = Eeprom_Read(i);
    Delay_ms(500);
  }
}


Memoria EEPROMexterna

Esta es el tercer método quepodemos utilizar, las EEPROM externas se pueden comunicar en paralelo, I2C oSPI. La ventaja de las memorias externas es que podemos almacenar másinformación ya que son mayores que las EEPROM internas de losmicrocontroladores y su ciclo de lectura/escritura se aumenta a un promedio de1,000,000. Ejemplo: 24LC256 es una EEPROM por I2C de 256 Kbytes, M28C16 es unaEEPROM paralela de 16 Kbytes y 25LC256 es una EEPROM por SPI de 256 Kbytes.

Espera la entrada de la próximasemana donde veremos algunos de estos tipos de memoria EEPROM.