microcontroller
– Pin references and cpu functionality
The microcontroller
module defines the pins and other bare-metal hardware
from the perspective of the microcontroller. See board
for
board-specific pin mappings.
Available on these boards
- microcontroller.cpu: Processor
CPU information and control, such as
cpu.temperature
andcpu.frequency
(clock frequency). This object is an instance ofmicrocontroller.Processor
.
- microcontroller.cpus: Processor
CPU information and control, such as
cpus[0].temperature
andcpus[1].frequency
(clock frequency) on chips with more than 1 cpu. The index selects which cpu. This object is an instance ofmicrocontroller.Processor
.
- microcontroller.delay_us(delay: int) None
Dedicated delay method used for very short delays. Do not do long delays because this stops all other functions from completing. Think of this as an empty
while
loop that runs for the specified(delay)
time. If you have other code or peripherals (e.g audio recording) that require specific timing or processing while you are waiting, explore a different avenue such as usingtime.sleep()
.
- microcontroller.disable_interrupts() None
Disable all interrupts. Be very careful, this can stall everything.
- microcontroller.enable_interrupts() None
Enable the interrupts that were enabled at the last disable.
- microcontroller.on_next_reset(run_mode: RunMode) None
Configure the run mode used the next time the microcontroller is reset but not powered down.
- Parameters:
run_mode (RunMode) – The next run mode
- microcontroller.reset() None
Reset the microcontroller. After reset, the microcontroller will enter the run mode last set by
on_next_reset
.Warning
This may result in file system corruption when connected to a host computer. Be very careful when calling this! Make sure the device “Safely removed” on Windows or “ejected” on Mac OSX and Linux.
- microcontroller.nvm: nvm.ByteArray | None
Available non-volatile memory. This object is the sole instance of
nvm.ByteArray
when available orNone
otherwise.- Type:
nvm.ByteArray or None
- microcontroller.watchdog: watchdog.WatchDogTimer | None
Available watchdog timer. This object is the sole instance of
watchdog.WatchDogTimer
when available orNone
otherwise.
- class microcontroller.Pin
Identifies an IO pin on the microcontroller.
Identifies an IO pin on the microcontroller. They are fixed by the hardware so they cannot be constructed on demand. Instead, use
board
ormicrocontroller.pin
to reference the desired pin.
- class microcontroller.Processor
Microcontroller CPU information and control
Usage:
import microcontroller print(microcontroller.cpu.frequency) print(microcontroller.cpu.temperature) Note that on chips with more than one cpu (such as the RP2040) microcontroller.cpu will return the value for CPU 0. To get values from other CPUs use microcontroller.cpus indexed by the number of the desired cpu. i.e. print(microcontroller.cpus[0].temperature) print(microcontroller.cpus[1].frequency)
You cannot create an instance of
microcontroller.Processor
. Usemicrocontroller.cpu
to access the sole instance available.- frequency: int
The CPU operating frequency in Hertz.
Limitations: On most boards,
frequency
is read-only. Setting thefrequency
is possible on RP2040 boards, some ESP32 boards and some i.MX boards.Warning
Overclocking likely voids your warranties and may reduce the lifetime of the chip.
Warning
Changing the frequency may cause issues with other subsystems, such as USB, PWM, and PIO. To minimize issues, set the CPU frequency before initializing other systems.
- reset_reason: ResetReason
The reason the microcontroller started up from reset state.
- temperature: float | None
The on-chip temperature, in Celsius, as a float. (read-only)
Is
None
if the temperature is not available.Limitations: Not available on ESP32 or ESP32-S3. On small SAMD21 builds without external flash, the reported temperature has reduced accuracy and precision, to save code space.
- class microcontroller.ResetReason
The reason the microcontroller was last reset