Merge pull request #2868 from xobs/fix-usb-sleep-nrf

Fix usb sleep for NRF
This commit is contained in:
Scott Shawcroft 2020-05-21 10:24:11 -07:00 committed by GitHub
commit eea01c32b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 19 additions and 2 deletions

@ -1 +1 @@
Subproject commit 76bf96bcb0c12ba241ee4ecc175afb257e550d19
Subproject commit dc5445e2f45cb348a44fe24fc1be4bc8b5ba5bab

View File

@ -40,6 +40,8 @@
STATIC bool sd_is_enabled(void) {
uint8_t sd_en = 0;
if (__get_PRIMASK())
return false;
(void) sd_softdevice_is_enabled(&sd_en);
return sd_en;
}

View File

@ -51,8 +51,11 @@
#include "common-hal/rtc/RTC.h"
#include "common-hal/neopixel_write/__init__.h"
#include "shared-bindings/microcontroller/__init__.h"
#include "shared-bindings/rtc/__init__.h"
#include "lib/tinyusb/src/device/usbd.h"
#ifdef CIRCUITPY_AUDIOBUSIO
#include "common-hal/audiobusio/I2SOut.h"
#endif
@ -264,7 +267,17 @@ void port_sleep_until_interrupt(void) {
sd_app_evt_wait();
} else {
// Call wait for interrupt ourselves if the SD isn't enabled.
__WFI();
// Note that `wfi` should be called with interrupts disabled,
// to ensure that the queue is properly drained. The `wfi`
// instruction will returned as long as an interrupt is
// available, even though the actual handler won't fire until
// we re-enable interrupts.
common_hal_mcu_disable_interrupts();
if (!tud_task_event_ready()) {
__DSB();
__WFI();
}
common_hal_mcu_enable_interrupts();
}
}

View File

@ -49,7 +49,9 @@
//--------------------------------------------------------------------+
#define CFG_TUSB_RHPORT0_MODE OPT_MODE_DEVICE
#ifndef CFG_TUSB_DEBUG
#define CFG_TUSB_DEBUG 0
#endif
/*------------- RTOS -------------*/
#ifndef CFG_TUSB_OS