Hempl/RTC
外觀
< Hempl
Mizar32 附加乙太網板上的即時時鐘晶片跟蹤時間和日期,無論 Mizar32 是否通電。它透過一個小型可充電電池和一個以每秒 32768 個週期振動的晶體來實現,它將這些振動降級以獲得每秒精確跳動一次的脈衝,並使用該訊號來保持秒、分、時以及日期、月和年最新。
乙太網板有一個 32768 赫茲晶體和一個 DS1337 或 PCF8563 晶片,該晶片連線在 I2C 總線上。這兩種不同的晶片具有相同的引腳排列和幾乎相同的功能;我們支援這兩種晶片的原因是,我們的一家供應商在 PCF8563 晶片的批次外殼上印上了 DS1337,從而導致了生產錯誤。
實際存在的晶片可以透過它在主 I2C 總線上響應的從機地址來識別:DS1337 響應 7 位十進位制地址 104,而 PCF8563 響應從機地址 81。
兩種晶片都響應 I2C 總線上高達 400kHz 的速度。我們建議使用 100kHz,即 Hempl 中設定的預設 I2C。
有關暫存器佈局以及如何使用原始 I2C 協議定址裝置,請參閱他們的資料表。
SimpleMachines 已在 Hempl 中添加了一個模組來設定時間並讀取時間。
您可以使用以下函式設定時間
(mizar32-rtc-set param value)
其中,param 可以是以下任何全域性 PicoLisp 符號
| 欄位 | 值 | 含義 |
|---|---|---|
*mizar32-rtc-sec* |
0-59 | 秒 |
*mizar32-rtc-min* |
0-59 | 分鐘 |
*mizar32-rtc-hour* |
0-23 | 小時(24 小時制) |
*mizar32-rtc-day* |
1-31 | 月中的日期 |
*mizar32-rtc-month* |
1-12 | 日曆月份 |
*mizar32-rtc-year* |
1900-2099 | 年份 |
*mizar32-rtc-wday* |
1-7 | 星期幾 |
param 是要設定的欄位,value 是設定 param 的值。
在 PicoLisp 中,
(mizar32-rtc-set *mizar32-rtc-year* 2014) (mizar32-rtc-set *mizar32-rtc-hour* 20)
星期幾欄位 wday 使用以下值來表示一週中的七天
| 值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 含義 | 星期日 | 星期一 | 星期二 | 星期三 | 星期四 | 星期五 | 星期六 |
如果您希望使用該欄位,則需要自己寫入正確的值;它不會從日期自動設定。
以下函式可用於讀取時間
| 函式 | 返回值 | 示例:列印年份 |
|---|---|---|
(mizar32-rtc-get) |
包含上面七個欄位的列表 | (prinl "年份:" (car (nth (mizar32-rtc-get) 3)) )
|
以下程式碼示例在 LCD 顯示屏上顯示一個時鐘。
(de rtc-get (L N)
(car (nth L N)) )
(mizar32-lcd-reset)
(loop
(setq time (mizar32-rtc-get))
(mizar32-lcd-goto 1 5)
(mizar32-lcd-prinl
(rtc-get time *mizar32-rtc-hour*) ":"
(rtc-get time *mizar32-rtc-min*) ":"
(rtc-get time *mizar32-rtc-sec*) )
(mizar32-lcd-goto 2 4)
(mizar32-lcd-prinl
(rtc-get time *mizar32-rtc-day*) "/"
(rtc-get time *mizar32-rtc-month*) "/"
(rtc-get time *mizar32-rtc-year*) ) )