Commit da4d936e authored by Hauke Mehrtens's avatar Hauke Mehrtens Committed by schneider
Browse files

RTC: Add function to set time



This allows to set the current time in milliseconds.

Signed-off-by: default avatarHauke Mehrtens <hauke@hauke-m.de>
parent ec1cadae
...@@ -66,6 +66,7 @@ typedef _Bool bool; ...@@ -66,6 +66,7 @@ typedef _Bool bool;
#define API_RTC_GET_SECONDS 0x50 #define API_RTC_GET_SECONDS 0x50
#define API_RTC_SCHEDULE_ALARM 0x51 #define API_RTC_SCHEDULE_ALARM 0x51
#define API_RTC_SET_MILLISECONDS 0x52
#define API_LEDS_SET 0x60 #define API_LEDS_SET 0x60
#define API_LEDS_SET_HSV 0x61 #define API_LEDS_SET_HSV 0x61
...@@ -964,6 +965,11 @@ API(API_FILE_UNLINK, int epic_file_unlink(const char* path)); ...@@ -964,6 +965,11 @@ API(API_FILE_UNLINK, int epic_file_unlink(const char* path));
*/ */
API(API_RTC_GET_SECONDS, uint32_t epic_rtc_get_seconds(void)); API(API_RTC_GET_SECONDS, uint32_t epic_rtc_get_seconds(void));
/**
* Sets the current RTC time in milliseconds
*/
API(API_RTC_SET_MILLISECONDS, void epic_rtc_set_milliseconds(uint64_t milliseconds));
/** /**
* Schedule the RTC alarm for the given timestamp. * Schedule the RTC alarm for the given timestamp.
* *
......
...@@ -25,6 +25,21 @@ uint32_t epic_rtc_get_seconds(void) ...@@ -25,6 +25,21 @@ uint32_t epic_rtc_get_seconds(void)
return sec; return sec;
} }
void epic_rtc_set_milliseconds(uint64_t milliseconds)
{
uint32_t sec, subsec;
sec = milliseconds / 1000;
subsec = (milliseconds % 1000);
subsec *= 256;
subsec /= 1000;
while (RTC_Init(MXC_RTC, sec, subsec, NULL) == E_BUSY)
;
while (RTC_EnableRTCE(MXC_RTC) == E_BUSY)
;
}
void RTC_IRQHandler(void) void RTC_IRQHandler(void)
{ {
int flags = RTC_GetFlags(); int flags = RTC_GetFlags();
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment