import pyb rtc = pyb.RTC() # (year, month, day, weekday, hours, minutes, seconds) #newDt = [2015,12,31,0,18,16,0] #rtc.datetime(newDt) while True: now = rtc.datetime() print(now) pyb.delay(1000)
El método “datetime” lee o setea los valores de fecha y hora del modulo RTC. Si no se le pasan argumentos, el método devolverá una tupla de 7 valores con la fecha y hora actual. Si se la pasa una tupla igual como argumento, esos valores se cargan en el modulo RTC. El formato de la tupla es:
(year, month, day, weekday, hours, minutes, seconds)
El campo “weekday” toma los valores de 0 a 6 El modulo RTC continua funcionando después de un reset del CPU y si se alimenta al mismo con una batería, el RTC seguirá funcionando inclusive sin la alimentación principal del CPU.
Ejemplo de calibración:
import pyb rtc = pyb.RTC() rtc.calibration(0) newDt = [2015,12,31,0,18,16,0] rtc.datetime(newDt)
El método “calibration” ajusta de forma periódica el contador del módulo RTC los valores permitidos son -131072 to 131072. Leer http://www.nxp.com/documents/user_manual/UM10503.pdf para información detallada del procedimiento de calibración. Luego de la calibración se debe setear una fecha y hora.
Ejemplo uso de registros de backup:
import pyb rtc = pyb.RTC() #rtc.write_bkp_reg(0,27) #rtc.write_bkp_reg(32,28) #rtc.write_bkp_reg(63,29) while True: print(rtc.read_bkp_reg(0)) print(rtc.read_bkp_reg(32)) print(rtc.read_bkp_reg(63)) pyb.delay(1000)
Existen 64 registros de 32bits que mantendrán sus valores a pesar de que se reinicie el CPU y si se alimenta al mismo con una batería, se mantendrán los valores inclusive sin la alimentación principal del CPU.
El método “write_bkp_reg” tiene como argumento la dirección del registro (0 a 63) y el valor de 32bit a escribir. El método “read_bkp_reg” tiene como argumento la dirección del registro (0 a 63) y devolverá el valor que se encuentra en el mismo.
Ejemplo uso de alarma:
import pyb rtc = pyb.RTC() newDt = [2015,12,31,0,20,15,0] rtc.datetime(newDt) def rtcCallback(rtc): print("Alarm int!") alarmDt = [2015,12,31,0,20,16,10] rtc.alarm_datetime(alarmDt,pyb.RTC.MASK_SEC | pyb.RTC.MASK_MIN) rtc.callback(rtcCallback) print("alarm:") print(rtc.alarm_datetime())
En este ejemplo se define una función (rtcCallback) que se ejecutará cuando se cumpla la fecha de la alarma. Mediante el método “alarm_datetime” se configura (o lee) la fecha de la alarma con la misma tupla de 7 valores usada para configurar la fecha y hora actual, y como segundo argumento se le pasa la mascara de la alarma la cual se construye con las constantes:
Mediante el método “callback” se setea la función que se ejecutara cuando se produzca la alarma. En el ejemplo se construye la máscara con segundos y minutos, por lo que la alarma se producirá cada hora, a los 16 minutos y 10 segundos.
Para deshabilitar la alarma puede ejecutarse el método “alarm_disable”.