Correct UC3 global interrupt functions.

Replace all calls and references to _delay_ms() in the code with the architecture-agnostic Delay_MS() function.

Improve code generation for the Delay_MS() function on the AVR8 architecture when called with a constant input.
This commit is contained in:
Dean Camera 2011-04-08 05:05:05 +00:00
parent 70284d390f
commit de9bd767dc
9 changed files with 28 additions and 18 deletions

View file

@ -79,17 +79,17 @@
*
* // Turn on each of the four LEDs in turn
* LEDs_SetAllLEDs(LEDS_LED1);
* _delay_ms(500);
* Delay_MS(500);
* LEDs_SetAllLEDs(LEDS_LED1);
* _delay_ms(500);
* Delay_MS(500);
* LEDs_SetAllLEDs(LEDS_LED1);
* _delay_ms(500);
* Delay_MS(500);
* LEDs_SetAllLEDs(LEDS_LED1);
* _delay_ms(500);
* Delay_MS(500);
*
* // Turn on all LEDs
* LEDs_SetAllLEDs(LEDS_ALL_LEDS);
* _delay_ms(1000);
* Delay_MS(1000);
*
* // Turn on LED 1, turn off LED 2, leaving LEDs 3 and 4 in their current state
* LEDs_ChangeLEDs((LEDS_LED1 | LEDS_LED2), LEDS_LED1);

View file

@ -273,7 +273,7 @@ static void USB_Host_ResetDevice(void)
break;
}
_delay_ms(1);
Delay_MS(1);
}
if (HSOFIEnabled)

View file

@ -273,7 +273,7 @@ static void USB_Host_ResetDevice(void)
break;
}
_delay_ms(1);
Delay_MS(1);
}
if (HSOFIEnabled)

View file

@ -87,14 +87,15 @@
static inline uint_reg_t USB_INT_GetGlobalEnableState(void)
{
GCC_MEMORY_BARRIER();
return (__builtin_mfsr(AVR32_SR) & AVR32_SR_GM);
return __builtin_mfsr(AVR32_SR);
}
static inline void USB_INT_SetGlobalEnableState(uint_reg_t GlobalIntState) ATTR_ALWAYS_INLINE;
static inline void USB_INT_SetGlobalEnableState(uint_reg_t GlobalIntState)
{
GCC_MEMORY_BARRIER();
__builtin_ssrf(AVR32_SR_GM_OFFSET, GlobalIntState);
if (GlobalIntState & AVR32_SR_GM)
__builtin_ssrf(AVR32_SR_GM_OFFSET);
GCC_MEMORY_BARRIER();
}