MicroPython:Библиотеки/pyb

Материал из Онлайн справочника
Версия от 15:02, 4 октября 2020; Myagkij (обсуждение | вклад) (Новая страница: «{{MicroPython/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =Модуль pyb – функции для Pyboar...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Модуль 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">

См.также

Внешние ссылки