ottimizzazione dello spazio occupato in memoria - GregoSwe/pluviometroI2c GitHub Wiki
###Descrizione In questa sezione viene spiegato come i timestamp vengono salvati ottimizzando al meglio lo spazio in memoria.
Timestamp non ottimizzato -> con timestamp si intende un insieme di dati composti da:
- Data;
- Giorno; 1 byte
- Mese; 1 byte
- Anno; 1 byte
- Ora;
- Ore; 1 byte
- Minuti; 1 byte
- Secondi; 1 byte
- Contatore 2 byte -> rappresentante il numero di timestamp registrato dall'ultima lettura.
L'insieme di questi sette elementi costituiscono un Timestamp. Utilizzando un singolo byte per ciascuna delle precedenti informazioni e due byte per il contatore ogni timestamp occuperebbe 8byte in memoria. [Nel caso di 32Kb di memoria avremmo 4096 timestamp salvabili].
La rappresentazione dei timestamp in memoria avviene invece sfruttando al massimo i singoli bit per la rappresentazione dei numeri, così usando 6byte invece che 8 [5461 timestamp salvabili] :
- 2 byte per la data:
- 5 bit giorno : 1-31;
- 4 bit mese : 1-12;
- 7 bit anno : 0-99.
- 2 byte + 1 bit tempo:
- 5 bit ora : 0-23;
- 6 bit minuti : 0-59;
- 6 bit secondi : 0-59.
- 7 bit + 1 byte per il contatore : 0-32767.
Venendo rappresentati nel seguente modo in memoria:
1°byte |m||m||m||d||d||d||d||d|
2°byte |y||y||y||y||y||y||y||m|
3°byte |mi||mi||mi||h||h||h||h||h|
4°byte |s||s||s||s||s||mi||mi||mi|
5°byte |c||c||c||c||c||c||c||s|
6°byte |c||c||c||c||c||c||c||c|
legenda:
d : day; m : month; y : year
h : hour; mi: minute; s : second
c : counter