machine
— functions related to the hardware¶
The machine
module contains specific functions related to the hardware
on a particular board. Most functions in this module allow to achieve direct
and unrestricted access to and control of hardware blocks on a system
(like CPU, timers, buses, etc.). Used incorrectly, this can lead to
malfunction, lockups, crashes of your board, and in extreme cases, hardware
damage.
A note of callbacks used by functions and class methods of machine
module:
all these callbacks should be considered as executing in an interrupt context.
This is true for both physical devices with IDs >= 0 and “virtual” devices
with negative IDs like -1 (these “virtual” devices are still thin shims on
top of real hardware and real hardware interrupts). See Writing interrupt handlers.
Miscellaneous functions¶
-
machine.
rng
()¶ Return a 24-bit software generated random number.
-
machine.
unique_id
()¶ Returns a byte string with a unique identifier of a board/SoC. It will vary from a board/SoC instance to another, if underlying hardware allows. Length varies by hardware (so use substring of a full value if you expect a short ID). In some MicroPython ports, ID corresponds to the network MAC address.
-
machine.
time_pulse_us
(pin, pulse_level, timeout_us=1000000)¶ Time a pulse on the given pin, and return the duration of the pulse in microseconds. The pulse_level argument should be 0 to time a low pulse or 1 to time a high pulse.
If the current input value of the pin is different to pulse_level, the function first (*) waits until the pin input becomes equal to pulse_level, then (**) times the duration that the pin is equal to pulse_level. If the pin is already equal to pulse_level then timing starts straight away.
The function will return -2 if there was timeout waiting for condition marked (*) above, and -1 if there was timeout during the main measurement, marked (**) above. The timeout is the same for both cases and given by timeout_us (which is in microseconds).
Constants¶
Classes¶
- class Pin – control I/O pins
- class UART – duplex serial communication bus
- class SPI – a Serial Peripheral Interface bus protocol (master side)
- class I2C – a two-wire serial protocol
- class RTC – real time clock
- class Timer – control hardware timers
- class TimerChannel — setup a channel for a timer
- class WDT – watchdog timer
- class ADC – analog to digital conversion
- class ADCChannel — read analog values from internal or external sources
- class SD – secure digital memory card