Timer

Timer

tmr.delay(seconds)

Ожидание указанного количества секунд, затем возвращение.

Аргументы:

  • seconds: количество секунд ожидания.

Возвращает: ничего или исключение.

tmr.delayms(milliseconds)

Ожидание указанного количества миллисекунд, затем возвращение.

Аргументы:

  • milliseconds: количество миллисекунд ожидания.

Возвращает: ничего или исключение.

tmr.delayus(microseconds)

Ожидание указанного количества микросекунд, затем возвращение.

Аргументы:

  • microseconds: количество микросекунд ожидания.

Возвращает: ничего или исключение.

Функции сна

Функции сна приостанавливают выполнение программы на указанный период времени, приостанавливая текущий поток.

tmr.sleep(seconds)

Сон на указанное количество секунд, затем возвращение.

Аргументы:

  • seconds: количество секунд сна.

Возвращает: ничего или исключение.

tmr.sleepms(milliseconds)

Сон на указанное количество миллисекунд, затем возвращение.

Аргументы:

  • milliseconds: количество миллисекунд сна.

Возвращает: ничего или исключение.

tmr.sleepus(microseconds)

Сон на указанное количество микросекунд, затем возвращение.

Аргументы:

  • microseconds: количество микросекунд сна.

Возвращает: ничего или исключение.

Аппаратные таймеры

instance = tmr.attach(id, period, callback)

Подключение аппаратного таймера, вызывающего функцию обратного вызова через регулярные интервалы времени, определяемые аргументом period. Таймер автоматически перезагружается после вызова функции обратного вызова.

Аргументы:

  • id: идентификатор таймера. Может быть tmr.TMR0, tmr.TMR1, tmr.TMR2 или tmr.TMR3.
  • period: период таймера в микросекундах.
  • callback: функция обратного вызова, вызываемая при истечении таймера.

Возвращает: экземпляр таймера или исключение. Этот экземпляр таймера необходимо сохранить в переменной для дальнейших операций с ним.

instance:detach()

Отключение аппаратного таймера и освобождение всех ресурсов, используемых таймером.

Аргументы: нет. Возвращает: ничего или исключение.

instance:start()

Запуск таймера.

Аргументы: нет. Возвращает: ничего или исключение.

instance:stop()

Остановка таймера.

Аргументы: нет. Возвращает: ничего или исключение.

Пример

Этот пример использует аппаратный таймер для мигания светодиода каждые 50 миллисекунд.

-- Blink function
function blink()
   if (led_on) then
      pio.pin.sethigh(pio.GPIO26)
      led_on = false
   else
      pio.pin.setlow(pio.GPIO26)
      led_on = true
   end
end

-- Configure the GPIO where the led is attached
pio.pin.setdir(pio.OUTPUT, pio.GPIO26)

-- Variable for store the led status
led_on = false

-- Attach the timer. 50 milliseconds = 50000 micro seconds
t0 = tmr.attach(tmr.TMR0, 50000, blink)

-- Start the timer (the led blinks)
t0:start()

...

-- Stop the timer
t0:stop()

Программные таймеры

instance = tmr.attach(period, callback)

Подключение программного таймера, вызывающего функцию обратного вызова через регулярные интервалы времени, определяемые аргументом period. Таймер автоматически перезагружается после вызова функции обратного вызова.

Аргументы:

  • period: период таймера в миллисекундах.
  • callback: функция обратного вызова, вызываемая при истечении таймера.

Возвращает: экземпляр таймера или исключение. Этот экземпляр таймера необходимо сохранить в переменной для дальнейших операций с ним.

instance:detach()

Отключение программного таймера и освобождение всех ресурсов, используемых таймером.

Аргументы: нет. Возвращает: ничего или исключение.

instance:start()

Запуск таймера.

Аргументы: нет. Возвращает: ничего или исключение.

instance:stop()

Остановка таймера.

Аргументы: нет. Возвращает: ничего или исключение.

Пример

Этот пример использует программный таймер для мигания светодиода каждые 50 миллисекунд.

-- Blink function
function blink()
   if (led_on) then
      pio.pin.sethigh(pio.GPIO26)
      led_on = false
   else
      pio.pin.setlow(pio.GPIO26)
      led_on = true
   end
end

-- Configure the GPIO where the led is attached
pio.pin.setdir(pio.OUTPUT, pio.GPIO26)

-- Variable for store the led status
led_on = false

-- Attach the timer
t0 = tmr.attach(50, blink)

-- Start the timer (the led blinks)
t0:start()

...

-- Stop the timer
t0:stop()