test rtc

Committer:
irsanjul
Date:
Wed Jun 17 08:46:25 2020 +0000
Revision:
0:fa906a89a756
test rtc

Who changed what in which revision?

UserRevisionLine numberNew contents of line
irsanjul 0:fa906a89a756 1 #ifndef PCF85263AT_H
irsanjul 0:fa906a89a756 2 #define PCF85263AT_H
irsanjul 0:fa906a89a756 3
irsanjul 0:fa906a89a756 4 #include "mbed.h"
irsanjul 0:fa906a89a756 5
irsanjul 0:fa906a89a756 6 #define address 0xA2
irsanjul 0:fa906a89a756 7
irsanjul 0:fa906a89a756 8 class PCF85263AT
irsanjul 0:fa906a89a756 9 {
irsanjul 0:fa906a89a756 10 public:
irsanjul 0:fa906a89a756 11
irsanjul 0:fa906a89a756 12 enum RegisterName
irsanjul 0:fa906a89a756 13 {
irsanjul 0:fa906a89a756 14 // Time and Date Register | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
irsanjul 0:fa906a89a756 15 MSEC = 0x00, // Mili Second | ( 0 - 99 ) |
irsanjul 0:fa906a89a756 16 SEC = 0x01, // Second | OS | ( 0 - 59 ) |
irsanjul 0:fa906a89a756 17 MIN = 0x02, // Minute | EMON | ( 0 - 59 ) |
irsanjul 0:fa906a89a756 18 HOUR = 0x03, // Hour | X | X | AM/PM | ( 1 - 12 ) |
irsanjul 0:fa906a89a756 19 // Hour | X | X | ( 0 - 23 ) |
irsanjul 0:fa906a89a756 20 DAY = 0x04, // Day | X | X | ( 1 - 31 ) |
irsanjul 0:fa906a89a756 21 WDAY = 0x05, // Day of week | X | X | X | X | X | ( 0 - 6 ) |
irsanjul 0:fa906a89a756 22 MONTH = 0x06, // month | X | X | X | ( 1 - 12 ) |
irsanjul 0:fa906a89a756 23 YEAR = 0x07, // year | ( 0 - 99 ) |
irsanjul 0:fa906a89a756 24
irsanjul 0:fa906a89a756 25 // Alarm1 register
irsanjul 0:fa906a89a756 26 SECALARM = 0x08, // Second1 | X | ( 0 - 59 ) |
irsanjul 0:fa906a89a756 27 MINALARM = 0x09, // Minute1 | X | ( 0 - 59 ) |
irsanjul 0:fa906a89a756 28 HOURALARM = 0x0A, // Hour1 | X | X | AM/PM | ( 1 - 12 ) |
irsanjul 0:fa906a89a756 29 // Hour1 | X | X | ( 0 - 23 ) |
irsanjul 0:fa906a89a756 30 DAYALARM = 0x0B, // Day | X | X | ( 1 - 31 ) |
irsanjul 0:fa906a89a756 31 MONALARM = 0x0C, // Day of week | X | X | X | ( 1 - 12 ) |
irsanjul 0:fa906a89a756 32
irsanjul 0:fa906a89a756 33 // Alarm2 register
irsanjul 0:fa906a89a756 34 MINALARM2 = 0x0D, // Minute1 | X | ( 0 - 59 ) |
irsanjul 0:fa906a89a756 35 HOURALARM2 = 0x0E, // Hour1 | X | X | AM/PM | ( 1 - 12 ) |
irsanjul 0:fa906a89a756 36 WDAYALARM2 = 0x0F, // Day | X | X | X | X | X | ( 0 - 6 ) |
irsanjul 0:fa906a89a756 37
irsanjul 0:fa906a89a756 38 // RTC Alarm Enable
irsanjul 0:fa906a89a756 39 ALARMEN = 0x10, // Alarm Enable |WDAY2E | HR2E | MIN2E | MON1E | DAYE | HR1E | MIN1E | SEC1E |
irsanjul 0:fa906a89a756 40
irsanjul 0:fa906a89a756 41 // OFFSET Register
irsanjul 0:fa906a89a756 42 OFFSET = 0x24, // Offset | [7:0] |
irsanjul 0:fa906a89a756 43
irsanjul 0:fa906a89a756 44 // CONTROL REGISTER
irsanjul 0:fa906a89a756 45 OSCI = 0x25, // Oscilator | CLKIV | OFFM | 12_24 | LOWJ | OSCD[1:0] | CL[1:0] |
irsanjul 0:fa906a89a756 46 BTRSW = 0x26, // BatterySwitch| X | X | X | BSOFF | BSRR | BSM[1:0] | BSTH |
irsanjul 0:fa906a89a756 47 PINIO = 0x27, // Pin I/O | CLKPM | TSPULL| TSL | TSIM | TSPM[1:0] | INTAPM[1:0] |
irsanjul 0:fa906a89a756 48 FUNCT = 0x28, // Fungtion | 100TH | PI [2:0] | RTCM | STOPM | COF[2:0] |
irsanjul 0:fa906a89a756 49 FLAG = 0x2B, // Flags | PIF | A2F | A1F | WDF | BSF | TSR3F | TSR2F | TSR1F |
irsanjul 0:fa906a89a756 50
irsanjul 0:fa906a89a756 51 // STOP
irsanjul 0:fa906a89a756 52 STOPEN = 0x2E, // Stop Enable | X | X | X | X | X | X | X | STOP |
irsanjul 0:fa906a89a756 53
irsanjul 0:fa906a89a756 54 // RESET
irsanjul 0:fa906a89a756 55 RESET = 0x2F // Reset RTC | CPR | 0 | 1 | 0 | SR | 1 | 0 | CTS |
irsanjul 0:fa906a89a756 56 };
irsanjul 0:fa906a89a756 57
irsanjul 0:fa906a89a756 58 bool write(char adr, char data);
irsanjul 0:fa906a89a756 59 char read(char adr);
irsanjul 0:fa906a89a756 60 time_t now();
irsanjul 0:fa906a89a756 61 bool set_time(time_t time);
irsanjul 0:fa906a89a756 62 bool IsConnected();
irsanjul 0:fa906a89a756 63 bool software_reset();
irsanjul 0:fa906a89a756 64
irsanjul 0:fa906a89a756 65 PCF85263AT(PinName sda, PinName scl);
irsanjul 0:fa906a89a756 66 ~PCF85263AT();
irsanjul 0:fa906a89a756 67
irsanjul 0:fa906a89a756 68 private:
irsanjul 0:fa906a89a756 69 I2C i2c;
irsanjul 0:fa906a89a756 70 char data[64];
irsanjul 0:fa906a89a756 71 char w[32];
irsanjul 0:fa906a89a756 72 char r[32];
irsanjul 0:fa906a89a756 73
irsanjul 0:fa906a89a756 74 static int bcdToDecimal(int bcd) {
irsanjul 0:fa906a89a756 75 return ((bcd & 0xF0) >> 4) * 10 + (bcd & 0x0F);
irsanjul 0:fa906a89a756 76 }
irsanjul 0:fa906a89a756 77
irsanjul 0:fa906a89a756 78 static int decimalToBcd(int dec) {
irsanjul 0:fa906a89a756 79 return (dec % 10) + ((dec / 10) << 4);
irsanjul 0:fa906a89a756 80 }
irsanjul 0:fa906a89a756 81 };
irsanjul 0:fa906a89a756 82
irsanjul 0:fa906a89a756 83 #endif // PCF85263AT_H