MicroPython:Библиотеки/pyb/Класс Timer/Timer.channel()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

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


Timer.channel(channel, mode, ...)[1]

Timer.channel(channel, mode, ...)

Если передать этому методу только номер канала (channel), он вернет ранее инициализированный объект TimerChannel (или None, если никакого канала ранее инициализировано не было).

В противном случае будет инициализирован и возвращен объект TimerChannel.

Каждый канал можно настроить на выполнение ШИМ, а также на работу в режимах сравнения (Output Compare) и захвата сигнала (Input Capture). Все каналы пользуются одним и тем же таймером, что также значит, что они используют одну и ту же таймерную частоту.

Именованные аргументы для этого метода:

  • mode – это режим работы канала:
    • Timer.PWM – таймер будет работать в режиме ШИМ (активный высокий уровень).
    • Timer.PWM_INVERTED – таймер будет работать в режиме ШИМ (активный низкий уровень).
    • Timer.OC_TIMING – это значит, что контакты никак не управляются.
    • Timer.OC_ACTIVE – если при сравнении было обнаружено совпадение, контакт станет активным (активный уровень определяется полярностью).
    • Timer.OC_INACTIVE – если при сравнении было обнаружено совпадение, контакт станет неактивным.
    • Timer.OC_TOGGLE – если при сравнении было обнаружено совпадение, контакт будет переключен.
    • Timer.OC_FORCED_ACTIVE – контакт будет принудительно сделан активным (сравнение будет игнорироваться).
    • Timer.OC_FORCED_INACTIVE – контакт будет принудительно сделан неактивным (сравнение будет игнорироваться).
    • Timer.IC – таймер будет работать в режиме захвата сигнала.
    • Timer.ENC_A – таймер будет работать в режиме энкодера. Значение счетчика будет меняться только при изменении CH1.
    • Timer.ENC_B – таймер будет работать в режиме энкодера. Значение счетчика будет меняться только при изменении CH2.
    • Timer.ENC_AB – таймер будет работать в режиме энкодера. Значение счетчика будет меняться при изменении CH1 или CH2.
  • callback – канальная функция обратного вызова. Ее также можно задать с помощью метода TimerChannel.callback().
  • pin – здесь задается объект Pin (по умолчанию – None). То есть на канале этого контакта будет использоваться альтернативная функция. Если контакт не поддерживает никаких альтернативных функций для этого таймерного канала, это выдаст ошибку.

Именованные аргументы для режимов Timer.PWM:

  • pulse_width – задает начальное ШИМ-значение.
  • pulse_width_percent – задает начальное ШИМ-значение в процентах.

Именованные аргументы для режимов Timer.OC:

  • compare – задает начальное значение регистра сравнения.
  • polarity – здесь могут быть следующие значения:
    • Timer.HIGH – выходной контакт имеет активный высокий уровень.
    • Timer.LOW – выходной контакт имеет активный низкий уровень.

Именованные аргументы для режимов Timer.IC:

  • polarity – здесь могут быть следующие значения:
    • Timer.RISING – захват сигнала на переднем фронте.
    • Timer.FALLING – захват сигнала на заднем фронте.
    • Timer.BOTH – захват сигнала на обоих фронтах.
Примечание

Захват сигнала работает только на главном канале, но не на комплиментарных.

Примечания по режимам Timer.ENC:
  • Требуется два контакта, поэтому один или оба этих контакта должны быть настроены на использование соответствующей альтернативной функции при помощи API класса Pin.
  • Значение энкодера считывается с помощью метода timer.counter().
  • Работает только на CH1 и CH2 (а не на CH1N и CH2N).
  • При включении режима энкодера номер канала игнорируется.

Пример использования ШИМ:

timer = pyb.Timer(2, freq=1000)
ch2 = timer.channel(2, pyb.Timer.PWM, pin=pyb.Pin.board.X2, pulse_width=8000)
ch3 = timer.channel(3, pyb.Timer.PWM, pin=pyb.Pin.board.X3, pulse_width=16000)

См.также

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