121 lines
2.5 KiB
C++
121 lines
2.5 KiB
C++
#include <cstdio>
|
|
|
|
#include <stdio.h>
|
|
#include "pico/stdlib.h"
|
|
|
|
#include "pcf85063a.hpp"
|
|
|
|
using namespace pimoroni;
|
|
|
|
|
|
|
|
void led_on() {
|
|
}
|
|
|
|
void led_off() {
|
|
|
|
}
|
|
|
|
int main() {
|
|
// turn on led to show we're awake
|
|
gpio_set_function(6, GPIO_FUNC_SIO);
|
|
gpio_set_dir(6, GPIO_OUT);
|
|
gpio_put(6, true);
|
|
|
|
// keep the pico awake by holding vsys_en high
|
|
gpio_set_function(2, GPIO_FUNC_SIO);
|
|
gpio_set_dir(2, GPIO_OUT);
|
|
gpio_put(2, true);
|
|
|
|
// init usb serial for debugging and give our terminal monitor a bit of
|
|
// time to connect
|
|
stdio_init_all();
|
|
sleep_ms(500);
|
|
|
|
printf("\n\n\n");
|
|
printf("PCF85063A rtc demo!\n");
|
|
printf("===================\n");
|
|
sleep_ms(500);
|
|
|
|
printf("initialise rtc.. ");
|
|
I2C i2c(4, 5);
|
|
PCF85063A rtc(&i2c);
|
|
rtc.init();
|
|
printf("done!\n");
|
|
printf("\n");
|
|
|
|
printf("check clock function\n");
|
|
printf("\n");
|
|
|
|
printf("- setting date and time\n");
|
|
printf(" > 30/5/2022 08:07:12\n");
|
|
datetime_t now = {
|
|
.year = 2022, .month = 5, .day = 30, .hour = 8, .min = 7, .sec = 12
|
|
};
|
|
rtc.set_datetime(&now);
|
|
|
|
printf("\n");
|
|
printf("- sleeping for 3 seconds\n");
|
|
sleep_ms(3000);
|
|
|
|
printf("\n");
|
|
printf("- reading date and time\n");
|
|
now = rtc.get_datetime();
|
|
printf(" > %02d/%02d/%04d %02d:%02d:%02d\n",
|
|
now.day, now.month, now.year, now.hour, now.min, now.sec);
|
|
printf("\n");
|
|
|
|
printf("check alarm function\n");
|
|
printf("\n");
|
|
|
|
printf("- setting alarm for in 6 seconds\n");
|
|
printf(" > 08:07:21\n");
|
|
rtc.set_alarm(21, 7, 8);
|
|
|
|
printf("\n");
|
|
printf("- waiting for alarm flag\n");
|
|
|
|
while(!rtc.read_alarm_flag()) {
|
|
tight_loop_contents();
|
|
}
|
|
|
|
printf("\n");
|
|
printf("- alarm triggered at\n");
|
|
now = rtc.get_datetime();
|
|
printf(" > %02d/%02d/%04d %02d:%02d:%02d\n",
|
|
now.day, now.month, now.year, now.hour, now.min, now.sec);
|
|
printf("\n");
|
|
|
|
printf("- clear alarm flag\n");
|
|
rtc.clear_alarm_flag();
|
|
|
|
|
|
printf("check timer function\n");
|
|
printf("\n");
|
|
|
|
printf("- setting timer for in 5 seconds\n");
|
|
rtc.set_timer(5);
|
|
|
|
printf("\n");
|
|
printf("- waiting for timer flag\n");
|
|
|
|
while(!rtc.read_timer_flag()) {
|
|
tight_loop_contents();
|
|
}
|
|
|
|
printf("\n");
|
|
printf("- timer triggered at\n");
|
|
now = rtc.get_datetime();
|
|
printf(" > %02d/%02d/%04d %02d:%02d:%02d\n",
|
|
now.day, now.month, now.year, now.hour, now.min, now.sec);
|
|
printf("\n");
|
|
|
|
printf("- clear timer flag\n");
|
|
rtc.clear_alarm_flag();
|
|
|
|
printf("\n");
|
|
printf("tests complete\n");
|
|
|
|
return 0;
|
|
}
|