Add in a new common Delay_MS() function, which provides a blocking delay for all architectures.
Remove use of avr-libc specific ATOMIC_BLOCK, replace with a new per-architecture set of inline functions to retrieve and manipulate the global interrupt enable bit for each architecture. Add in documentation for the USB controller common interrupt routine which must be linked to the interrupt controller in the user application on the AVR32 UC3 architecture.
This commit is contained in:
parent
0c5afda7e8
commit
70284d390f
17 changed files with 196 additions and 97 deletions
|
@ -125,15 +125,17 @@
|
|||
{
|
||||
GCC_FORCE_POINTER_ACCESS(Buffer);
|
||||
|
||||
ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
|
||||
{
|
||||
Buffer->In = DataPtr;
|
||||
Buffer->Out = DataPtr;
|
||||
Buffer->Start = &DataPtr[0];
|
||||
Buffer->End = &DataPtr[Size];
|
||||
Buffer->Size = Size;
|
||||
Buffer->Count = 0;
|
||||
}
|
||||
uint_reg_t CurrentGlobalInt = USB_INT_GetGlobalEnableState();
|
||||
USB_INT_GlobalDisable();
|
||||
|
||||
Buffer->In = DataPtr;
|
||||
Buffer->Out = DataPtr;
|
||||
Buffer->Start = &DataPtr[0];
|
||||
Buffer->End = &DataPtr[Size];
|
||||
Buffer->Size = Size;
|
||||
Buffer->Count = 0;
|
||||
|
||||
USB_INT_SetGlobalEnableState(CurrentGlobalInt);
|
||||
}
|
||||
|
||||
/** Retrieves the minimum number of bytes stored in a particular buffer. This value is computed
|
||||
|
@ -153,11 +155,12 @@
|
|||
{
|
||||
uint16_t Count;
|
||||
|
||||
ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
|
||||
{
|
||||
Count = Buffer->Count;
|
||||
}
|
||||
uint_reg_t CurrentGlobalInt = USB_INT_GetGlobalEnableState();
|
||||
USB_INT_GlobalDisable();
|
||||
|
||||
Count = Buffer->Count;
|
||||
|
||||
USB_INT_SetGlobalEnableState(CurrentGlobalInt);
|
||||
return Count;
|
||||
}
|
||||
|
||||
|
@ -210,10 +213,12 @@
|
|||
if (++Buffer->In == Buffer->End)
|
||||
Buffer->In = Buffer->Start;
|
||||
|
||||
ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
|
||||
{
|
||||
Buffer->Count++;
|
||||
}
|
||||
uint_reg_t CurrentGlobalInt = USB_INT_GetGlobalEnableState();
|
||||
USB_INT_GlobalDisable();
|
||||
|
||||
Buffer->Count++;
|
||||
|
||||
USB_INT_SetGlobalEnableState(CurrentGlobalInt);
|
||||
}
|
||||
|
||||
/** Removes an element from the ring buffer.
|
||||
|
@ -235,10 +240,12 @@
|
|||
if (++Buffer->Out == Buffer->End)
|
||||
Buffer->Out = Buffer->Start;
|
||||
|
||||
ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
|
||||
{
|
||||
Buffer->Count--;
|
||||
}
|
||||
uint_reg_t CurrentGlobalInt = USB_INT_GetGlobalEnableState();
|
||||
USB_INT_GlobalDisable();
|
||||
|
||||
Buffer->Count--;
|
||||
|
||||
USB_INT_SetGlobalEnableState(CurrentGlobalInt);
|
||||
|
||||
return Data;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue