A delay is needed after `rtc_set_datetime()` before the newly set value can be read back. Co-authored-by: Rene Greiner <reneg973@gmail.com>
50 lines
1.2 KiB
C
50 lines
1.2 KiB
C
/**
|
|
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include "hardware/rtc.h"
|
|
#include "pico/stdlib.h"
|
|
#include "pico/util/datetime.h"
|
|
|
|
/// \tag::hello_rtc_main[]
|
|
int main() {
|
|
stdio_init_all();
|
|
printf("Hello RTC!\n");
|
|
|
|
char datetime_buf[256];
|
|
char *datetime_str = &datetime_buf[0];
|
|
|
|
// Start on Friday 5th of June 2020 15:45:00
|
|
datetime_t t = {
|
|
.year = 2020,
|
|
.month = 06,
|
|
.day = 05,
|
|
.dotw = 5, // 0 is Sunday, so 5 is Friday
|
|
.hour = 15,
|
|
.min = 45,
|
|
.sec = 00
|
|
};
|
|
|
|
// Start the RTC
|
|
rtc_init();
|
|
rtc_set_datetime(&t);
|
|
|
|
// clk_sys is >2000x faster than clk_rtc, so datetime is not updated immediately when rtc_get_datetime() is called.
|
|
// tbe delay is up to 3 RTC clock cycles (which is 64us with the default clock settings)
|
|
sleep_us(64);
|
|
|
|
// Print the time
|
|
while (true) {
|
|
rtc_get_datetime(&t);
|
|
datetime_to_str(datetime_str, sizeof(datetime_buf), &t);
|
|
printf("\r%s ", datetime_str);
|
|
sleep_ms(100);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
/// \end::hello_rtc_main[]
|