¿Cómo puedo activar un microcontrolador ATtiny84 en un momento específico del día?

Estoy tratando de crear una alarma que se despierte en un momento determinado y haga una serie de instrucciones. Para configurar las horas en que se despierta, usaré los auriculares de un dispositivo Android para enviar datos en serie a la MCU sobre la(s) hora(s) para despertarse. Simplemente lo conectaré, haré la transferencia y desenchufaré el conector. Luego, el tiempo se establece en la MCU. La transferencia también sincronizará la hora para configurar el temporizador adecuadamente.

Puedo configurar una interrupción de temporizador con un preescalador para que me dé 4 segundos en cada interrupción. Luego use 2 bytes como contador secundario de algún tipo. Eso me daría 72 horas que podría esperar y solo necesito 24 ya que puedo resetear cuando termine el día.

Entonces mi pregunta surge cuando se reinicia el dispositivo. Puedo guardar la hora actual en la EEPROM y luego leerla durante la carga, pero ¿cuánta sobrecarga tiene eso en el uso actual? Quiero que la batería dure el mayor tiempo posible.

Es posible que sea necesario elaborar mi pregunta, pero me preguntaba si había una mejor manera o si lo estoy haciendo de la manera correcta.

¿Hay alguna razón en particular por la que se reiniciará el dispositivo? Cuando se despierta del modo de suspensión, la RAM se conservará, por lo que, a menos que haya otra razón por la que se reiniciará (eliminación de la alimentación, etc.), debería poder mantener su contador en la RAM y no usar la EEPROM.

Respuestas (2)

Utilice un RTC que admita una línea de alarma, p. DS1375 . El chip puede impulsar una línea de interrupción en una hora/fecha determinada. Tiene que seleccionar el modo de suspensión AVR apropiado que 'escucha' la interrupción seleccionada. No es necesario utilizar los temporizadores AVR.

Esto es correcto, pero es difícil decir si tiene mejor o peor duración de la batería que la propuesta original.

Estoy usando un temporizador de vigilancia interno en attiny44 en un caso similar. Se puede configurar para emitir una interrupción (no restablecer) cada 8 segundos. Lo que es bueno es que la interrupción de WDT puede activar el chip desde el modo de suspensión más profundo de "apagado".