git://www.github.com/JChristensen/DS3232RTC.git
git clone http://www.github.com/JChristensen/DS3232RTC
$ svn co --depth empty http://www.github.com/JChristensen/DS3232RTC
Checked out revision 1.
$ cd repo
$ svn up trunk
https://github.com/JChristensen/DS3232RTC
自述文件
杰克。Christensen 2013年月
DS3232RTC 是一个支持Maxim集成DS3232和DS3231实时时钟的Arduino库。 这个库打算与pjrc时间库( )的一起使用。
在 DS3232RTC Margolis库中提供的库是替换的,它提供了Arduino时间库 ( 但不是针对更新的pjrc版本的DS1307RTC库。) 。 要改变使用 DS1307 RTC到 DS323x RTC,只需要使用 #include <DS3232RTC.h>
而不是 #include <DS1307RTC.h>
。
DS3232RTC 还实现了支持DS3232和DS3231附加特性的功能。 与DS3232具有相同的功能,除了: ( 1 ) 电池后备 SRAM,( 2 ) 电池后备 32kHz 输出( 控件/状态 register 0 x0F中的BB32kHz位),以及( 3 ) 可调温度传感器采样率( 。crate1: 控制/状态 register 中的0 位) 。
"is DS3232RTC库"由 Jack 4.0在sap下授权。
以下示例草图包含在 DS3232RTC 库中:
当使用英镑DS3232RTC库时,用户负责确保读取和写入不超过设备空间( 0 x00-0x12,0 x00-0xFF用于 DS3232 )的地址;库不执行边界检查。
英镑DS1307RTC库类似,英镑DS3232RTC库实例化RTC对象,用户不需要这样做。
squareWave() 方法( 描述如下) 一起使用的符号名称。
值setAlarm() 方法( 描述如下) 一起使用的符号名称。
警报 1的值从RTC读取当前日期和时间,并将它的作为 time_t 值返回。 如果发生( RTC不存在,等等 ) 错误,则返回零。
命令行语法RTC.get();
无。
返回当前日期和时间 ( time_t )
示例time_t myTime;
myTime = RTC.get();
将RTC日期和时间设置为给定的time_t 值。 清除控件/状态 register 中的振荡器停止标志( OSF ) 位。 参见 oscStopped()
函数和DS323x数据表,了解有关OSF位的更多信息。
RTC.set(t);
t: date将RTC设置为 ( time_t )的日期和时间。
返回I2C状态 ( 字节) 。 如果成功则返回零。
示例//this example first sets the system time (maintained by the Time library) to//a hard-coded date and time, and then sets the RTC from the system time.//the setTime() function is part of the Time library.setTime(23, 31, 30, 13, 2, 2009); //set the system time to 23h31m30s on 13Feb2009RTC.set(now()); //set the RTC from the system time
从RTC读取当前日期和时间,并将它的作为 tmElements_t 结构返回。 有关的详细信息,请参阅Arduino时间 库。
命令行语法RTC.read(tm);
将日期和时间返回到的tmElements_t 结构的: 。
返回I2C状态 ( 字节) 。 如果成功,返回零。从RTC读取的日期和时间返回到参数。
示例tmElements_t tm; RTC.read(tm); Serial.print(tm.Hour, DEC); Serial.print(':'); Serial.print(tm.Minute,DEC); Serial.print(':'); Serial.println(tm.Second,DEC);
将RTC设置为 tmElements_t 结构给定的日期和时间。 清除控件/状态 register 中的振荡器停止标志( OSF ) 位。 参见 oscStopped()
函数和DS323x数据表,了解有关OSF位的更多信息。
RTC.write(tm);
tmElements_t: 用于设置日期和时间的结构的地址。
返回I2C状态 ( 字节) 。 如果成功则返回零。
示例tmElements_t tm;tm.Hour = 23; //set the tm structure to 23h31m30s on 13Feb2009tm.Minute = 31;tm.Second = 30;tm.Day = 13;tm.Month = 2;tm.Year = 2009 - 1970; //tmElements_t.Year is the offset from 1970RTC.write(tm); //set the RTC from the tm structure
DS3232RTC.h 文件为计时,报警,状态和控制寄存器定义符号名称。 这些可以用于下面函数中的addr参数。
将一个或者多个字节写入RTC内存。
命令行语法RTC.writeRTC(addr, values, nbytes);
地址: 第一个SRAM地址写入 ( 字节) 。 DS3231有效地址范围为 0 x00-0x12,0 x00-0xFF为 DS3232. DS3232的通用SRAM从地址 0 x14开始。 地址未被库检查是否有效。 值:的值,表示要写入的值( *byte )
字节: 字节的字节,以字节为单位的( 字节) 。 必须在 1和 31 ( 导线库限制) 之间,但不会被库检查。
I2C状态 ( 字节) 。 如果成功则返回零。
示例//write 1, 2,.. ., 8 to the first eight DS3232 SRAM locationsbyte buf[8] = {1, 2, 3, 4, 5, 6, 7, 8}; RTC.sramWrite(0x14, buf, 8);
将单个字节写入RTC存储器。
命令行语法RTC.writeRTC(addr, value);
地址: SRAM地址写入 ( 字节) 。 DS3231有效地址范围为 0 x00-0x12,0 x00-0xFF为 DS3232. DS3232的通用SRAM从地址 0 x14开始。 地址未被库检查是否有效。 值:要写入 ( 字节)的值。
返回I2C状态 ( 字节) 。 如果成功则返回零。
示例RTC.writeRTC(3, 14); //write the value 14 to SRAM address 3
从 RTC RAM读取一个或者多个字节。
命令行语法RTC.readRTC(addr, values, nbytes);
地址: 第一个SRAM地址读取 ( 字节) 。 DS3231有效地址范围为 0 x00-0x12,0 x00-0xFF为 DS3232. DS3232的通用SRAM从地址 0 x14开始。 地址未被库检查是否有效。 : an接收读取的值的array an 。
nBytes: 字节读取的字节数 ( 字节) 。 必须在 1和 32 ( 导线库限制) 之间,但不会被库检查。
I2C状态 ( 字节) 。 如果成功则返回零。
示例//read the last eight locations of SRAM into bufbyte buf[8]; RTC.sramRead(248, buf, 8);
从 RTC RAM读取单个字节。
命令行语法RTC.readRTC(addr);
地址: SRAM地址,读取 ( 字节) 。 DS3231有效地址范围为 0 x00-0x12,0 x00-0xFF为 DS3232. DS3232的通用SRAM从地址 0 x14开始。 地址未被库检查是否有效。
返回从 RTC ( 字节) 读取的值。
示例byte val; val = RTC.readRTC(3); //read the value from SRAM location 3
DS3232和DS3231有两个报警功能。 Alarm1可以设置为秒精度;Alarm2只能设置为分钟精度。
设置提醒时间。仅设置警报寄存器。 若要在警报匹配时断言 INT pin,请使用 alarmInterrupt() 。 这里方法可以设置警报 1或者警报 2,具体取决于 alarmType ( 使用上面的ALARM_TYPES_t枚举)的值。 设置警报 2时,必须提供秒值,但忽略它,建议使用零。 ( 警报 2没有秒 register 。)
命令行语法RTC.setAlarm(alarmType, seconds, minutes, hours, dayOrDate);
alarmType: 值来自ALARM_TYPES_t枚举,above 。 ( ALARM_TYPES_t )
秒:将警报设置为秒的秒值。 ( 字节)
分钟:将闹钟设置为分钟值。 ( 字节)
小时: 小时值设置闹钟。 ( 字节)
: dayOrDate或者月份的日期。 在一周中,使用时间库timeDayOfWeek_t枚举,换句话说,dowSunday,dowMonday,dowTuesday,dowWednesday,dowThursday,dowFriday,dowSaturday的值。 ( 字节)
无。
示例//Set Alarm1 for 12:34:56 on SundayRTC.setAlarm(ALM1_MATCH_DAY, 56, 34, 12, dowSunday);
设置提醒时间。仅设置警报寄存器。 若要在警报匹配时断言 INT pin,请使用 alarmInterrupt() 。 这里方法可以设置警报 1或者警报 2,具体取决于 alarmType ( 使用上面的ALARM_TYPES_t枚举)的值。 但是,当使用这里方法设置警报 1时,秒值设置为零。 ( 警报 2没有秒 register 。)
命令行语法RTC.setAlarm(alarmType, minutes, hours, dayOrDate);
alarmType: 值来自ALARM_TYPES_t枚举,above 。 ( ALARM_TYPES_t )
分钟:将闹钟设置为分钟值。 ( 字节)
小时: 小时值设置闹钟。 ( 字节)
: dayOrDate或者月份的日期。 在一周中,使用时间库timeDayOfWeek_t枚举,换句话说,dowSunday,dowMonday,dowTuesday,dowWednesday,dowThursday,dowFriday,dowSaturday的值。 ( 字节)
无。
示例//Set Alarm2 for 12:34 on the 4th day of the monthRTC.setAlarm(ALM2_MATCH_DATE, 34, 12, 4);
启用或者禁用警报"中断"。 注意,这里"中断"会导致断言rtc的INT 。 为了将这个信号作为一个实际中断到微控制器,它需要正确连接并编程在应用程序固件。 在RTC上。
命令行语法RTC.alarmInterrupt(alarmNumber, enable);
alarmNumber: 要启用或者禁用的警报数,ALARM_1或者 ALARM_2 ( 字节) 。
alarmEnabled: true 或者 false ( 布尔型)
无。
示例RTC.alarmInterrupt(ALARM_1, true); //assert the INT pin when Alarm1 occurs.RTC.alarmInterrupt(ALARM_2, false); //disable Alarm2
测试是否已经触发警报。 如果触发警报,则返回 true 并重置RTC中的警报标志,否则返回 false 。
命令行语法RTC.alarm(alarmNumber);
alarmNumber: 要测试的警报数,ALARM_1或者 ALARM_2 ( 字节)
返回描述 ( 类型)
示例if ( RTC.alarm(ALARM_1) ) { //has Alarm1 triggered?//yes, act on the alarm}else { //no alarm}
返回RTC温度。
命令行语法RTC.temperature();
无。
返回RTC温度为摄氏度乘以4 次。 ( int )
示例int t = RTC.temperature();float celsius = t/4.0;float fahrenheit = celsius * 9.0/5.0 + 32.0;
启用或者禁用方波输出。
命令行语法RTC.squareWave(freq);
频率:来自枚举 above的值。( SQWAVE_FREQS_t )
返回无。
示例RTC.squareWave(SQWAVE_1_HZ); //1 Hz square waveRTC.squareWave(SQWAVE_NONE); //no square wave
返回控制/状态 register 中的振荡器停止标志( OSF ) 位的值,指示振荡器已经停止,计时数据无效。 根据所传递的参数,可以选择清除OSF位。 如果省略 clearOSF
参数,默认情况下将清除OSF位。 对 set()
和 write()
的调用也清除了OSF位。
RTC.oscStopped(clearOSF);
clearOSF: 一个可选的true 或者 false 值,用于指示是否应该清除OSF位。 如果未提供,则使用 true的默认值,重置OSF位。 ( bool )
返回true 或者 false ( bool )
示例if ( RTC.oscStopped(false) ) { //check the oscillator//may be trouble}else { //all is well}