This anomaly applies to IC Rev. Engineering A, build codes QIAA-AA0.
SIZE.EPOUT[n] registers are not writable.
When a user tries to write SIZE.EPOUT[n] register to accept further OUT traffic ignoring current endpoint data and state.
Cannot use SIZE.EPOUT[n] register write to allow traffic on the endpoint.
void epout_drop(uint8_t n)
{
*((volatile uint32_t *)(0x40027800)) = 0x7C5 + (2u * n);
*((volatile uint32_t *)(0x40027804)) = 0;
(void)(*((volatile uint32_t *)(0x40027804)));
}
The code should be executed from critical region to make sure that nothing interrupts the above registers access sequence.