Solution:
You'll trace flashbdev.py in the source tree esp826/modules. It would appear to be the low level driver for the flash memory - my guess is that the readblocks system is being named recursively probably owing to re-entrant code. At the time you change parameters is there a situation where a timer callback implements prior another has finished accessing a file?
Accessing files in an interrupt handler is a bad idea since file access times are not deterministic. More, code in interrupt handlers such as timer callbacks must be designed to implement fast.
I would possibly avoid employing a timer and only run a loop which achieves its timing like this:
import utime
while True:
tstart = utime.ticks_ms()
# do all your stuff
delta = 150 - utime.ticks_diff(utime.ticks_ms(), tstart)
if delta > 0:
utime.sleep_ms(delta)
I raised the recursion limit by one and got the similar exception. After rising it to 5000 (1000 is the default) I no longer view it. Maybe I require to do few digging in my code because I am making many temporary objects in each iteration of an event loop.
Figurred out an infinite recursion problem in an overridden _getattr_ in my code and after solving this I no longer view this exception. You may mark this bug as green or delete it.