RTEMS  5.1
pio_it.h
Go to the documentation of this file.
1 /* ---------------------------------------------------------------------------- */
2 /* Atmel Microcontroller Software Support */
3 /* SAM Software Package License */
4 /* ---------------------------------------------------------------------------- */
5 /* Copyright (c) 2015, Atmel Corporation */
6 /* */
7 /* All rights reserved. */
8 /* */
9 /* Redistribution and use in source and binary forms, with or without */
10 /* modification, are permitted provided that the following condition is met: */
11 /* */
12 /* - Redistributions of source code must retain the above copyright notice, */
13 /* this list of conditions and the disclaimer below. */
14 /* */
15 /* Atmel's name may not be used to endorse or promote products derived from */
16 /* this software without specific prior written permission. */
17 /* */
18 /* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR */
19 /* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
20 /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE */
21 /* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, */
22 /* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
23 /* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
24 /* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
25 /* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
26 /* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */
27 /* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
28 /* ---------------------------------------------------------------------------- */
29 
61 #ifndef _PIO_IT_
62 #define _PIO_IT_
63 
64 /*
65  * Headers
66  */
67 
68 #include "pio.h"
69 #include <rtems.h>
70 
71 #ifdef __cplusplus
72 extern "C" {
73 #endif
74 
75 /*
76  * Global functions
77  */
78 
79 extern void PIO_InitializeInterrupts(uint32_t dwPriority);
80 
81 extern void PIO_ConfigureIt(const Pin *pPin,
82  void (*handler)(const Pin *, void *arg), void *arg);
83 
84 extern rtems_status_code PIO_RemoveIt(const Pin *pPin,
85  void (*handler)(const Pin *, void *arg), void *arg);
86 
93 static inline void PIO_EnableIt(const Pin *pPin)
94 {
95  pPin->pio->PIO_ISR;
96  pPin->pio->PIO_IER = pPin->mask;
97 }
98 
104 static inline void PIO_DisableIt(const Pin *pPin)
105 {
106  pPin->pio->PIO_IDR = pPin->mask;
107 }
108 
114 static inline bool PIO_ItIsActive(const Pin *pPin)
115 {
116  return ((pPin->pio->PIO_IMR & pPin->mask) != 0);
117 }
118 
119 extern void PIO_IT_InterruptHandler(void);
120 
121 extern void PioInterruptHandler(uint32_t id, Pio *pPio);
122 
123 extern void PIO_CaptureHandler(void);
124 
125 #ifdef __cplusplus
126 }
127 #endif
128 
129 #endif /* #ifndef _PIO_IT_ */
130 
__O uint32_t PIO_IER
(Pio Offset: 0x0040) Interrupt Enable Register
Definition: component_pio.h:58
__I uint32_t PIO_IMR
(Pio Offset: 0x0048) Interrupt Mask Register
Definition: component_pio.h:60
Definition: pio.h:172
__O uint32_t PIO_IDR
(Pio Offset: 0x0044) Interrupt Disable Register
Definition: component_pio.h:59
rtems_status_code PIO_RemoveIt(const Pin *pPin, void(*handler)(const Pin *, void *arg), void *arg)
Definition: pio_it.c:299
rtems_status_code
Classic API Status.
Definition: status.h:43
Pio hardware registers.
Definition: component_pio.h:41
void PIO_CaptureHandler(void)
The PIO_CaptureHandler must be called by the PIO Capture Interrupt Service Routine with the correspon...
Definition: pio_capture.c:113
__I uint32_t PIO_ISR
(Pio Offset: 0x004C) Interrupt Status Register
Definition: component_pio.h:61
void PIO_ConfigureIt(const Pin *pPin, void(*handler)(const Pin *, void *arg), void *arg)
Definition: pio_it.c:264