mirror of
https://github.com/adafruit/RTClib.git
synced 2026-07-28 04:05:31 +00:00
added readClkOutMode() and writeClkOutMode()
This commit is contained in:
+37
-1
@@ -1356,6 +1356,8 @@ void RTC_PCF8523::calibrate(Pcf8523OffsetMode mode, int8_t offset) {
|
||||
Wire.endTransmission();
|
||||
}
|
||||
|
||||
// START RTC_PCF8563 implementation
|
||||
|
||||
/**************************************************************************/
|
||||
/*!
|
||||
@brief Start I2C for the PCF8563 and test succesful connection
|
||||
@@ -1466,7 +1468,41 @@ uint8_t RTC_PCF8563::isrunning() {
|
||||
return !((ctlreg >> 5) & 1);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/**************************************************************************/
|
||||
/*!
|
||||
@brief Read the mode of the CLKOUT pin on the PCF8563
|
||||
@return CLKOUT pin mode as a #Pcf8563SClkOutMode enum
|
||||
*/
|
||||
/**************************************************************************/
|
||||
Pcf8563ClkOutMode RTC_PCF8563::readClkOutMode() {
|
||||
|
||||
int mode;
|
||||
|
||||
Wire.beginTransmission(PCF8563_ADDRESS);
|
||||
Wire._I2C_WRITE(PCF8563_CLKOUTCONTROL);
|
||||
Wire.endTransmission();
|
||||
|
||||
Wire.requestFrom((uint8_t)PCF8563_ADDRESS, (uint8_t)1);
|
||||
mode = Wire._I2C_READ();
|
||||
|
||||
|
||||
return static_cast<Pcf8563ClkOutMode>(mode & PCF8563_CLKOUT_MASK);
|
||||
}
|
||||
|
||||
/**************************************************************************/
|
||||
/*!
|
||||
@brief Set the CLKOUT pin mode on the PCF8563
|
||||
@param mode The mode to set, see the #Pcf8563ClkOutMode enum for options
|
||||
*/
|
||||
/**************************************************************************/
|
||||
void RTC_PCF8563::writeClkOutMode(Pcf8563ClkOutMode mode) {
|
||||
|
||||
Wire.beginTransmission(PCF8563_ADDRESS);
|
||||
Wire._I2C_WRITE(PCF8563_CLKOUTCONTROL);
|
||||
Wire._I2C_WRITE(mode);
|
||||
Wire.endTransmission();
|
||||
|
||||
}
|
||||
// END RTC_PCF8563 implementation
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
@@ -41,6 +41,7 @@ class TimeSpan;
|
||||
#define PCF8563_CONTROL_1 0x00
|
||||
#define PCF8563_CONTROL_2 0x01
|
||||
#define PCF8563_VL_SECONDS 0x02
|
||||
#define PCF8563_CLKOUT_MASK 0x83
|
||||
|
||||
#define DS1307_ADDRESS 0x68 ///< I2C address for DS1307
|
||||
#define DS1307_CONTROL 0x07 ///< Control register
|
||||
@@ -409,6 +410,15 @@ public:
|
||||
void calibrate(Pcf8523OffsetMode mode, int8_t offset);
|
||||
};
|
||||
|
||||
/** PCF8563 CLKOUT pin mode settings */
|
||||
enum Pcf8563ClkOutMode {
|
||||
PCF8563_SquareWaveOFF = 0x00, /**< Off */
|
||||
PCF8563_SquareWave1Hz = 0x83, /**< 1Hz square wave */
|
||||
PCF8563_SquareWave32Hz = 0x82, /**< 32Hz square wave */
|
||||
PCF8563_SquareWave1kHz = 0x81, /**< 1kHz square wave */
|
||||
PCF8563_SquareWave32kHz = 0x80 /**< 32kHz square wave */
|
||||
};
|
||||
|
||||
/**************************************************************************/
|
||||
/*!
|
||||
@brief RTC based on the PCF8563 chip connected via I2C and the Wire library
|
||||
@@ -424,6 +434,9 @@ public:
|
||||
void start(void);
|
||||
void stop(void);
|
||||
uint8_t isrunning();
|
||||
Pcf8563ClkOutMode readClkOutMode();
|
||||
void writeClkOutMode(Pcf8563ClkOutMode mode);
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user