test rtc
Dependencies: mbed PCF85263AT
main.cpp@0:479a7fbc710a, 2020-06-17 (annotated)
- Committer:
- irsanjul
- Date:
- Wed Jun 17 08:48:06 2020 +0000
- Revision:
- 0:479a7fbc710a
test rtc
Who changed what in which revision?
User | Revision | Line number | New 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 | } |