A simple WIP that logs data from a Grove sensor, and can send and receive information over USB and SMS.
Dependencies: DHT DS_1337 SDFileSystem USBDevice mbed
rtc.cpp@0:2df78a4443cd, 2016-04-10 (annotated)
- Committer:
- Joseph Radford
- Date:
- Sun Apr 10 15:47:33 2016 +1000
- Revision:
- 0:2df78a4443cd
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Joseph Radford |
0:2df78a4443cd | 1 | #include "rtc.h" |
Joseph Radford |
0:2df78a4443cd | 2 | #include "DS1337.h" |
Joseph Radford |
0:2df78a4443cd | 3 | |
Joseph Radford |
0:2df78a4443cd | 4 | // declare reference to interface to the hardware real time clock |
Joseph Radford |
0:2df78a4443cd | 5 | extern DS1337* RTC_DS1337; |
Joseph Radford |
0:2df78a4443cd | 6 | |
Joseph Radford |
0:2df78a4443cd | 7 | // RTC enabled flag |
Joseph Radford |
0:2df78a4443cd | 8 | static int _rtcEnabled; |
Joseph Radford |
0:2df78a4443cd | 9 | |
Joseph Radford |
0:2df78a4443cd | 10 | time_t my_rtc_read() |
Joseph Radford |
0:2df78a4443cd | 11 | { |
Joseph Radford |
0:2df78a4443cd | 12 | time_t retval = 0; // time since start of epoch |
Joseph Radford |
0:2df78a4443cd | 13 | tm _time_tm; |
Joseph Radford |
0:2df78a4443cd | 14 | |
Joseph Radford |
0:2df78a4443cd | 15 | RTC_DS1337->readTime(); |
Joseph Radford |
0:2df78a4443cd | 16 | |
Joseph Radford |
0:2df78a4443cd | 17 | // extract values from RTC to tm struct |
Joseph Radford |
0:2df78a4443cd | 18 | _time_tm.tm_year = ((int)RTC_DS1337->getYears()) - 1900; // struct tm stores (year - 1900) |
Joseph Radford |
0:2df78a4443cd | 19 | _time_tm.tm_mon = (int)RTC_DS1337->getMonths() - 1; // struct tm stores months 0 - 11, DS1337 stores 1-12 |
Joseph Radford |
0:2df78a4443cd | 20 | _time_tm.tm_mday = (int)RTC_DS1337->getDays(); |
Joseph Radford |
0:2df78a4443cd | 21 | _time_tm.tm_hour = (int)RTC_DS1337->getHours(); |
Joseph Radford |
0:2df78a4443cd | 22 | _time_tm.tm_min = (int)RTC_DS1337->getMinutes(); |
Joseph Radford |
0:2df78a4443cd | 23 | _time_tm.tm_sec = (int)RTC_DS1337->getSeconds(); |
Joseph Radford |
0:2df78a4443cd | 24 | |
Joseph Radford |
0:2df78a4443cd | 25 | // convert to time_t |
Joseph Radford |
0:2df78a4443cd | 26 | retval = mktime(&_time_tm); |
Joseph Radford |
0:2df78a4443cd | 27 | if (retval == (time_t) -1) |
Joseph Radford |
0:2df78a4443cd | 28 | return (time_t)1; // error |
Joseph Radford |
0:2df78a4443cd | 29 | else |
Joseph Radford |
0:2df78a4443cd | 30 | return retval; |
Joseph Radford |
0:2df78a4443cd | 31 | } |
Joseph Radford |
0:2df78a4443cd | 32 | |
Joseph Radford |
0:2df78a4443cd | 33 | |
Joseph Radford |
0:2df78a4443cd | 34 | //https://developer.mbed.org/teams/Seeed/code/Seeed_Arch_GPRS_V2_RTC_HelloWorld/file/6db7dfbab0f1/main.cpp |
Joseph Radford |
0:2df78a4443cd | 35 | void my_rtc_write(time_t _time) |
Joseph Radford |
0:2df78a4443cd | 36 | { |
Joseph Radford |
0:2df78a4443cd | 37 | // extract time_t to time info struct |
Joseph Radford |
0:2df78a4443cd | 38 | tm * timeinfo = localtime(&_time); |
Joseph Radford |
0:2df78a4443cd | 39 | |
Joseph Radford |
0:2df78a4443cd | 40 | RTC_DS1337->setSeconds (timeinfo->tm_sec); |
Joseph Radford |
0:2df78a4443cd | 41 | RTC_DS1337->setMinutes (timeinfo->tm_min); |
Joseph Radford |
0:2df78a4443cd | 42 | RTC_DS1337->setHours (timeinfo->tm_hour); |
Joseph Radford |
0:2df78a4443cd | 43 | RTC_DS1337->setDays (timeinfo->tm_mday); // day of month |
Joseph Radford |
0:2df78a4443cd | 44 | RTC_DS1337->setDayOfWeek (timeinfo->tm_wday); |
Joseph Radford |
0:2df78a4443cd | 45 | RTC_DS1337->setMonths (timeinfo->tm_mon + 1); // struct tm stores months 0 - 11, DS1337 stores 1-12 |
Joseph Radford |
0:2df78a4443cd | 46 | RTC_DS1337->setYears (timeinfo->tm_year + 1900); // struct tm subtracts 1900 from year |
Joseph Radford |
0:2df78a4443cd | 47 | |
Joseph Radford |
0:2df78a4443cd | 48 | RTC_DS1337->setTime(); |
Joseph Radford |
0:2df78a4443cd | 49 | } |
Joseph Radford |
0:2df78a4443cd | 50 | |
Joseph Radford |
0:2df78a4443cd | 51 | void my_rtc_init() |
Joseph Radford |
0:2df78a4443cd | 52 | { |
Joseph Radford |
0:2df78a4443cd | 53 | RTC_DS1337->start(); |
Joseph Radford |
0:2df78a4443cd | 54 | _rtcEnabled = 1; |
Joseph Radford |
0:2df78a4443cd | 55 | } |
Joseph Radford |
0:2df78a4443cd | 56 | |
Joseph Radford |
0:2df78a4443cd | 57 | int my_rtc_enabled() |
Joseph Radford |
0:2df78a4443cd | 58 | { |
Joseph Radford |
0:2df78a4443cd | 59 | return _rtcEnabled; |
Joseph Radford |
0:2df78a4443cd | 60 | } |