Xmega Application Note


Global interrupt management

Collaboration diagram for Global interrupt management:

Modules

 Deprecated interrupt definitions

Defines

#define cpu_irq_is_enabled()   cpu_irq_is_enabled_flags(SREG)
#define cpu_irq_is_enabled()   cpu_irq_is_enabled_flags(sysreg_read(AVR32_SR))
#define irq_initialize_vectors()   PMIC.CTRL = PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_HILVLEN_bm;
 Initialize interrupt vectors Enables all interrupt levels, with vectors located in the application section and fixed priority scheduling.

Typedefs

typedef uint8_t irqflags_t

Global interrupt flags



typedef uint32_t irqflags_t
 Type used for holding state of interrupt flag.
static bool cpu_irq_is_enabled_flags (irqflags_t flags)
 Check if interrupts are globally enabled in supplied flags.
static void cpu_irq_restore (irqflags_t flags)
 Restore global interrupt flags.
static irqflags_t cpu_irq_save (void)
 Get and clear the global interrupt flags.
#define cpu_irq_disable()   __disable_interrupt()
 Disable interrupts globally.
#define cpu_irq_enable()   __enable_interrupt()
 Enable interrupts globally.

Global interrupt levels



static bool cpu_irq_level_is_enabled_flags (irqflags_t flags, uint32_t level)
 Check if interrupt level is enabled in supplied flags.
#define cpu_irq_level_is_enabled(level)
 Check if interrupt level is enabled.

Detailed Description

This is a driver for global enabling and disabling of interrupts.


Define Documentation

 
#define cpu_irq_disable (  )     __disable_interrupt()

Disable interrupts globally.

Referenced by cpu_irq_save(), and sleepmgr_enter_sleep().

 
#define cpu_irq_enable (  )     __enable_interrupt()

Enable interrupts globally.

Referenced by sleepmgr_enter_sleep().

 
#define cpu_irq_is_enabled (  )     cpu_irq_is_enabled_flags(SREG)

Definition at line 115 of file interrupt_avr8.h.

 
#define cpu_irq_is_enabled (  )     cpu_irq_is_enabled_flags(sysreg_read(AVR32_SR))

Definition at line 184 of file interrupt_avr32.h.

#define cpu_irq_level_is_enabled ( level   ) 
Value:
cpu_irq_level_is_enabled_flags(sysreg_read(AVR32_SR),             \
                        TPASTE3(AVR32_SR_I, level, M_OFFSET))

Check if interrupt level is enabled.

Parameters:
level Interrupt level (0 to 3).
Returns:
True if interrupt level level is enabled.
Note:
The interrupt level must be known at compile time.

Definition at line 212 of file interrupt_avr32.h.

 
#define irq_initialize_vectors (  )     PMIC.CTRL = PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_HILVLEN_bm;

Initialize interrupt vectors Enables all interrupt levels, with vectors located in the application section and fixed priority scheduling.

Definition at line 78 of file interrupt_avr8.h.


Typedef Documentation

typedef uint8_t irqflags_t

Definition at line 89 of file interrupt_avr8.h.

Type used for holding state of interrupt flag.

Definition at line 161 of file interrupt_avr32.h.


Function Documentation

bool cpu_irq_is_enabled_flags ( irqflags_t  flags  )  [inline, static]

Check if interrupts are globally enabled in supplied flags.

Parameters:
flags Currents state of interrupt flags.
Returns:
True if interrupts are enabled.

Definition at line 104 of file interrupt_avr8.h.

00105 {
00106 #if XMEGA
00107 #  ifdef __GNUC__
00108         return flags & CPU_I_bm;
00109 #  else
00110         return flags & I_bm;
00111 #  endif
00112 #endif /* XMEGA */
00113 }

static bool cpu_irq_level_is_enabled_flags ( irqflags_t  flags,
uint32_t  level 
) [inline, static]

Check if interrupt level is enabled in supplied flags.

Parameters:
flags State of interrupt flags.
level Bit position for interrupt level.
Returns:
True if interrupt level is enabled.

Definition at line 197 of file interrupt_avr32.h.

00199 {
00200         return !(flags & (1 << level));
00201 }

void cpu_irq_restore ( irqflags_t  flags  )  [inline, static]
irqflags_t cpu_irq_save ( void   )  [inline, static]
@DOC_TITLE@
Generated on Fri Oct 22 12:15:26 2010 for AVR1300 Using the Xmega ADC by doxygen 1.6.3