MicroPython:Библиотеки/pyb/Класс Timer/Timer.channel(): различия между версиями
Материал из Онлайн справочника
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 5: | Строка 5: | ||
=Timer.channel(channel, mode, ...)<ref>[http://docs.micropython.org/en/latest/library/pyb.Timer.html docs.micropython.org - class Timer – control internal timers]</ref>= | =Timer.channel(channel, mode, ...)<ref>[http://docs.micropython.org/en/latest/library/pyb.Timer.html docs.micropython.org - class Timer – control internal timers]</ref>= | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
Timer.channel(channel, mode, ...) | Timer.channel(channel, mode, ...) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 63: | Строка 63: | ||
Пример использования [[ШИМ]]: | Пример использования [[ШИМ]]: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
timer = pyb.Timer(2, freq=1000) | timer = pyb.Timer(2, freq=1000) | ||
ch2 = timer.channel(2, pyb.Timer.PWM, pin=pyb.Pin.board.X2, pulse_width=8000) | ch2 = timer.channel(2, pyb.Timer.PWM, pin=pyb.Pin.board.X2, pulse_width=8000) |
Текущая версия от 19:54, 23 мая 2023
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
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 = 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)