pimoroni-pico/libraries/breakout_rtc
thirdr 5ab626e983 RV3028: C/C++ Library docs 2024-06-11 16:12:35 +01:00
..
CMakeLists.txt
README.md
breakout_rtc.cmake
breakout_rtc.cpp
breakout_rtc.hpp

README.md

RV3028 Breakout (C/C++)

An ultra-low-power ( ~100 nA), highly accurate real-time clock breakout. The RV3028 RTC breakout is perfect for adding timekeeping to your project and, thanks to the tiny on-board battery, it'll keep time when your device is powered off. Like all the best timepieces, it's Swiss-made!

Available here: https://shop.pimoroni.com/products/rv3028-real-time-clock-rtc-breakout

Example Program

Example program shows how to setup the RV3028, set the date and time and output it once a second.

#include "pico/stdlib.h"
#include "breakout_rtc.hpp"

using namespace pimoroni;

I2C i2c(BOARD::BREAKOUT_GARDEN);
BreakoutRTC rtc(&i2c);

int main() {
	
	stdio_init_all();

	if(!rtc.init()) {
		printf("Init failed! Check your connections and i2c pin choices.\n");
	}

	rtc.enable_periodic_update_interrupt(true);

	rtc.set_time(10, 10, 10, 7, 12, 9, 2024);

	while(true) {
		if(rtc.read_periodic_update_interrupt_flag()) {
			rtc.clear_periodic_update_interrupt_flag();

			if(rtc.update_time()) {
				printf("Date: %s, Time: %s\n", rtc.string_date(), rtc.string_time());

			}
		}

	sleep_ms(100);

}

return 0;

}

Functions

bool init()

Initializes the RV3028. Returns true if successful or false if something went wrong.

Example

I2C i2c(BOARD::BREAKOUT_GARDEN);
BreakoutRTC rtc(&i2c);

rtc.init();

bool setup()

Sets the RTC to 24 Hour Mode, disables the Trickle Charge and sets Level Switching Mode to 3.

bool set_time(uint8_t sec, uint8_t min, uint8_t hour, uint8_t weekday, uint8_t date, uint8_t month, uint16_t year)

Set the time and date on the RTC. Returns true if successful and false if something went wrong.

You can also set a time or date element individually with:

set_seconds(uint8_t value), set_minutes(uint8_t value), set_hours(uint8_t value), set_weekday(uint8_t value), set_date(uint8_t value), set_month(uint8_t value) and set_year(uint8_t value)

void set_24_hour()

Set the RTC to output 0-23 Hours. This function will convert any current hour to 2 Hour Mode.

void set_12_hour()

Set the RTC to output 1-12 Hours. This function will convert any current hour to 12 Hour Mode.

bool is_12_hour()

Returns true if the RV3028 has been configured for 12 Hour mode.

bool is_pm()

Returns true if the RTC has the PM bit set and the 12 Hour bit set

bool update_time()

This function moves the data from the RV3028 registers to an array. You need to call this function before printing the time and date. The function returns true if successful and false if something went wrong.

char* string_time()

Returns a pointer to array of chars that represents the time in hh:mm:ss format. Adds AM/PM if in 12 hour mode. You will need to call update_time() to get the current time from the RTC before using this function.

char* string_date()

Returns a pointer to array of chars that are the date in dd/mm/yyyy format. You will need to call update_time() to get the current date from the RTC before using this function.

void enable_periodic_update_interrupt(bool every_second, bool enable_clock_output)

Enables the periodic update interrupt.

void disable_periodic_update_interrupt()

Disables the periodic update interrupt.

bool read_periodic_update_interrupt_flag()

Read the periodic update interrupt flag. Returns a boolean value.

void clear_periodic_update_interrupt_flag()

Clear the periodic update interrupt flag.

uint32_t get_unix()

Get the UNIX Time from the RTC

bool set_unix(uint32_t value)

Set the UNIX Time on the RTC. Returns true if successful and false if something went wrong.

IMPORTANT: The Real Time and the UNIX time are independent of each other. Setting the UNIX time will not update the Real Time (Hours, minutes, seconds etc)

bool set_backup_switchover_mode(uint8_t val)

Set the backup switchover mode of the RTC. Accepts values 0-3.

0 = Switchover disabled 1 = Direct Switching Mode 2 = Standby Mode 3 = Level Switching Mode

Function returns true if successful and false if something went wrong.