Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: PCF8523.h
- Revision:
- 0:b7ac3add7d83
- Child:
- 1:41dd31bbbe6d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/PCF8523.h Fri Mar 02 07:01:17 2018 +0000
@@ -0,0 +1,76 @@
+#ifndef PCF8523_H
+#define PCF8523_H
+
+#include "mbed.h"
+
+#define address 0xD0
+
+class PCF8523
+{
+public:
+
+ enum RegisterName
+ {
+ // Control Register | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
+ CTRL1 = 0x00, // Ctrl 1 |Cap Sel| T | Stop | SR | 12-24 | SIE | AIE | CIE |
+ CTRL2 = 0x01, // Ctrl 2 | WTAF | CTAF | CTBF | SF | AF | WTAIE | CTAIE | CTBIE |
+ CTRL3 = 0x02, // Ctrl 3 | PM [2:0] | X | BSF | BLF | BSIE | BLIE |
+
+ // Time and Date Register
+ SEC = 0x03, // Second | OS | ( 0 - 59 ) |
+ MIN = 0x04, // Minute | X | ( 0 - 59 ) |
+ HOUR = 0x05, // Hour | X | X | AM/PM | ( 1 - 12 ) |
+ // Hour | X | X | ( 0 - 23 ) |
+ DAY = 0x06, // Day | X | X | ( 1 - 31 ) |
+ WDAY = 0x07, // Day of week | X | X | X | X | X | ( 0 - 6 ) |
+ MONTH = 0x08, // month | X | X | X | ( 1 - 12 ) |
+ YEAR = 0x09, // year | ( 0 - 99 ) |
+
+ // Alarm register
+ MINALARM = 0x0A, // Minute | AEN_M | ( 0 - 59 ) |
+ HOURALARM = 0x0B, // Hour | AEN_H | X | ( 0 - 23 ) |
+ // Hour | AEN_H | X | AM/PM | ( 1 - 12 ) |
+ DAYALARM = 0x0C, // Day | AEN_D | X | ( 1 - 31 ) |
+ WDAYALARM = 0x0D, // Day of week | AEN_W | X | X | X | X | ( 0 - 6 ) |
+
+ // Offset Control Register
+ OFFSET = 0x0E, // OffSet ctrl | MODE | OFFSET |
+
+ // ClockOut adn Timer Register
+ TMRCLKOUT = 0x0F, // Timer Clk Out| TAM | TBM | COF | TAC | TBC |
+ TIMERAFR = 0x10, // Timer A Freq | X | X | X | X | X | TAQ |
+ TIMERARG = 0x11, // Timer A Reg | T_A [7:0] |
+ TIMERBFR = 0x12, // Timer B Freq | X | TBW | X | TBQ |
+ TIMERBRG = 0x13, // Timer B Reg | T_B [7:0] |
+ };
+
+ bool write(char adr, char data);
+ char read(char adr);
+ time_t now();
+ bool set_time(time_t time);
+ bool set_alarm(const struct tm &now, bool min_en=false, bool hour_en=false, bool mday_en=false);
+ bool enable_alarm(bool enable=false);
+ bool alarm_off(char buffer);
+ bool check_alarm();
+ bool IsConnected();
+ bool software_reset();
+
+ PCF8523(PinName scl, PinName sda);
+ ~PCF8523();
+
+private:
+ I2C i2c;
+ char data[64];
+ char w[32];
+ char r[32];
+
+ static int bcdToDecimal(int bcd) {
+ return ((bcd & 0xF0) >> 4) * 10 + (bcd & 0x0F);
+ }
+
+ static int decimalToBcd(int dec) {
+ return (dec % 10) + ((dec / 10) << 4);
+ }
+};
+
+#endif
\ No newline at end of file