test rtc
Dependencies: mbed PCF85263AT
Diff: main.cpp
- Revision:
- 0:479a7fbc710a
diff -r 000000000000 -r 479a7fbc710a main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Jun 17 08:48:06 2020 +0000 @@ -0,0 +1,61 @@ +#include "mbed.h" +#include "PCF85263AT.h" + +Serial dbg(USBTX, USBRX); +PCF85263AT rtc(D14, D15); +DigitalOut led1(LED_RED); + +Ticker run; +void runled() +{ + led1 =! led1; +} + +time_t splitDate(const char *date, const char *time) +{ + struct tm now; + + char s_month[5]; + int month, day, year, hour, min, sec; + static const char month_names[] = "JanFebMarAprMayJunJulAugSepOctNovDec"; + + sscanf(date, "%s %d %d", s_month, &day, &year); + sscanf(time, "%d:%d:%d", &hour, &min, &sec); + + month = (strstr(month_names, s_month)-month_names)/3; + + now.tm_sec = sec; + now.tm_min = min; + now.tm_hour = hour + 7; + now.tm_mon = month; + now.tm_mday = day; + now.tm_year = year - 1900; + + return mktime(&now); +} + +int main() +{ + run.attach(&runled, 0.5f); + dbg.baud(9600); + dbg.printf("<Program Start>\r\n"); + + ulang: + if(rtc.IsConnected()){ + dbg.printf("PCF85263AT is not detected\r\n"); + dbg.printf("Reconnecting..."); + goto ulang; + } + dbg.printf("PCF85263AT is detected\r\n"); + + time_t new_t = splitDate(__DATE__, __TIME__); + rtc.set_time(new_t); + + while (true) { + time_t t = rtc.now(); + char buffer[32]; + strftime(buffer, 32, "%d/%m/%Y %H:%M:%S \r\n", localtime(&t)); + dbg.printf("%s", buffer); + wait(1); + } +}