Go to the documentation of this file.
35 #ifndef _AVR_INTERRUPT_H_
36 #define _AVR_INTERRUPT_H_
40 #if !defined(__DOXYGEN__) && !defined(__STRINGIFY)
42 #define __STRINGIFY(x) #x
66 #if defined(__DOXYGEN__)
81 # define sei() __asm__ __volatile__ ("sei" ::: "memory")
84 #if defined(__DOXYGEN__)
99 # define cli() __asm__ __volatile__ ("cli" ::: "memory")
106 #if defined(__DOXYGEN__)
125 # define ISR(vector, [attributes])
128 #if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
129 # define __INTR_ATTRS used, externally_visible
131 # define __INTR_ATTRS used
135 # define ISR(vector, ...) \
136 extern "C" void vector (void) __attribute__ ((signal,__INTR_ATTRS)) __VA_ARGS__; \
139 # define ISR(vector, ...) \
140 void vector (void) __attribute__ ((signal,__INTR_ATTRS)) __VA_ARGS__; \
146 #if defined(__DOXYGEN__)
156 # define SIGNAL(vector)
160 # define SIGNAL(vector) \
161 extern "C" void vector(void) __attribute__ ((signal, __INTR_ATTRS)); \
164 # define SIGNAL(vector) \
165 void vector (void) __attribute__ ((signal, __INTR_ATTRS)); \
171 #if defined(__DOXYGEN__)
180 # define EMPTY_INTERRUPT(vector)
184 # define EMPTY_INTERRUPT(vector) \
185 extern "C" void vector(void) __attribute__ ((signal,naked,__INTR_ATTRS)); \
186 void vector (void) { __asm__ __volatile__ ("reti" ::); }
188 # define EMPTY_INTERRUPT(vector) \
189 void vector (void) __attribute__ ((signal,naked,__INTR_ATTRS)); \
190 void vector (void) { __asm__ __volatile__ ("reti" ::); }
195 #if defined(__DOXYGEN__)
224 # define ISR_ALIAS(vector, target_vector)
228 # if defined(__AVR_MEGA__) && __AVR_MEGA__
229 # define ISR_ALIAS(vector, tgt) extern "C" void vector (void) \
230 __attribute__((signal, naked, __INTR_ATTRS)); \
231 void vector (void) { asm volatile ("jmp " __STRINGIFY(tgt) ::); }
233 # define ISR_ALIAS(vector, tgt) extern "C" void vector (void) \
234 __attribute__((signal, naked, __INTR_ATTRS)); \
235 void vector (void) { asm volatile ("rjmp " __STRINGIFY(tgt) ::); }
238 # if defined(__AVR_MEGA__) && __AVR_MEGA__
239 # define ISR_ALIAS(vector, tgt) void vector (void) \
240 __attribute__((signal, naked, __INTR_ATTRS)); \
241 void vector (void) { asm volatile ("jmp " __STRINGIFY(tgt) ::); }
243 # define ISR_ALIAS(vector, tgt) void vector (void) \
244 __attribute__((signal, naked, __INTR_ATTRS)); \
245 void vector (void) { asm volatile ("rjmp " __STRINGIFY(tgt) ::); }
251 #if defined(__DOXYGEN__)
264 # define reti() __asm__ __volatile__ ("reti" ::)
267 #if defined(__DOXYGEN__)
280 # define BADISR_vect __vector_default
285 #if defined(__DOXYGEN__)
334 # define ISR_ALIASOF(target_vector)
337 # define ISR_NOBLOCK __attribute__((interrupt))
338 # define ISR_NAKED __attribute__((naked))
339 # define ISR_ALIASOF(v) __attribute__((alias(__STRINGIFY(v))))
Automatically generated by Doxygen 1.8.7 on Tue Jul 8 2014. Dash Docset conversion by Matt Kane