EEPROM es típicamente para almacenar datos como configuraciones y registros. Normalmente se puede borrar / escribir en pequeñas secciones. Por lo general, se puede escribir / borrar más veces que la memoria flash. Caro en términos de área de chips.
Flash se utiliza normalmente para la ejecución de código. Normalmente debe borrarse / escribirse en bloques grandes. El número de escrituras / borrados es típicamente mucho menor en comparación con la EEPROM. Normalmente es más barato producir en términos de área de troquelado.
Si está preocupado por quedarse sin espacio de código, es instructivo comparar el AT-Mega y el PIC32. Si está haciendo un montón de matemáticas enteras de 16 o 32 bits, o matemáticas de coma flotante, probablemente esté mejor con el PIC32. Esto es en términos de uso de memoria flash y velocidad de ejecución.
La parte ATMega va a utilizar menos bytes por instrucción en comparación con el PIC32. Una CPU de 32 bits generalmente usa más bytes por instrucción, debido a los tamaños de operandos más grandes. Por otro lado, una CPU de 8 bits a menudo necesitará muchas más instrucciones para hacer el mismo trabajo que una CPU de 32 bits.
Por ejemplo, una multiplicación de 32 bits x 32 bits con un resultado de 32 bits en una CPU de 32 bits son dos instrucciones de carga, una instrucción de multiplicación y una instrucción de almacenamiento. En una CPU de 8 bits, necesitaría al menos 8 instrucciones de carga, 16 multiplicaciones, varias adicionales con instrucciones detalladas y 4 instrucciones de almacenamiento. Por lo tanto, la reducción en el tamaño del código que obtiene en una CPU de 8 bits por cada código de operación se cancela por el aumento en el número de códigos de operación.
El PIC32 es una serie de procesadores bastante buena. El PIC32MX360F512L tiene 512K de flash, 32K EEPROM y una CPU de 80MHz de 32 bits. Si tuviera que elegir entre un ATMega y un PIC32, elegiría el PIC32.