diff options
author | Dave Hylands <dhylands@gmail.com> | 2014-07-01 23:46:53 -0700 |
---|---|---|
committer | Dave Hylands <dhylands@gmail.com> | 2014-07-25 14:00:06 -0700 |
commit | 5b7fd20fea6d4329bb3ab45f63df41f46f242688 (patch) | |
tree | 10f806ab0d883bc6c087cc22b55b787adbdcf815 /py/mpconfig.h | |
parent | 05c255f039b5c0fbdcb0754748fd5d36135acfd9 (diff) | |
download | micropython-5b7fd20fea6d4329bb3ab45f63df41f46f242688.tar.gz micropython-5b7fd20fea6d4329bb3ab45f63df41f46f242688.zip |
Add support for storing args during an exception raised by an irq.
The user code should call micropython.alloc_emergency_exception_buf(size)
where size is the size of the buffer used to print the argument
passed to the exception.
With the test code from #732, and a call to
micropython.alloc_emergenncy_exception_buf(100) the following error is
now printed:
```python
>>> import heartbeat_irq
Uncaught exception in Timer(4) interrupt handler
Traceback (most recent call last):
File "0://heartbeat_irq.py", line 14, in heartbeat_cb
NameError: name 'led' is not defined
```
Diffstat (limited to 'py/mpconfig.h')
-rw-r--r-- | py/mpconfig.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/py/mpconfig.h b/py/mpconfig.h index 99d697f9ad..911125c8a4 100644 --- a/py/mpconfig.h +++ b/py/mpconfig.h @@ -163,6 +163,16 @@ #define MICROPY_STACK_CHECK (1) #endif +// Whether to have an emergency exception buffer +#ifndef MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF +#define MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF (0) +#endif +#if MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF +# ifndef MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE +# define MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE (0) // 0 - implies dynamic allocation +# endif +#endif + // Whether to include REPL helper function #ifndef MICROPY_HELPER_REPL #define MICROPY_HELPER_REPL (0) @@ -378,6 +388,14 @@ typedef double mp_float_t; /*****************************************************************************/ /* Miscellaneous settings */ +// On embedded platforms, these will typically enable/disable irqs. +#ifndef MICROPY_BEGIN_ATOMIC_SECTION +#define MICROPY_BEGIN_ATOMIC_SECTION() +#endif +#ifndef MICROPY_END_ATOMIC_SECTION +#define MICROPY_END_ATOMIC_SECTION() +#endif + // Allow to override static modifier for global objects, e.g. to use with // object code analysis tools which don't support static symbols. #ifndef STATIC |