test rtc

Dependencies:   mbed PCF85263AT

Committer:
irsanjul
Date:
Wed Jun 17 08:48:06 2020 +0000
Revision:
0:479a7fbc710a
test rtc

Who changed what in which revision?

UserRevisionLine numberNew contents of line
irsanjul 0:479a7fbc710a 1 #include "mbed.h"
irsanjul 0:479a7fbc710a 2 #include "PCF85263AT.h"
irsanjul 0:479a7fbc710a 3
irsanjul 0:479a7fbc710a 4 Serial dbg(USBTX, USBRX);
irsanjul 0:479a7fbc710a 5 PCF85263AT rtc(D14, D15);
irsanjul 0:479a7fbc710a 6 DigitalOut led1(LED_RED);
irsanjul 0:479a7fbc710a 7
irsanjul 0:479a7fbc710a 8 Ticker run;
irsanjul 0:479a7fbc710a 9 void runled()
irsanjul 0:479a7fbc710a 10 {
irsanjul 0:479a7fbc710a 11 led1 =! led1;
irsanjul 0:479a7fbc710a 12 }
irsanjul 0:479a7fbc710a 13
irsanjul 0:479a7fbc710a 14 time_t splitDate(const char *date, const char *time)
irsanjul 0:479a7fbc710a 15 {
irsanjul 0:479a7fbc710a 16 struct tm now;
irsanjul 0:479a7fbc710a 17
irsanjul 0:479a7fbc710a 18 char s_month[5];
irsanjul 0:479a7fbc710a 19 int month, day, year, hour, min, sec;
irsanjul 0:479a7fbc710a 20 static const char month_names[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
irsanjul 0:479a7fbc710a 21
irsanjul 0:479a7fbc710a 22 sscanf(date, "%s %d %d", s_month, &day, &year);
irsanjul 0:479a7fbc710a 23 sscanf(time, "%d:%d:%d", &hour, &min, &sec);
irsanjul 0:479a7fbc710a 24
irsanjul 0:479a7fbc710a 25 month = (strstr(month_names, s_month)-month_names)/3;
irsanjul 0:479a7fbc710a 26
irsanjul 0:479a7fbc710a 27 now.tm_sec = sec;
irsanjul 0:479a7fbc710a 28 now.tm_min = min;
irsanjul 0:479a7fbc710a 29 now.tm_hour = hour + 7;
irsanjul 0:479a7fbc710a 30 now.tm_mon = month;
irsanjul 0:479a7fbc710a 31 now.tm_mday = day;
irsanjul 0:479a7fbc710a 32 now.tm_year = year - 1900;
irsanjul 0:479a7fbc710a 33
irsanjul 0:479a7fbc710a 34 return mktime(&now);
irsanjul 0:479a7fbc710a 35 }
irsanjul 0:479a7fbc710a 36
irsanjul 0:479a7fbc710a 37 int main()
irsanjul 0:479a7fbc710a 38 {
irsanjul 0:479a7fbc710a 39 run.attach(&runled, 0.5f);
irsanjul 0:479a7fbc710a 40 dbg.baud(9600);
irsanjul 0:479a7fbc710a 41 dbg.printf("<Program Start>\r\n");
irsanjul 0:479a7fbc710a 42
irsanjul 0:479a7fbc710a 43 ulang:
irsanjul 0:479a7fbc710a 44 if(rtc.IsConnected()){
irsanjul 0:479a7fbc710a 45 dbg.printf("PCF85263AT is not detected\r\n");
irsanjul 0:479a7fbc710a 46 dbg.printf("Reconnecting...");
irsanjul 0:479a7fbc710a 47 goto ulang;
irsanjul 0:479a7fbc710a 48 }
irsanjul 0:479a7fbc710a 49 dbg.printf("PCF85263AT is detected\r\n");
irsanjul 0:479a7fbc710a 50
irsanjul 0:479a7fbc710a 51 time_t new_t = splitDate(__DATE__, __TIME__);
irsanjul 0:479a7fbc710a 52 rtc.set_time(new_t);
irsanjul 0:479a7fbc710a 53
irsanjul 0:479a7fbc710a 54 while (true) {
irsanjul 0:479a7fbc710a 55 time_t t = rtc.now();
irsanjul 0:479a7fbc710a 56 char buffer[32];
irsanjul 0:479a7fbc710a 57 strftime(buffer, 32, "%d/%m/%Y %H:%M:%S \r\n", localtime(&t));
irsanjul 0:479a7fbc710a 58 dbg.printf("%s", buffer);
irsanjul 0:479a7fbc710a 59 wait(1);
irsanjul 0:479a7fbc710a 60 }
irsanjul 0:479a7fbc710a 61 }