ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_rtc.h
Go to the documentation of this file.
1
11
12#pragma once
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18#include <stdint.h>
19
20#include "ra8_err.h"
21
31typedef struct {
32 uint16_t year;
33 uint8_t month;
34 uint8_t day;
35 uint8_t weekday;
36 uint8_t hour;
37 uint8_t minute;
38 uint8_t second;
40
57typedef enum : uint8_t {
61
106
117[[nodiscard]] ra8_err_t ra8_rtc_init(void);
118
124[[nodiscard]] ra8_err_t ra8_rtc_set(const ra8_rtc_datetime_t* dt);
125
131[[nodiscard]] ra8_err_t ra8_rtc_get(ra8_rtc_datetime_t* out);
132
143
148typedef void (*ra8_rtc_event_fn_t)(void* ctx, uint8_t status_mask);
149
182[[nodiscard]] ra8_err_t ra8_rtc_set_alarm(const ra8_rtc_datetime_t* alarm);
183
188[[nodiscard]] ra8_err_t ra8_rtc_deinit(void);
189
194[[nodiscard]] ra8_err_t ra8_rtc_set_irq_enable(uint8_t mask);
195
200[[nodiscard]] ra8_err_t ra8_rtc_get_status(uint8_t* out_mask);
201
206[[nodiscard]] ra8_err_t ra8_rtc_clear_status(uint8_t mask);
207
212[[nodiscard]] ra8_err_t ra8_rtc_attach_handler(ra8_rtc_event_fn_t fn, void* ctx);
213
232void ra8_rtc_dispatch(void);
233
238[[nodiscard]] ra8_err_t ra8_rtc_enter_stop(void);
239
244[[nodiscard]] ra8_err_t ra8_rtc_exit_stop(void);
245
246#ifdef __cplusplus
247}
248#endif
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Definition ra8_err.h:546
ra8_err_t ra8_rtc_clock_init(ra8_rtc_clk_src_t src)
Bring up and select the RTC count source (HUM Fig 26.3).
Definition ra8_rtc.c:260
ra8_err_t ra8_rtc_set_alarm(const ra8_rtc_datetime_t *alarm)
Programme the alarm-match registers (hour/minute/second).
Definition ra8_rtc.c:437
void(* ra8_rtc_event_fn_t)(void *ctx, uint8_t status_mask)
RTC event callback.
Definition ra8_rtc.h:148
ra8_err_t ra8_rtc_init(void)
Start the RTC in 24-hour calendar mode.
Definition ra8_rtc.c:308
ra8_err_t ra8_rtc_deinit(void)
Tear down the RTC (stop counter + disable IRQs).
Definition ra8_rtc.c:486
ra8_err_t ra8_rtc_clear_status(uint8_t mask)
Clear RCR1 IRQ enable bits.
Definition ra8_rtc.c:513
ra8_rtc_clk_src_t
RTC count-source selection (RCR4.RCKSEL encoding).
Definition ra8_rtc.h:57
@ k_ra8_rtc_clk_subclock
RCKSEL=0: 32.768 kHz sub-clock crystal (SOSC).
Definition ra8_rtc.h:58
@ k_ra8_rtc_clk_loco
RCKSEL=1: internal LOCO (~32.768 kHz, crystal-free).
Definition ra8_rtc.h:59
ra8_err_t ra8_rtc_set(const ra8_rtc_datetime_t *dt)
Write the calendar registers.
Definition ra8_rtc.c:343
ra8_rtc_irq_mask_t
RCR1 IRQ enable bits.
Definition ra8_rtc.h:137
@ k_ra8_rtc_irq_periodic
RCR1.PIE.
Definition ra8_rtc.h:141
@ k_ra8_rtc_irq_carry
RCR1.CIE.
Definition ra8_rtc.h:140
@ k_ra8_rtc_irq_alarm
RCR1.AIE.
Definition ra8_rtc.h:139
@ k_ra8_rtc_irq_none
RA8 rtc IRQ none.
Definition ra8_rtc.h:138
ra8_err_t ra8_rtc_get(ra8_rtc_datetime_t *out)
Read the calendar registers.
Definition ra8_rtc.c:385
ra8_err_t ra8_rtc_exit_stop(void)
Restart the RTC counter from stop.
Definition ra8_rtc.c:546
ra8_err_t ra8_rtc_get_status(uint8_t *out_mask)
Read RCR1 IRQ enable bits.
Definition ra8_rtc.c:506
ra8_err_t ra8_rtc_set_irq_enable(uint8_t mask)
Enable one or more RTC IRQ sources via RCR1.
Definition ra8_rtc.c:498
ra8_err_t ra8_rtc_attach_handler(ra8_rtc_event_fn_t fn, void *ctx)
Attach a callback for the RTC alarm / periodic event.
Definition ra8_rtc.c:520
void ra8_rtc_dispatch(void)
Dispatch an RTC event – snapshot RCR1 + fire callback.
Definition ra8_rtc.c:527
ra8_err_t ra8_rtc_enter_stop(void)
Stop the RTC counter for low-power mode.
Definition ra8_rtc.c:537
Calendar date + time decoded from BCD.
Definition ra8_rtc.h:31
uint8_t hour
0..23.
Definition ra8_rtc.h:36
uint8_t day
1..31.
Definition ra8_rtc.h:34
uint8_t minute
0..59.
Definition ra8_rtc.h:37
uint8_t second
0..59.
Definition ra8_rtc.h:38
uint8_t month
1..12.
Definition ra8_rtc.h:33
uint16_t year
2000..2099.
Definition ra8_rtc.h:32
uint8_t weekday
0 (Sun) .
Definition ra8_rtc.h:35