RTC (Real-Time Clock)
Last updated
Last updated
需要 v0.9.9 以上的 BSP 版本才有支援此功能。其他更早的 BSP 版本並沒有提供 Arduino 層的 API 供開發者操作 RTC 模組 (不過開發者仍能使用 來操作 RTC)。
LinkIt 7697 內建 Real-Time Clock (RTC) 模組,透過獨立供電給 RTC 模組,它能在 MT7697 主 IC 斷電的狀態下繼續紀錄時間資訊,以達到低功耗的省電目的。原本 LinkIt 7697 設計為主 IC 與 RTC 共用相同的 3V3 輸入電源,所以若將開發板的電源關閉,則 MT7697 與 RTC 皆會因失去電源而停止作用。但透過移除電阻的 rework (下列電路圖中標示為 R2 的 0R 電阻),則能將 MT7697 與 RTC 的供電予以分開,進而達成關閉主 IC 電源時,RTC 仍能繼續運作的模式。
R2 電阻、以及 RTC 的供電輸入接口在 LinkIt 7697 開發板的位置如下:
RTC 的工作電壓範圍為 1.6V 到 3.63V,所以也可以透過 2xAA 電池來對它供電:
下列影片示範了當主 IC 斷電時 RTC 仍繼續運作的典型應用情境:
使用 RTC 類別,需於 sketch 開始處加入 LRTC.h 的 header file。
在呼叫 RTC API 存取時間資訊前,需先初始化 RTC 模組。建議在 Arduino 的 setup() 裡呼叫 begin() API 來進行初始化:
接著呼叫 get() API,便能取得存在 RTC 裡的時間資訊。當 get() 返回後,可藉由下列函式解析出 "年/月/日/時/分/秒" 等資訊:
LRTC.year()
[2000, 2099]
LRTC.month()
[1, 12]
LRTC.day()
[1, 31]
LRTC.hour()
[0, 23]
LRTC.minute()
[0, 59]
LRTC.second()
[0, 59]
例如以下的範例:
此 API 各參數的有效值域與上表 get() 回傳值的有效值域相同。
除了讀取時間,也可以使用 set() API 設定 RTC 的時間 (例如從 取得標準時間並將之紀錄於 RTC 中):
在 File / Examples / LRTC 選單裡提供了兩個範例。為了方便理解及專注於 RTC 本身的功能,範例中的時間皆為事先定義於程式中的固定資訊,並透過按壓 USR 按鈕進行設定。若 RTC 的時間沒有經過初始化設定,則 RTC 會從 2000/1/1 00:00:00 開始計時。CheckTime 範例會將時間輸出至 Serial Monitor,而 CheckTimeLCD 範例會將時間輸出至 1602 LCD (如同上面影片裡的設置)。在執行使用 LCD 的範例之前,需先安裝 1602 LCD 的。若要獲得更多使用該 LCD 的資訊,請參考 1602 LCD 教學範例。