summaryrefslogtreecommitdiffstatshomepage
path: root/esp8266
diff options
context:
space:
mode:
Diffstat (limited to 'esp8266')
-rw-r--r--esp8266/esp8266_common.ld1
-rw-r--r--esp8266/esp_mphal.c7
-rw-r--r--esp8266/machine_pin.c2
-rw-r--r--esp8266/mpconfigport.h1
4 files changed, 6 insertions, 5 deletions
diff --git a/esp8266/esp8266_common.ld b/esp8266/esp8266_common.ld
index f721c28b03..1da835681a 100644
--- a/esp8266/esp8266_common.ld
+++ b/esp8266/esp8266_common.ld
@@ -100,6 +100,7 @@ SECTIONS
*py/qstr.o*(.literal* .text*)
*py/repl.o*(.literal* .text*)
*py/runtime.o*(.literal* .text*)
+ *py/scheduler.o*(.literal* .text*)
*py/scope.o*(.literal* .text*)
*py/sequence.o*(.literal* .text*)
*py/showbc.o*(.literal* .text*)
diff --git a/esp8266/esp_mphal.c b/esp8266/esp_mphal.c
index f5e284fde6..7ecc7776aa 100644
--- a/esp8266/esp_mphal.c
+++ b/esp8266/esp_mphal.c
@@ -33,6 +33,7 @@
#include "ets_alt_task.h"
#include "py/obj.h"
#include "py/mpstate.h"
+#include "py/runtime.h"
#include "extmod/misc.h"
#include "lib/utils/pyexec.h"
@@ -130,11 +131,7 @@ void mp_hal_delay_ms(uint32_t delay) {
void ets_event_poll(void) {
ets_loop_iter();
- if (MP_STATE_VM(mp_pending_exception) != NULL) {
- mp_obj_t obj = MP_STATE_VM(mp_pending_exception);
- MP_STATE_VM(mp_pending_exception) = MP_OBJ_NULL;
- nlr_raise(obj);
- }
+ mp_handle_pending();
}
void __assert_func(const char *file, int line, const char *func, const char *expr) {
diff --git a/esp8266/machine_pin.c b/esp8266/machine_pin.c
index a1e94e898e..9ea5197bc8 100644
--- a/esp8266/machine_pin.c
+++ b/esp8266/machine_pin.c
@@ -100,6 +100,7 @@ void pin_init0(void) {
}
void pin_intr_handler(uint32_t status) {
+ mp_sched_lock();
gc_lock();
status &= 0xffff;
for (int p = 0; status; ++p, status >>= 1) {
@@ -111,6 +112,7 @@ void pin_intr_handler(uint32_t status) {
}
}
gc_unlock();
+ mp_sched_unlock();
}
pyb_pin_obj_t *mp_obj_get_pin_obj(mp_obj_t pin_in) {
diff --git a/esp8266/mpconfigport.h b/esp8266/mpconfigport.h
index cf4cbecd40..07bd48f679 100644
--- a/esp8266/mpconfigport.h
+++ b/esp8266/mpconfigport.h
@@ -28,6 +28,7 @@
#define MICROPY_MODULE_WEAK_LINKS (1)
#define MICROPY_CAN_OVERRIDE_BUILTINS (1)
#define MICROPY_USE_INTERNAL_ERRNO (1)
+#define MICROPY_ENABLE_SCHEDULER (1)
#define MICROPY_PY_ALL_SPECIAL_METHODS (1)
#define MICROPY_PY_BUILTINS_COMPLEX (0)
#define MICROPY_PY_BUILTINS_STR_UNICODE (1)