Soporte Timers: Clase Timer
La clase Timer permitirá crear objetos que representan los módulos Timers del microcontrolador.
No se implementó la clase TimerChannel, por lo que las funcionalidades de Output Compare e Input Capture no son accesibles.
Constructor
La clase posee un constructor que recibe un solo argumento, este argumento es el número de timer que controlará.
Timers disponibles: 0,1,2 y 3
Métodos
interval(t,fn) : Ejecuta la función pasada como argumento fn periódicamente cada el tiempo t expresado en ms
timeout(t,fn) : Ejecuta la función pasada como argumento fn luego del tiempo t expresado en ms
init(prescaler,period): Configura el timer con un prescaler dado y un periodo dado (números de 32bit)
init(freq) : Configura el timer para la frecuencia dada (de 1 a 1000000 Hz)
callback(fn) : Configura una función que se ejecutará al vencerse el timer.La función recibirá como argumento el objeto Timer.
counter([value]): Devuelve o setea el valor del contador del Timer (número de 32bit)
freq([value]): Devuelve o setea el valor de la frecuencia del Timer (de 1 a 1000000 Hz)
period([value]): Devuelve o setea el valor del periodo (valor de comparación de la cuenta) número de 32 bit)
prescaler([value]): Devuelve o setea el valor del prescaler (número de 32bit)
source_freq(): Devuelve la frecuencia de operación del microcontrolador en Hz
Ejemplo 1: Uso de timeout e interval
import pyb
def callb(timer):
print("Interval interrupt")
print(timer)
def callbTimeout (timer):
print("Timeout interrupt")
print(timer)
print("Test Timers")
t1 = pyb.Timer(1)
t2 = pyb.Timer(2)
t1.interval(2000,callb)
t2.timeout(5000,callbTimeout)
while True:
pyb.delay(1000)
Ejemplo 2: Ejecución cada 100Hz
import pyb
counter=0
def callb(timer):
global counter
counter+=1
t1 = pyb.Timer(1)
t1.init(freq=100) #100Hz
t1.callback(callb)
while True:
pyb.delay(1000)
print("counter:"+str(counter))