Go Down

Topic: millis() rollover, o reset millis() (Read 3226 times) previous topic - next topic

uargo

Apr 10, 2016, 07:44 pm Last Edit: Jul 24, 2018, 03:48 pm by surbyte Reason: Editado el título
Hola buenas acabo de terminar una estacion metereologica alimentada con una placa solar y una bateria LIPO de 6000 mAh, con los siguientes sensores:
Anemometro, veleta, pluviometro, rayos UV, luminosidad, 2 temperaturas, humedad del aire, presion atmosferica y punto de rocio.

Ademas dispone de un RTC DS3231, una eeprom AT24C32, un LipoRiderPro(cargador lipo) y un NRF24L01+PA+LNA para comunicarse.
Todo manejado con un Arduino Leonardo, como veis es totalmente autonoma pues se alimenta con placa solar y se comunica por radiofrecuencia, sin cables.

Ademas de enviar a la base todos los datos de los sensores, tambien envia los valores de los voltajes de la bateria LIPO, la bateria del RTC y el voltaje de la placa solar.
Tambien almacena los valores de las ultimas 24h en la eeprom y se los puede enviar a la base por peticion de esta.

Bueno llevo varios meses (a ratos) con este proyecto, ya lo tengo terminado de montaje y de codigo (al menos la estacion metereologica, pues la base seguire ampliandola hasta convertirla en una central domotica).

Peeeeero me acabo de dar cuenta de una cosa: yo utilizo la funcion millis() para controlar los tiempos de espera de varias cosas, como por ejemplo el tiempo que permanece dormido el micro, los tiempos de escape en la recepcion de RF en caso de no recibir datos etc etc

Y funciona claro, pero me acabo de acordar que los millis() cada 49 dias (creo) se produce un overflow y comienza de cero... y claro esto no lo contempla mi codigo, se va a quedar pillado cuando eso ocurra.

La solucion mas facil es resetear los millis() de forma controlada, pero no encuentro como resetar los millis()

Alguien sabe como?, alguna solucion?
Gracias por vuestra ayuda de antemano.


uargo


Go Up