It also sounds likely it's a garbage collection issue to me.
Something interrupting every 14 seconds and taking tens of milliseconds is too infrequent and too long to be a typical interrupt, but does fit with it being garbage collection.
MicroPython can generate and accumulate garbage behind the scenes simply in doing what was asked for by a program. Automatic garbage collection usually goes unnoticed but it will be more evident if it happens while doing something which needs consistent timing. LED multiplexing and audio generation are typical cases of where it can become very noticeable.
I would also suggest a 'gc.collect()' at the end of 'update_display'.
Something interrupting every 14 seconds and taking tens of milliseconds is too infrequent and too long to be a typical interrupt, but does fit with it being garbage collection.
MicroPython can generate and accumulate garbage behind the scenes simply in doing what was asked for by a program. Automatic garbage collection usually goes unnoticed but it will be more evident if it happens while doing something which needs consistent timing. LED multiplexing and audio generation are typical cases of where it can become very noticeable.
I would also suggest a 'gc.collect()' at the end of 'update_display'.
Statistics: Posted by hippy — Tue Jun 10, 2025 3:13 pm