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.
Dependencies: PCF8583_rtc mbed
Diff: PCF8583_rtc.h
- Revision:
- 1:a8b9fb95696b
- Parent:
- 0:f09cf90def53
diff -r f09cf90def53 -r a8b9fb95696b PCF8583_rtc.h
--- a/PCF8583_rtc.h Sun Feb 09 00:25:21 2014 +0000
+++ b/PCF8583_rtc.h Thu Feb 13 21:46:08 2014 +0000
@@ -1,26 +1,66 @@
#include <mbed.h>
-#ifndef rtc_included
-#define rtc_included
+/** Set these public variables according to your locale, default is Australian English. Default in brackets.
+ * char *ShortDateFormat; ("d,m,yy")
+ * char *LongDateFormat; ("dddd dd mmmm yyyy")
+ * char *ShortTimeFormat; ("d:m:yy")
+ * char *LongTimeFormat; ("dd:nn:yyyy")
+
+ * char DateSeparator; ("\")
+ * char TimeSeparator; (":")
+
+ * char *ShortDayNames[7]; ({"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"})
+ * char *LongDayNames[7]; ({"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"})
+ * char *ShortMonthNames[12]; ({"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"})
+ * char *LongMonthNames[12]; ({"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"})
+
+* Example:
+* @code
+* #include "mbed.h"
+* #include "PCF8583_rtc.h"
+*
+* I2C i2c(P0_10, P0_11); // sda, scl
+* PCF8583rtc rtc(&i2c, 0xA2);
+*
+* struct DateTime_t dtl;
+*
+* //Set the time
+* dtl = rtc.read(TIME);
+* dtl.time.hours = rtc.bin2bcd(11);
+* dtl.time.minutes = rtc.bin2bcd(43);
+* rtc.write(TIME, dtl);
+*
+* //Set the Alarm
+* dtl = rtc.read(TIME);
+* dtl.time.hours = rtc.bin2bcd(7);
+* dtl.time.minutes = rtc.bin2bcd(30);
+* rtc.write(ALARM, dtl);
+*
+* //Read and display the time on the nixie display
+* dtl = rtc.read(TIME);
+* i2c.write(ADDR_8574_1, &dtl.time.hours, 1);
+* i2c.write(ADDR_8574_2, &dtl.time.minutes, 1);
+*
+* @endcode
+
+ PCF8583rtc(I2C *i2c, char I2cAddress);
+
+ DateTime_t read(const char address);
+ void write(const char address, DateTime_t dti);
+ void FormatDateTime(char *dest, char *format);
+ bool WriteNVram(char address, char * value, char num);
+ bool ReadNVram(char address, char * dest, char num);
+ void SetDateTime(DateTime_t dti);
+ struct DateTime_t GetDateTimeBCD(void);
+
+*/
+//#ifndef rtc_included
+//#define rtc_included
#define PCF8583_addr 0xA2 // PCF8583 Write address,
-#define Write_addr 0xA2 // PCF8583 Write address,
-#define Read_addr 0xA3 // PCF8583 Read address
-#define SET_DATE_TIME 0x01
-#define GET_DATE_TIME 0x02
-#define SET_ALARM 0x09
-#define GET_ALARM 0x0A
#define ON 1
#define OFF 0
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
//Configuration Alarm Control Register
#define alarm_enable_bit 0x04
#define alarm_flag 0x02;
@@ -47,8 +87,8 @@
#define ALARM 9
struct Time_t {
- char fmt_hours;
- char am_pm_flag;
+ bool fmt_hours;
+ bool am_pm_flag;
char hours;
char minutes;
char seconds;
@@ -72,7 +112,7 @@
I2C *_i2c;
public:
- //Set these public variables according to your locale, default is Australia English
+
char *ShortDateFormat;
char *LongDateFormat;
char *ShortTimeFormat;
@@ -86,18 +126,36 @@
char *ShortMonthNames[12];
char *LongMonthNames[12];
- PCF8583rtc(I2C *i2c);
+ PCF8583rtc(I2C *i2c, char I2cAddress);
+
+/** read the current Time or Alarm
+*
+* @param address "TIME" = read the time, "ALARM" = read the alarm
+* @returns
+* a DateTime_t structure
+*/
+ DateTime_t read(const char address);
- int bin2bcd(char value);
- void read(const char address);
- void write(const char address);
- void FormatDateTime(char *dest, char *format);
- bool WriteNVram(char address, char * value, char num);
- bool ReadNVram(char address, char * dest, char num);
- struct DateTime_t GetDateTime(void);
- struct DateTime_t GetDateTimeBCD(void);
+/** write the current Time or Alarm
+*
+* @param address "TIME" = read the time, "ALARM" = read the alarm
+* @param dti a DateTime_t structure containing the time or alarm data
+*/
+ void write(const char address, DateTime_t dti);
+
+ void FormatDateTime(char *dest, char *format);
+
+ bool WriteNVram(char address, char * value, char num);
+
+ bool ReadNVram(char address, char * dest, char num);
+
+ void SetDateTime(DateTime_t dti);
+
+ char bin2bcd(char value);
+
private:
struct DateTime_t dt;
+ char _I2cAddress;
char Bcd2Char(char *d, char val, char WantLeadZero);
void enableCounting(void);
@@ -162,4 +220,4 @@
*/
//void WriteNVram(char address, char *value, char num);
-#endif
\ No newline at end of file
+//#endif
\ No newline at end of file