diff options
| author | Scott Shawcroft <scott.shawcroft@gmail.com> | 2016-11-30 15:08:34 -0800 |
|---|---|---|
| committer | Scott Shawcroft <scott.shawcroft@gmail.com> | 2016-12-02 15:46:12 -0800 |
| commit | 26229efe78f6c5f8598d6f9f1b2261c5a84d7a7b (patch) | |
| tree | 52db4d80c256af97639543bbc814a238ce7acdc8 /shared-bindings/microcontroller/__init__.c | |
| parent | 03f49f8209e9a35524864960c3c90db5343b35b3 (diff) | |
Add try_lock and unlock to I2C and SPI classes to make sure things
are shared well between threads and underlying MicroPython (SPI Flash
for example.)
It is recommended to use the bus device classes to manage the locks
and other transaction state.
https://github.com/adafruit/Adafruit_MicroPython_BusDevice
Fixed #58
Fixed #59
Fixed #60
Diffstat (limited to 'shared-bindings/microcontroller/__init__.c')
| -rw-r--r-- | shared-bindings/microcontroller/__init__.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/shared-bindings/microcontroller/__init__.c b/shared-bindings/microcontroller/__init__.c index 239251805..031bfe35c 100644 --- a/shared-bindings/microcontroller/__init__.c +++ b/shared-bindings/microcontroller/__init__.c @@ -70,6 +70,26 @@ STATIC mp_obj_t mcu_delay_us(mp_obj_t delay_obj) { } STATIC MP_DEFINE_CONST_FUN_OBJ_1(mcu_delay_us_obj, mcu_delay_us); +//| .. method:: disable_interrupts() +//| +//| Disable all interrupts. Be very careful, this can stall everything. +//| +STATIC mp_obj_t mcu_disable_interrupts(void) { + common_hal_mcu_disable_interrupts(); + return mp_const_none; +} +STATIC MP_DEFINE_CONST_FUN_OBJ_0(mcu_disable_interrupts_obj, mcu_disable_interrupts); + +//| .. method:: enable_interrupts() +//| +//| Enable the interrupts that were enabled at the last disable. +//| +STATIC mp_obj_t mcu_enable_interrupts(void) { + common_hal_mcu_enable_interrupts(); + return mp_const_none; +} +STATIC MP_DEFINE_CONST_FUN_OBJ_0(mcu_enable_interrupts_obj, mcu_enable_interrupts); + //| :mod:`microcontroller.pin` --- Microcontroller pin names //| -------------------------------------------------------- //| @@ -87,6 +107,8 @@ const mp_obj_module_t mcu_pin_module = { STATIC const mp_rom_map_elem_t mcu_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_microcontroller) }, { MP_ROM_QSTR(MP_QSTR_delay_us), MP_ROM_PTR(&mcu_delay_us_obj) }, + { MP_ROM_QSTR(MP_QSTR_disable_interrupts), MP_ROM_PTR(&mcu_disable_interrupts_obj) }, + { MP_ROM_QSTR(MP_QSTR_enable_interrupts), MP_ROM_PTR(&mcu_enable_interrupts_obj) }, { MP_ROM_QSTR(MP_QSTR_Pin), MP_ROM_PTR(&mcu_pin_type) }, { MP_ROM_QSTR(MP_QSTR_pin), MP_ROM_PTR(&mcu_pin_module) }, }; |
