diff options
| author | Scott Shawcroft <scott@tannewt.org> | 2017-08-25 13:00:27 -0700 |
|---|---|---|
| committer | Dan Halbert <halbert@halwitz.org> | 2017-08-25 16:00:27 -0400 |
| commit | 266be307770abe11c220eb493388807920914b7a (patch) | |
| tree | d3cff1ab1d0ecc1c55747a2f3ebdf21e450fa794 /shared-bindings/microcontroller | |
| parent | dd1c4fc8c776d060acd9b66865b1f961e939716a (diff) | |
atmel-samd: Introduce a nvm module for non-volatile byte-level memory access. (#203)
* atmel-samd: Introduce a nvm module for non-volatile byte-level memory access.
This allows for persisting small configuration values even when the file system
is read-only from CircuitPython.
Fixes #160
* Review feedback:
* Add tests.
* Fix non-zero index.
* Fix len()
Diffstat (limited to 'shared-bindings/microcontroller')
| -rw-r--r-- | shared-bindings/microcontroller/__init__.c | 13 | ||||
| -rw-r--r-- | shared-bindings/microcontroller/__init__.h | 8 |
2 files changed, 20 insertions, 1 deletions
diff --git a/shared-bindings/microcontroller/__init__.c b/shared-bindings/microcontroller/__init__.c index fbe359ed9..56d363eed 100644 --- a/shared-bindings/microcontroller/__init__.c +++ b/shared-bindings/microcontroller/__init__.c @@ -90,6 +90,12 @@ STATIC mp_obj_t mcu_enable_interrupts(void) { } STATIC MP_DEFINE_CONST_FUN_OBJ_0(mcu_enable_interrupts_obj, mcu_enable_interrupts); +//| .. attribute:: nvm +//| +//| Available non-volatile memory. Its a `nvm.ByteArray` when available or +//| ``None`` otherwise. +//| + //| :mod:`microcontroller.pin` --- Microcontroller pin names //| -------------------------------------------------------- //| @@ -109,7 +115,12 @@ STATIC const mp_rom_map_elem_t mcu_module_globals_table[] = { { 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) }, + #if CIRCUITPY_INTERNAL_NVM_SIZE > 0 + { MP_ROM_QSTR(MP_QSTR_nvm), &common_hal_mcu_nvm_obj }, + #else + { MP_ROM_QSTR(MP_QSTR_nvm), &mp_const_none_obj }, + #endif + { MP_ROM_QSTR(MP_QSTR_Pin), MP_ROM_PTR(&mcu_pin_type) }, { MP_ROM_QSTR(MP_QSTR_pin), MP_ROM_PTR(&mcu_pin_module) }, }; diff --git a/shared-bindings/microcontroller/__init__.h b/shared-bindings/microcontroller/__init__.h index 8c0b071ec..52aabf9b8 100644 --- a/shared-bindings/microcontroller/__init__.h +++ b/shared-bindings/microcontroller/__init__.h @@ -27,6 +27,7 @@ #ifndef __MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER___INIT___H__ #define __MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER___INIT___H__ +#include "py/mpconfig.h" #include "py/obj.h" extern void common_hal_mcu_delay_us(uint32_t); @@ -36,4 +37,11 @@ extern void common_hal_mcu_enable_interrupts(void); extern const mp_obj_dict_t mcu_pin_globals; +#if CIRCUITPY_INTERNAL_NVM_SIZE > 0 + +#include "common-hal/nvm/ByteArray.h" +extern const nvm_bytearray_obj_t common_hal_mcu_nvm_obj; + +#endif + #endif // __MICROPY_INCLUDED_SHARED_BINDINGS_MICROCONTROLLER___INIT___H__ |
