¿Cómo encender ATmega cada 6 horas?

6

La placa que se hace con Atmega funciona con batería, debe encenderse cada 6 horas y registrar algunos datos, luego volver a la suspensión profunda para ahorrar consumo de batería. Se utiliza Atmega32 y no Atiny debido a la complejidad de las tareas y los sensores conectados al circuito.

Lo que he encontrado hasta ahora, es que puedo hacer un seguimiento del tiempo utilizando un RTC IC.

He leído las hojas de datos de algunos RTC IC, pero no ofrecen ninguna capacidad como generar una señal para la interrupción externa de Atmega a intervalos específicos, por lo que puede despertarse de un sueño profundo. (Se necesita algo similar a cron-task en sistemas * nix, si está familiarizado con él).

Y, por supuesto, los términos de búsqueda como "Atmega tarea programada" y por igual no mencionaron nada.

¿Cómo puedo despertar a Atmega del sueño profundo de forma eficiente (en términos de consumo de energía) periódicamente?

    
pregunta hkoosha

3 respuestas

3

Estoy trabajando en un proyecto muy similar, que funciona una vez cada hora durante unos 15 segundos y duerme el resto del tiempo. En un esfuerzo por conservar la energía de la batería (el dispositivo se implementó en el campo durante un promedio de 6 meses a la vez), el uso de interrupciones WDT no fue práctico porque contar constantemente las interrupciones fue un gran consumo de batería.

Mi sistema usa un Microchip MCP7940M RTC , que tiene un pin multifunción, que le permite conectarse directamente a la interrupción de hardware. El chip se comunica con el procesador utilizando I2C.

El único problema es que la salida de la alarma, que activaría la interrupción, solo se puede configurar por minuto, por hora, por día, semanalmente, mensualmente o anualmente. Para llegar a cada seis horas, aún tendrías que contar las interrupciones, pero el consumo de energía sería significativamente menor porque puedes poner el dispositivo en reposo entre las interrupciones.

    
respondido por el craigkoiter
4

Puede usar el temporizador Watchdog para emitir una interrupción en lugar de reiniciar el chip. El chip se activará incluso desde el modo de suspensión más profundo en la interrupción del perro guardián.

Usted querrá configurar el prescaler más grande para el temporizador de vigilancia (8 segundos) y contar las interrupciones. Si el contador aún no ha alcanzado la cantidad predefinida, vuelva inmediatamente al modo de suspensión; de lo contrario, ejecute el código de registro.

    
respondido por el miceuz
1

Algunos RTC tienen esta función y otros no.

El popular DS1307 no lo hace mientras que el ligeramente más caro DS3234 hace. El DS3234 tiene "dos alarmas de hora del día programables" que se pueden conectar a los pines de interrupción Arduino para activar su uController.

    
respondido por el hydronics

Lea otras preguntas en las etiquetas