class Timer – control internal timers
Timers can be used for a great variety of tasks. At the moment, only the simplest case of calling a function periodically is available for programming use and is implemented as a software Timer class.
The Timer consists of a counter that counts up at a certain rate. The rate at which it counts is in milliseconds. When the counter reaches the timer period it triggers an event, and the counter resets back to zero. By using the callback method, the timer event can call a MicroPython function.
Example usage to toggle a LED at a fixed frequency:
from machine import Timer
import kooka
tim = Timer(-1, freq=2,callback= (lambda t:kooka.led_red.toggle())) # create a software timer object with callback
Example using named function for the callback:
from machine import Timer
counter = 0 # Initialise a counter
def tick(tim): # The callback function
global counter # Reference the counter
counter += 1 # Increment the counter on each callback
print(counter) # Print the counter's value
tim = Timer(-1, freq=1, callback=tick) # create a software timer object - trigger at 1Hz - with callback
Note: Memory can’t be allocated during a callback (an interrupt) and so exceptions raised within a callback don’t give much information. See the `core MicroPython documentation <https://docs.micropython.org/en/latest/library/micropython.html#micropython.alloc_emergency_exception_buf>’_’ for how to get around this limitation.
Timer Constructors
- class machine.Timer(-1, ...)
Construct a new software timer object. If additional arguments are given, then the timer is initialised by
init(...).Because of the differences between Kookaberry microcomputer models, and hardware timers being pre-allocated to internal functions, only software timers (*id*=-1) are available for user scripts.
Timer Methods
- Timer.init(\*, freq=1, period=1000, callback=None, mode=Timer.PERIODIC)
Initialise the timer. Initialisation must be either by frequency (in Hz) or by prescaler and period:
tim.init(freq=100) # set the timer to trigger at 100Hz tim.init(prescaler=83, period=999) # set the prescaler and period directly
Keyword arguments:
freq— (default is 1Hz) specifies the periodic frequency of the timer. You might also view this as the frequency with which the timer goes through one complete cycle.period— (default is 1000msecs) period in milliseconds of the timer (= 1/freq). This determines the period of the timer (i.e. when the counter cycles). The timer counter will roll-over afterperiod + 1timer clock cycles. If specified withfreq, thefreqvalue will overrideperiod.modecan be one of:Timer.PERIODIC- configures the timer to repeat (default)Timer.ONE_SHOT- configures the timer to operate just once.
callback- Sets the function to be called when the timer triggers.If the function is
Nonethen the callback will be disabled.