Driver for the External IRQ on RA6W1/RA6W2 MCUs. This module implements the External IRQ Interface.
Overview
The R_EXT_IRQ_W software module only implements the External IRQ Interface. The external_irq interface is for configuring interrupts to fire when a trigger condition is detected on an external IRQ pin.
- Note
- Multiple instances are used when more than one external interrupt is needed. Configure each instance with different channels and properties as needed for the specific interrupt.
Features
- Supports configuring interrupts for IRQ pins on the target MCUs
- Enabling and disabling interrupt generation.
- Configuring interrupt trigger on rising edge, falling edge, high level, or low level signal.
- Supports configuring a user callback function, which will be invoked by the HAL module when an external pin interrupt is generated.
Configuration
Build Time Configurations for r_ext_irq_w
The following build time configurations are defined in fsp_cfg/r_ext_irq_w_cfg.h:
| Configuration | Options | Default | Description |
| Parameter Checking |
-
Default (BSP)
-
Enabled
-
Disabled
| Default (BSP) | If selected code for parameter checking is included in the build. |
Configurations for Input > External IRQ (r_ext_irq_w)
This module can be added to the Stacks tab via New Stack > Input > External IRQ (r_ext_irq_w).
| Configuration | Options | Default | Description |
| Name | Name must be a valid C symbol | g_external_irq0 | Module name. |
| Channel | Value must be an integer between 0 and 30 | 0 | Specify the hardware channel. |
| Trigger | MCU Specific Options | | Select the signal edge or state that triggers an interrupt. |
| Callback | Name must be a valid C symbol | NULL | A user callback function can be provided here. If this callback function is provided, it is called from the interrupt service routine (ISR) each time the IRQn triggers |
| Pin Interrupt Priority | MCU Specific Options | | Select the PIN interrupt priority. |
Clock Configuration
No specific clock settings are required.
Pin Configuration
The pin for the external interrupt channel must be configured as an input with IRQ Input Enabled.
Limitation
Pin configuration does not show conflicts when same IRQ is used by multiple pins.
Usage Notes
Wake Up
When the following pins are used as IRQs and the trigger is set to rising or falling, the pins will be used as wake up pin.
- P0_00
- P0_08
- P0_09
- P0_10
- P0_11
- P0_12
- P0_13
- P1_10
- P1_11
- P1_12
- P1_13
Examples
Basic Example
This is a basic example of minimal use of the EXT_IRQ in an application.
#define EXT_IRQ_W_IRQN_PIN BSP_IO_PORT_01_PIN_12
#define EXT_IRQ_W_TRIGGER_PIN BSP_IO_PORT_00_PIN_10
#define EXT_IRQ_W_IRQN 0
{
(void) p_args;
g_external_irq_complete = 1;
}
void simple_example (void)
{
{
.p_callback = external_irq_callback,
.p_context = 0,
.ipl = 2,
};
assert(FSP_SUCCESS == err);
assert(FSP_SUCCESS == err);
while (0 == g_external_irq_complete)
{
}
}
◆ ext_irq_w_extended_cfg_t
| struct ext_irq_w_extended_cfg_t |
Extended EXT_IRQ interface configuration
◆ ext_irq_w_instance_ctrl_t
| struct ext_irq_w_instance_ctrl_t |
EXT_IRQ private control block. DO NOT MODIFY. Initialization occurs when R_EXT_IRQ_W_ExternalIrqOpen is called.
◆ p_context
| void* ext_irq_w_instance_ctrl_t::p_context |
◆ R_EXT_IRQ_W_ExternalIrqOpen()
Configure an IRQ input pin for use with the external interrupt interface. Implements external_irq_api_t::open.
The Open function is responsible for preparing an external IRQ pin for operation.
- Return values
-
| FSP_SUCCESS | Open successful. |
| FSP_ERR_ASSERTION | One of the following is invalid:
|
| FSP_ERR_ALREADY_OPEN | The channel specified has already been opened. No configurations were changed. Call the associated Close function to reconfigure the channel. |
| FSP_ERR_IP_CHANNEL_NOT_PRESENT | The channel requested in p_cfg is not available on the device selected in r_bsp_cfg.h. |
| FSP_ERR_INVALID_ARGUMENT | p_cfg->p_callback is not NULL, but ISR is not enabled. ISR must be enabled to use callback function. |
| FSP_ERR_UNSUPPORTED | An input argument is not supported by selected mode. |
- Note
- This function is reentrant for different channels. It is not reentrant for the same channel.
◆ R_EXT_IRQ_W_ExternalIrqEnable()
Enable external interrupt for specified channel at NVIC. Implements external_irq_api_t::enable.
- Return values
-
| FSP_SUCCESS | Interrupt Enabled successfully. |
| FSP_ERR_ASSERTION | The p_ctrl parameter was null. |
| FSP_ERR_NOT_OPEN | The channel is not opened. |
◆ R_EXT_IRQ_W_ExternalIrqDisable()
Disable external interrupt for specified channel at NVIC. Implements external_irq_api_t::disable.
- Return values
-
| FSP_SUCCESS | Interrupt disabled successfully. |
| FSP_ERR_ASSERTION | The p_ctrl parameter was null. |
| FSP_ERR_NOT_OPEN | The channel is not opened. |
◆ R_EXT_IRQ_W_ExternalIrqCallbackSet()
Updates the user callback and has option of providing memory for callback structure. Implements external_irq_api_t::callbackSet
- Return values
-
| FSP_SUCCESS | Callback updated successfully. |
| FSP_ERR_ASSERTION | A required pointer is NULL. |
| FSP_ERR_NOT_OPEN | The control block has not been opened. |
| FSP_ERR_NO_CALLBACK_MEMORY | p_callback is non-secure and p_callback_memory is either secure or NULL. |
◆ R_EXT_IRQ_W_ExternalIrqClose()
Close the external interrupt channel. Implements external_irq_api_t::close.
- Return values
-
| FSP_SUCCESS | Successfully closed. |
| FSP_ERR_ASSERTION | The parameter p_ctrl is NULL. |
| FSP_ERR_NOT_OPEN | The channel is not opened. |