OCROBOT 实时时钟模块(RTC pcf8563)调试实录 ③ 时钟频率发生器的应用
本帖最后由 迷你强 于 2015-4-1 14:27 编辑书接上文(上文传送门),上次我们用这个模块做了一个时钟,这都没什么,标准的RTC玩法,今天我们稍微玩点高级的,就是clockOut管脚的使用,从字面意思上就是时钟输出管脚嘛。其实人家本来就是,从这个管脚可以提供时钟信号的输出,基本上就是脉冲信号了,我们可以利用这个信号做点事情。
信号输出的范围基本上是下面这几个频率
SQW_DISABLE 关闭模式 (如果你完全用不着时钟频率输出,就选择此项关闭,节约能量)
SQW_32KHZ 32KHZ输出(32.768KHZ)
SQW_1024HZ 1024HZ输出
SQW_32HZ 32HZ输出
SQW_1HZ 1HZ输出
就是上面这些种类,通过程序配置,根据实际情况,可以作为时钟源来用,当然我们今天讲的不是时钟源用法,是邪派玩法,就是将这个时钟信号作为外部中断信号来用,定时唤醒arduino来完成任务。
怎么用呢?设计是这样的,我们先将模块配置成1hz输出模式,让其提供1HZ的脉冲信号,然后arduino配置成掉电休眠模式(最节电模式),收到中断唤醒信号后,启动执行一个周期继续休眠,这样的好处是,在经过低功耗设计的设备上,能以极低的功耗完成任务。
我们先配置模块
http://image.geek-workshop.com/forum/201503/30/135612i2x9s5vnvzxlnzc6.jpg
经典的I2C电路
下载代码
#include <Wire.h>
#include <Rtc_Pcf8563.h>
Rtc_Pcf8563 rtc;
void setup() {
rtc.setSquareWave(SQW_1HZ); //配置语句 1hz
pinMode(13,OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
很简单的程序,程序下载进去后,看到13号灯正常1秒闪烁,就说明已经配置好了。。非常非常简单
这时候如果您的万用表或者其他仪器带频率测量功能,就可以去测量板子上OUT管脚, 会有1hz的频率输出
这是后我们改变电路来模拟休眠唤醒
大家再下载一个新库-低功耗库
这个库提供了简单方便的休眠语法,大家有兴趣自己研究,我们将在以后经常给大家介绍用法
看代码
#include "LowPower.h"
// 定义外部中断脚
const int wakeUpPin = 2;
void wakeUp()
{
}
void setup()
{
pinMode(wakeUpPin, INPUT);
pinMode(13,OUTPUT);
}
void loop()
{
// 启动外部中断,模式是从低到高变动
attachInterrupt(0, wakeUp, FALLING);
/*这段程序是模拟你自己的功能性程序,比如传感器检测什么的*/
digitalWrite(13, HIGH);
delay(100);
digitalWrite(13, LOW);
/**************************************************/
//掉电休眠模式启动
LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
上面的程序很简单,配置好了中断,然后让13号led灯亮100毫秒,然后灭掉,整个系统随即休眠。并继续等待唤醒信号。
关于不清楚中断功能的读者,可以从下面的传送门去阅读相关教程
传送门
看图连线,去掉了I2C 然后连上了中断脚,与信号输出脚。 目前理论上时钟模块,会每秒钟唤醒单片机一次,让他闪一下灯,上电试试看吧~~~~
关于功耗的简单介绍
我们做实验用的mangoII这款控制板并不是针对低功耗设计的,上面有很多的稳压器件,还有很多的led灯。所以无论你怎么休眠都不能达到良好的功耗降低效果,如果使用我们随后推出的α系列主板的话,就可以达到非常好的功耗控制,基本上两节5号电池用一年不是梦。本实验只是从原理上介绍了低功耗及外部唤醒的一些知识,明天还有一篇 1秒钟太短,10分钟或1小时的怎么弄? 谢谢分享学习一下 根據蕊片資料,可用的觸發有CLKOUT與INT兩個端口
CLKOUT最長提供1HZ的輸出,超過這間隔就不適用
INT則是由鬧鈴與倒數計時兩種定時器控制
倒計時可以做到最大255分鐘
另外,DS3231提供兩個鬧鈴,理論上可以每小時觸發兩次
DS1302沒有這些功能,但是這三個都有1HZ輸出 huan 发表于 2015-4-1 16:54 static/image/common/back.gif
1秒钟太短,10分钟或1小时的怎么弄?
欲知后事如何,且听下回分解 搞一套成品出来,放淘宝上。
页:
[1]