ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
ra8_icu.h
Go to the documentation of this file.
1
34
35#pragma once
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41#include <stdint.h>
42
43#include "ra8_elc_regs.h"
44#include "ra8_err.h"
45#include "ra8_icu_regs.h"
46
47/* =============================================================================
48 * IRQ pin configuration
49 * =============================================================================
50 */
51
70
71/* =============================================================================
72 * Lifecycle
73 * =============================================================================
74 */
75
97[[nodiscard]] ra8_err_t ra8_icu_init(void);
98
99/* =============================================================================
100 * External IRQ pin programming
101 * =============================================================================
102 */
103
132[[nodiscard]] ra8_err_t ra8_icu_configure_irq_pin(uint8_t irq_num, const ra8_icu_irq_cfg_t* cfg);
133
147[[nodiscard]] ra8_err_t ra8_icu_read_irqcr(uint8_t irq_num, uint8_t* out_val);
148
149/* =============================================================================
150 * NMI handling
151 * =============================================================================
152 */
153
173[[nodiscard]] ra8_err_t ra8_icu_nmi_enable(uint32_t mask);
174
185[[nodiscard]] ra8_err_t ra8_icu_nmi_disable(uint32_t mask);
186
197[[nodiscard]] ra8_err_t ra8_icu_nmi_clear(uint32_t mask);
198
209[[nodiscard]] ra8_err_t ra8_icu_nmi_status(uint32_t* out_status);
210
211#ifdef __cplusplus
212}
213#endif
Event Link Controller (ELC) register layout for the Renesas RA8D2.
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_icu_nmi_status(uint32_t *out_status)
Read the current NMISR value.
Definition ra8_icu.c:142
ra8_err_t ra8_icu_init(void)
Reset every ICU-owned register to its post-reset state.
Definition ra8_icu.c:45
ra8_err_t ra8_icu_nmi_enable(uint32_t mask)
Enable one or more NMI sources by OR'ing into NMIER.
Definition ra8_icu.c:119
ra8_err_t ra8_icu_nmi_clear(uint32_t mask)
Clear pending NMI status flags via NMICLR (HUM 14.2.15 p 544).
Definition ra8_icu.c:135
ra8_err_t ra8_icu_nmi_disable(uint32_t mask)
Disable NMI sources by clearing bits in NMIER.
Definition ra8_icu.c:127
ra8_err_t ra8_icu_read_irqcr(uint8_t irq_num, uint8_t *out_val)
Read the raw 8-bit IRQCRi value.
Definition ra8_icu.c:100
ra8_err_t ra8_icu_configure_irq_pin(uint8_t irq_num, const ra8_icu_irq_cfg_t *cfg)
Programme one IRQCRi register.
Definition ra8_icu.c:76
Interrupt Control Unit (ICU) register layout for the Renesas RA8D2.
ra8_icu_fclksel_t
IRQCRi.FCLKSEL[1:0] digital filter sampling clock (HUM 14.2.12 p 535).
ra8_icu_irqmd_t
IRQCRi.IRQMD[1:0] detection sense values (HUM 14.2.12 p 535).
One external-IRQ-pin configuration descriptor.
Definition ra8_icu.h:65
bool filter_en
True = enable digital filter.
Definition ra8_icu.h:68
ra8_icu_fclksel_t filter_div
Filter sampling clock divider.
Definition ra8_icu.h:67
ra8_icu_irqmd_t sense
Edge / level detection mode.
Definition ra8_icu.h:66