Memoria occupata dal programma

Ho scoperto, da un articolo di Leonardo, la gestione della memoria degli atmega non è come quella dei pc che usiamo tutti i giorni.
Questo è l'articolo: Come sapere l’occupazione di RAM del proprio sketch – Leonardo Miliani

Ora sono andato a vedere il ds dell' attiny 25/45/85 ma non ho capito la differenza tra questi tipi di memoria:

– 2/4/8K In-System Programmable Program Memory Flash
– 128/256/512 Bytes In-System Programmable EEPROM
– 128/256/512 Bytes Internal SRAM

L'ultima, immagino sia la ram per le variabili e le altre?

Inoltre il mio sketch ha questa dimensione (calcolato con avr-size come detto nell'articolo di Leonardo):

AVR Memory Usage
----------------
Device: Unknown

Program:    3230 bytes
(.text + .data + .bootloader)

Data:        131 bytes
(.data + .bss + .noinit)

Credo che possa andare bene anche un attiny45.

La Flash è la memoria in cui viene scritto il tuo sketch. E' una Flash perché così il programma non sparisce una volta tolta l'alimentazione ma nel contempo puoi cambiarlo se occorre (a differenza di una ROM).
La EEPROM è una memoria non volatile che viene fornita per memorizzare dei dati che potrebbero servire in fase di avvio per configurare qualcosa oppure salvati dal programma.
La RAM è la memoria in cui vengono creati lo stack e le variabili del programma ed è di tipo volatile perché deve avere veloci tempi di accesso e deve poter essere riscritta un numero quasi indefinito di volte.

Per la seconda questione, sì il programma sta anche su un Tiny45 ma visto che ci sarà poca differenza di prezzo, prendi il Tiny85 direttamente. Un indomani che vuoi espandere lo sketch potresti avere problemi di spazio.

Ottimo come sempre.