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