Come gestire il real time clock della Fez Panda II

Solitamente quando ho il bisogno di avere un riferimento temporale, che risulta ininfluente dalle mancanze di alimentazione o da riavvi casuali della scheda, utilizzo un RTC esterno, tipicamente un DS1307. La soluzione fornita dalla Fez Panda II impiega un rtc on board che necessita solamente di una batteria tampone esterna, tipicamente quella utilizzata nei computer da 3.3Vdc.

La prima operazione da effettuare, dopo aver collegato la batteria tampone tra il pin BAT e il pin GND, è l’inizializzazione dell’RTC con una data ed un ora valida:

[csharp]
//Setto la data e l’ora per l’RTC
//Anno, Mese, Giorno, Ora, Minuti, Secondi
RealTimeClock.SetTime(new DateTime(2012, 02, 23, 12, 0, 0));
[/csharp]

questo settaggio non agisce automaticamente sulle impostazioni di data ed ora della classe DateTime, ma è soltanto il metodo per inizzializzare l’RTC.

Per poter leggere la data ed il tempo è necessario utilizzare la classe Utility per settare il local time con quello dell’RTC

[csharp]
//Leggo la data ed il tempo dall’RTC e lo assegno al local time
Utility.SetLocalTime(RealTimeClock.GetTime());
[/csharp]

Adesso la classe DateTime ha come riferimento la data e l’ora dell’RTC, posso richiamarla utilizzando questo esempio

[csharp]
//visualizzo a console la data e l’ora corrente
Debug.Print(DateTime.Now.ToString());
[/csharp]

Queste poche linee di coidce permettono di gestire l’RTC on board della Fez Panda II e di implementare ne progetti un sistema basato sul tempo.