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