La memoria del Atmega8
Hemos dicho hasta ahora que el Atmega8 tiene una memoria de 8 Kilobytes pero aquí debemos aclarar que nos referimos a sólo una de sus tres tipos diferentes de memoria:
- La memoria Flash : Un nombre que se hizo popular con las memorias USB pues, al igual que los reproductores mp3 y otros dispositivos, estos usan también este tipo de memoria. Su función es guardar información que pueda ser reescrita varias veces (más de 10.000 veces en el caso del Atmega8) y que perdure aún si se desconecta la fuente de poder. Algo como el disco duro del Arduino, con una capacidad total de 8 Kilobytes donde se almacenan el bootloader (especie de sistema operativo que ocupa 1 Kilobyte) y el programa que escribes y bajas al sistema (cuyo tamaño varía según el número de instrucciones). Este último queda allí guardado y funcionando hasta que es reemplazado por el siguiente.
- La memoria RAM: Al desconectar la fuente de poder del Atmega8 se pierde cualquier información almacenada en la memoria RAM, sin embargo su poder radica en su alta velocidad de escritura y lectura. Por esto es la memoria utilizada para almacenar las variables que cambian en tiempo de ejecución y cuya información no será necesaria al finalizar el programa. Tiene 1 Kilobyte de capacidad.
- La memoria EEPROM: Si queremos que un programa almacene información en tiempo de ejecución para ser leída incluso después de desconectar y reconectar la fuente de poder, la memoria EEPROM es la primera opción pues su principal diferencia con la memoria Flash es su capacidad de ser reescrita más de 100.000 veces. Esta diferencia es crítica pues un uso indebido de esta capacidad de reescritura (por ejemplo usar una variable como contador cambiando todo el tiempo) en la memoria Flash acabaría rápidamente con la posibilidad de volver a programar el Arduino. En cambio si esto pasara con la EEPROM queda la opción de usar una memoria externa. En contraste su capacidad de almacenamiento es más limitada: tan solo 512 bytes en el Atmega8. Vea más sobre como usar la memoria EEPROM.
Arduino /Memoria