MicroPython:Библиотеки/pyb
Модуль pyb – функции для Pyboard-платы[1]
Модуль pyb содержит функции, связанные с функционалом платы Pyboard.
Функции для работы со временем
- pyb.delay(ms) – делает задержку на заданное количество миллисекунд.
- pyb.udelay(us) – делает задержку на заданное количество микросекунд.
- pyb.millis() – возвращает количество миллисекунд, прошедших с последнего сброса платы.
Возвращаемым значением всегда будет MicroPython’овское малое целое число (31-битное знаковое число), поэтому спустя 230 миллисекунд (это примерно 12.4 дня) эта функция начнет возвращать отрицательные числа. При вызове pyb.stop() работа функции pyb.millis() встанет на паузу и будет находиться в таком состоянии, пока устройство не выйдет из режима сна. Это также повлияет на результат функции pyb.elapsed_millis().
- pyb.micros() – возвращает количество микросекунд, прошедших с последнего сброса платы.
Возвращаемым значением всегда будет MicroPython’овское малое целое число (31-битное знаковое число), поэтому спустя 230 микросекунд (это примерно 17.8 минут) эта функция начнет возвращать отрицательные числа. При вызове pyb.stop() работа функции pyb.micros() встанет на паузу и будет находиться в таком состоянии, пока устройство не выйдет из режима сна. Это также повлияет на результат функции pyb.elapsed_micros().
- pyb.elapsed_millis(start) – возвращает количество миллисекунд, прошедших с запуска платы.
Эта функция умеет работать с остатком по модулю (то есть с ситуациями, когда значение переваливает за некоторый порог и идет дальше) и всегда возвращает положительное число. Это значит, что ее можно использовать для измерения периодов, длящихся до 12.4 дней. Пример:
start = pyb.millis()
while pyb.elapsed_millis(start) < 1000:
# Далее выполняем какие-то операции
- pyb.elapsed_micros(start) – возвращает количество микросекунд, прошедших с запуска платы.
Эта функция умеет работать с остатком по модулю (то есть с ситуациями, когда значение переваливает за некоторый порог и идет дальше) и всегда возвращает положительное число. Это значит, что ее можно использовать для измерения периодов, длящихся до 17.8 минут. Пример:
start = pyb.micros()
while pyb.elapsed_micros(start) < 1000:
# Далее выполняем какие-то операции.
pass
Функции для работы со сбросом
- pyb.hard_reset() – выполняет сброс платы Pyboard, как если бы это было нажатие на кнопку RESET на плате.
- pyb.bootloader() – активирует загрузчик без использования контакта BOOT.
- pyb.fault_debug(value) – включает/выключает отладку т.н. «тяжелых отказов». Тяжелый отказ – это ситуация, когда в используемой системе возникла фатальная ошибка вроде недопустимого обращения к памяти.
Если в аргументе value будет задано False, при возникновении тяжелого отказа будет выполнен автоматический сброс платы. Если в аргументе value будет задано True, то при возникновении тяжелого отказа система распечатает значения регистров и стек-трейс, а затем запустит бесконечное циклическое мигание светодиодами. По умолчанию в этой функции задано False, т.е. автоматический сброс.
Функции для работы с прерываниями
- pyb.disable_irq() – отключает запросы на прерывания. Возвращает предыдущее состояние запросов на прерывание: False для отключенных прерываний и True – для включенных. Значение, возвращенное этой функцией, можно передать функции enable_irq(), чтобы восстановить исходное состояние прерываний.
- pyb.enable_irq(state=True) – включает запросы на прерывания. Если задать в state значение True (это значение по умолчанию), это включит прерывания, а если False, это их выключит. Самый распространенный вариант применения этой функции – это передача возвращенного ею значения функции disable_irq(), чтобы выйти из критического раздела кода.
[Это 1-ая часть; 2-ая часть будет в след. порции]
<syntaxhighlight lang="python" enclose="div">