summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Epler <jepler@gmail.com>2020-05-13 10:39:40 -0500
committerJeff Epler <jepler@gmail.com>2020-05-13 10:40:36 -0500
commit011acf41c0d5c369fabf5a45976c63b433baa546 (patch)
tree6450adedb40592994efac382054a4b0f8c12339e
parent75f9969860870a4ae636c74ae210275413b13c2f (diff)
nrf: Ensure ticks enabled while playing audio
-rw-r--r--ports/nrf/common-hal/audiobusio/I2SOut.c7
-rw-r--r--ports/nrf/common-hal/audiopwmio/PWMAudioOut.c6
2 files changed, 13 insertions, 0 deletions
diff --git a/ports/nrf/common-hal/audiobusio/I2SOut.c b/ports/nrf/common-hal/audiobusio/I2SOut.c
index 2fa28afac..9db650453 100644
--- a/ports/nrf/common-hal/audiobusio/I2SOut.c
+++ b/ports/nrf/common-hal/audiobusio/I2SOut.c
@@ -31,6 +31,7 @@
#include "common-hal/audiobusio/I2SOut.h"
#include "shared-bindings/audiobusio/I2SOut.h"
#include "shared-module/audiocore/__init__.h"
+#include "supervisor/shared/tick.h"
#include "py/obj.h"
#include "py/runtime.h"
@@ -211,6 +212,8 @@ void common_hal_audiobusio_i2sout_construct(audiobusio_i2sout_obj_t* self,
NRF_I2S->CONFIG.ALIGN = I2S_CONFIG_ALIGN_ALIGN_Left;
NRF_I2S->CONFIG.FORMAT = left_justified ? I2S_CONFIG_FORMAT_FORMAT_Aligned
: I2S_CONFIG_FORMAT_FORMAT_I2S;
+
+ supervisor_enable_tick();
}
bool common_hal_audiobusio_i2sout_deinited(audiobusio_i2sout_obj_t* self) {
@@ -230,6 +233,7 @@ void common_hal_audiobusio_i2sout_deinit(audiobusio_i2sout_obj_t* self) {
reset_pin_number(self->data_pin_number);
self->data_pin_number = 0xff;
instance = NULL;
+ supervisor_disable_tick();
}
void common_hal_audiobusio_i2sout_play(audiobusio_i2sout_obj_t* self,
@@ -340,5 +344,8 @@ void i2s_reset(void) {
NRF_I2S->PSEL.LRCK = 0xFFFFFFFF;
NRF_I2S->PSEL.SDOUT = 0xFFFFFFFF;
NRF_I2S->PSEL.SDIN = 0xFFFFFFFF;
+ if (instance) {
+ supervisor_disable_tick();
+ }
instance = NULL;
}
diff --git a/ports/nrf/common-hal/audiopwmio/PWMAudioOut.c b/ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
index 89966b7da..7fec766fb 100644
--- a/ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
+++ b/ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
@@ -36,6 +36,7 @@
#include "shared-bindings/audiopwmio/PWMAudioOut.h"
#include "shared-bindings/microcontroller/__init__.h"
#include "shared-bindings/microcontroller/Pin.h"
+#include "supervisor/shared/tick.h"
#include "supervisor/shared/translate.h"
// TODO: This should be the same size as PWMOut.c:pwms[], but there's no trivial way to accomplish that
@@ -67,6 +68,7 @@ STATIC void activate_audiopwmout_obj(audiopwmio_pwmaudioout_obj_t *self) {
for (size_t i=0; i < MP_ARRAY_SIZE(active_audio); i++) {
if (!active_audio[i]) {
active_audio[i] = self;
+ supervisor_enable_tick();
break;
}
}
@@ -77,12 +79,16 @@ STATIC void deactivate_audiopwmout_obj(audiopwmio_pwmaudioout_obj_t *self) {
for (size_t i=0; i < MP_ARRAY_SIZE(active_audio); i++) {
if (active_audio[i] == self) {
active_audio[i] = NULL;
+ supervisor_disable_tick();
}
}
}
void audiopwmout_reset() {
for (size_t i=0; i < MP_ARRAY_SIZE(active_audio); i++) {
+ if (active_audio[i]) {
+ supervisor_disable_tick();
+ }
active_audio[i] = NULL;
}
}