2016-06-07 22:46:27 +01:00
|
|
|
.. currentmodule:: machine
|
2017-04-18 06:27:37 +01:00
|
|
|
.. _machine.Timer:
|
2015-10-14 11:32:01 +01:00
|
|
|
|
2017-01-28 08:55:48 +00:00
|
|
|
class Timer -- control hardware timers
|
2015-10-14 11:32:01 +01:00
|
|
|
======================================
|
|
|
|
|
2017-01-28 08:55:48 +00:00
|
|
|
Hardware timers deal with timing of periods and events. Timers are perhaps
|
|
|
|
the most flexible and heterogeneous kind of hardware in MCUs and SoCs,
|
|
|
|
differently greatly from a model to a model. MicroPython's Timer class
|
|
|
|
defines a baseline operation of executing a callback with a given period
|
|
|
|
(or once after some delay), and allow specific boards to define more
|
2021-04-30 07:53:36 +01:00
|
|
|
non-standard behaviour (which thus won't be portable to other boards).
|
2015-10-14 11:32:01 +01:00
|
|
|
|
2017-01-28 09:08:25 +00:00
|
|
|
See discussion of :ref:`important constraints <machine_callbacks>` on
|
|
|
|
Timer callbacks.
|
|
|
|
|
2015-10-14 11:32:01 +01:00
|
|
|
.. note::
|
|
|
|
|
2015-10-20 15:24:25 +01:00
|
|
|
Memory can't be allocated inside irq handlers (an interrupt) and so
|
|
|
|
exceptions raised within a handler don't give much information. See
|
2015-10-14 11:32:01 +01:00
|
|
|
:func:`micropython.alloc_emergency_exception_buf` for how to get around this
|
|
|
|
limitation.
|
|
|
|
|
2018-07-29 15:19:41 +01:00
|
|
|
If you are using a WiPy board please refer to :ref:`machine.TimerWiPy <machine.TimerWiPy>`
|
|
|
|
instead of this class.
|
|
|
|
|
2015-10-14 11:32:01 +01:00
|
|
|
Constructors
|
|
|
|
------------
|
|
|
|
|
2020-08-31 16:12:38 +01:00
|
|
|
.. class:: Timer(id, /, ...)
|
2015-10-14 11:32:01 +01:00
|
|
|
|
2020-08-31 16:12:38 +01:00
|
|
|
Construct a new timer object of the given ``id``. ``id`` of -1 constructs a
|
2017-01-28 08:55:48 +00:00
|
|
|
virtual timer (if supported by a board).
|
2020-08-31 16:12:38 +01:00
|
|
|
``id`` shall not be passed as a keyword argument.
|
|
|
|
|
2020-10-09 22:31:00 +01:00
|
|
|
See ``init`` for parameters of initialisation.
|
2015-10-14 11:32:01 +01:00
|
|
|
|
|
|
|
Methods
|
|
|
|
-------
|
|
|
|
|
2020-07-11 07:53:26 +01:00
|
|
|
.. method:: Timer.init(*, mode=Timer.PERIODIC, period=-1, callback=None)
|
2015-10-14 11:32:01 +01:00
|
|
|
|
2018-07-29 15:19:41 +01:00
|
|
|
Initialise the timer. Example::
|
2015-10-14 11:32:01 +01:00
|
|
|
|
2018-07-29 15:19:41 +01:00
|
|
|
tim.init(period=100) # periodic with 100ms period
|
|
|
|
tim.init(mode=Timer.ONE_SHOT, period=1000) # one shot firing after 1000ms
|
2015-10-14 11:32:01 +01:00
|
|
|
|
2018-07-29 15:19:41 +01:00
|
|
|
Keyword arguments:
|
2015-10-14 11:32:01 +01:00
|
|
|
|
2018-07-29 15:19:41 +01:00
|
|
|
- ``mode`` can be one of:
|
2015-10-14 11:32:01 +01:00
|
|
|
|
2018-07-29 15:19:41 +01:00
|
|
|
- ``Timer.ONE_SHOT`` - The timer runs once until the configured
|
|
|
|
period of the channel expires.
|
|
|
|
- ``Timer.PERIODIC`` - The timer runs periodically at the configured
|
|
|
|
frequency of the channel.
|
2015-10-14 11:32:01 +01:00
|
|
|
|
2016-06-07 23:33:49 +01:00
|
|
|
.. method:: Timer.deinit()
|
2015-10-14 11:32:01 +01:00
|
|
|
|
2017-01-28 08:55:48 +00:00
|
|
|
Deinitialises the timer. Stops the timer, and disables the timer peripheral.
|
2015-10-14 11:32:01 +01:00
|
|
|
|
2016-02-14 12:46:04 +00:00
|
|
|
Constants
|
|
|
|
---------
|
2015-10-14 11:32:01 +01:00
|
|
|
|
2016-02-14 12:46:04 +00:00
|
|
|
.. data:: Timer.ONE_SHOT
|
2018-07-29 15:19:41 +01:00
|
|
|
Timer.PERIODIC
|
2016-02-14 12:46:04 +00:00
|
|
|
|
2017-01-28 08:55:48 +00:00
|
|
|
Timer operating mode.
|