MicroPython:Библиотеки/pyb/Класс Timer: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 11: | Строка 11: | ||
Пример использования класса Timer для переключения светодиода с фиксированной частотой: | Пример использования класса Timer для переключения светодиода с фиксированной частотой: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
tim = pyb.Timer(4) # создаем объект Timer при помощи таймера 4 | tim = pyb.Timer(4) # создаем объект Timer при помощи таймера 4 | ||
tim.init(freq=2) # переключаем светодиод с частотой 2 Гц | tim.init(freq=2) # переключаем светодиод с частотой 2 Гц | ||
Строка 19: | Строка 19: | ||
Пример использования именованной функции в методе callback(): | Пример использования именованной функции в методе callback(): | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
def tick(timer): # создаем функцию tick() | def tick(timer): # создаем функцию tick() | ||
print(timer.counter()) # показываем текущее значение | print(timer.counter()) # показываем текущее значение | ||
Строка 32: | Строка 32: | ||
Другие примеры: | Другие примеры: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
tim = pyb.Timer(4, freq=100) # частота в герцах | tim = pyb.Timer(4, freq=100) # частота в герцах | ||
tim = pyb.Timer(4, prescaler=0, period=99) | tim = pyb.Timer(4, prescaler=0, period=99) |
Текущая версия от 19:54, 23 мая 2023
Класс Timer – управление внутренними таймерами[1]
Таймеры используются для самых разных задач, но в данный момент для них реализован только один простой сценарий: периодический вызов функции.
Каждый таймер состоит из счетчика, ведущего отсчет при помощи заданной частоты. Частота отсчитывания – это тактовая частота таймера (в Гц), поделенная на значение в делителе частоты. Когда значение в счетчике достигает заданного порога (периода), это запускает событие, после чего счетчик сбрасывается до нуля. При помощи метода callback() можно задать Python-функцию, которая будет запускаться при срабатывании таймера.
Пример использования класса Timer для переключения светодиода с фиксированной частотой:
tim = pyb.Timer(4) # создаем объект Timer при помощи таймера 4
tim.init(freq=2) # переключаем светодиод с частотой 2 Гц
tim.callback(lambda t:pyb.LED(1).toggle())
Пример использования именованной функции в методе callback():
def tick(timer): # создаем функцию tick()
print(timer.counter()) # показываем текущее значение
# счетчика таймера
tim = pyb.Timer(4, freq=1) # создаем объект «tim»
# при помощи таймера 4;
# он будет срабатывать с частотой 1 Гц
tim.callback(tick) # задаем нашу функцию tick()
# как функцию обратного вызова
Другие примеры:
tim = pyb.Timer(4, freq=100) # частота в герцах
tim = pyb.Timer(4, prescaler=0, period=99)
tim.counter() # читаем значение счетчика
# (с помощью этого метода
# его также можно задать)
tim.prescaler(2) # задаем делитель частоты
# (с помощью этого метода
# его также можно прочесть)
tim.period(199) # задаем период
# (с помощью этого метода
# его также можно прочесть)
tim.callback(lambda t: ...) # задаем функцию обратного вызова
# для обновления прерываний
# («t» - это экземпляр «tim»)
tim.callback(None) # очищаем функцию обратного вызова
Конструкторы
Методы
- Timer.init(*, freq, prescaler, period, mode=Timer.UP, div=1, callback=None, deadtime=0)
- Timer.deinit()
- Timer.callback(fun)
- Timer.channel(channel, mode, ...)
- Timer.counter([value])
- Timer.freq([value])
- Timer.period([value])
- Timer.prescaler([value])
- Timer.source_freq()
Класс TimerChannel – настройка канала для таймера
Таймерные каналы используются для генерирования/захвата сигнала при помощи таймера.
Объекты TimerChannel создаются при помощи метода Timer.channel().
Методы
- timerchannel.callback(fun)
- timerchannel.capture([value])
- timerchannel.compare([value])
- timerchannel.pulse_width([value])
- timerchannel.pulse_width_percent([value])