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*) ) )