45#define MAX_INTERRUPT_SOURCES 7
57 void (*
handler) (
const uint32_t,
const uint32_t);
67#if (SAM3S || SAM4S || SAM4E)
110#if (SAM3S || SAM4S || SAM4E)
133 uint32_t ul_attr,
void (*p_handler) (uint32_t, uint32_t))
144 if (pSource->
id == ul_id && pSource->
mask == ul_mask) {
151 pSource->
mask = ul_mask;
152 pSource->
attr = ul_attr;
164#if (SAM3S || SAM4S || SAM4E)
193 void (*p_handler) (uint32_t, uint32_t))
199 return pio_handler_set(p_pio, group_id, group_mask, ul_flag, p_handler);
239void PIOD_Handler(
void)
250void PIOE_Handler(
void)
261void PIOF_Handler(
void)
276 uint32_t bitmask = 0;
281 NVIC_DisableIRQ(ul_irqn);
282 NVIC_ClearPendingIRQ(ul_irqn);
283 NVIC_SetPriority(ul_irqn, ul_priority);
284 NVIC_EnableIRQ(ul_irqn);
void pio_configure_interrupt(Pio *p_pio, const uint32_t ul_mask, const uint32_t ul_attr)
Configure the given interrupt source.
void pio_disable_interrupt(Pio *p_pio, const uint32_t ul_mask)
Disable a given interrupt source, with no added side effects.
uint32_t pio_get_pin_group_mask(uint32_t pin)
Return GPIO port pin mask for a GPIO pin.
void pio_enable_interrupt(Pio *p_pio, const uint32_t ul_mask)
Enable the given interrupt source.
uint32_t pio_get_interrupt_status(const Pio *p_pio)
Read and clear PIO interrupt status.
uint32_t pio_get_pin_group_id(uint32_t pin)
Return GPIO port peripheral ID for a GPIO pin.
uint32_t pio_get_interrupt_mask(const Pio *p_pio)
Read PIO interrupt mask.
uint32_t pio_capture_enable_flag
Pio * pio_get_pin_group(uint32_t pin)
Return GPIO port for a GPIO pin.
Parallel Input/Output (PIO) Controller driver for SAM.
uint32_t pio_handler_set(Pio *p_pio, uint32_t ul_id, uint32_t ul_mask, uint32_t ul_attr, void(*p_handler)(uint32_t, uint32_t))
Set an interrupt handler for the provided pins.
void pio_handler_set_priority(Pio *p_pio, IRQn_Type ul_irqn, uint32_t ul_priority)
Initialize PIO interrupt management logic.
static void(* pio_capture_handler)(Pio *)
static struct s_interrupt_source gs_interrupt_sources[MAX_INTERRUPT_SOURCES]
void pio_handler_process(Pio *p_pio, uint32_t ul_id)
Process an interrupt request on the given PIO controller.
void pio_capture_handler_set(void(*p_handler)(Pio *))
Set a capture interrupt handler for all PIO.
#define MAX_INTERRUPT_SOURCES
Maximum number of interrupt sources that can be defined.
static uint32_t gs_ul_nb_sources
Parallel Input/Output (PIO) interrupt handler for SAM.
uint32_t pio_handler_set_pin(uint32_t ul_pin, uint32_t ul_flag, void(*p_handler)(uint32_t, uint32_t))
#define PIOA
(PIOA ) Base Address
#define ID_PIOA
Parallel I/O Controller A (PIOA).
#define ID_PIOB
Parallel I/O Controller B (PIOB).
enum IRQn IRQn_Type
< Interrupt Number Definition
#define PIOB
(PIOB ) Base Address
#define PIOC
(PIOC ) Base Address
#define ID_PIOC
Parallel I/O Controller C (PIOC).
Describes a PIO interrupt source, including the PIO instance triggering the interrupt and the associa...
void(* handler)(const uint32_t, const uint32_t)