Datasheet
Frequently Asked Questions
These are some of the common questions regarding CircuitPython and CircuitPython microcontrollers.
What is a MemoryError ?
Memory allocation errors happen when you're trying to store too much on the board. The CircuitPython microcontroller
boards have a limited amount of memory available. You can have about 250 lines of code on the M0 Express boards. If
you try to import too many libraries, a combination of large libraries, or run a program with too many lines of code, your
code will fail to run and you will receive a MemoryError in the serial console (REPL).
What do I do when I encounter a MemoryError ?
Try resetting your board. Each time you reset the board, it reallocates the memory. While this is unlikely to resolve your
issue, it's a simple step and is worth trying.
Make sure you are using .mpy versions of libraries. All of the CircuitPython libraries are available in the bundle in a
.mpy format which takes up less memory than .py format. Be sure that you're using the latest library
bundle (https://adafru.it/uap) for your version of CircuitPython.
If that does not resolve your issue, try shortening your code. Shorten comments, remove extraneous or unneeded
code, or any other clean up you can do to shorten your code. If you're using a lot of functions, you could try moving
those into a separate library, creating a .mpy of that library, and importing it into your code.
You can turn your entire file into a .mpy and import that into code.py . This means you will be unable to edit your code
live on the board, but it can save you space.
How can I create my own .mpy files?
You can make your own .mpy versions of files with mpy-cross .
You can download the CircuitPython 2.x version of mpy-cross for your operating system from the CircuitPython
Releases page (https://adafru.it/tBa) under the latest 2.x version.
You can build mpy-cross for CircuitPython 3.x by cloning the CircuitPython GitHub repo (https://adafru.it/tB7), and
running make in the circuitpython/mpy-cross/ directory. Then run ./mpy-cross path/to/foo.py to create a foo.mpy in the
same directory as the original file.
How do I check how much memory I have free?
import gc
gc.mem_free()
Will give you the number of bytes available for use.
Does CircuitPython support interrupts?
No. CircuitPython does not currently support interrupts. We do not have an estimated time for when they will be
included.
Does CircuitPython support ESP32?
No. We are not currently developing for it. It will be pulled from MicroPython when development there for it is
complete. We do not have an estimated time for when that will happen.
© Adafruit Industries
https://learn.adafruit.com/adafruit-feather-m0-express-designed-for-circuit-python-
circuitpython
Page 173 of 199