Eu tenho esse problema em um projeto atual.
A maneira como estou lidando com isso é manter o valor ao vivo do contador na RAM. Eu adicionei um pouco de hardware para que o microcontrolador possa detectar que a tensão bruta de entrada é baixa. Nesse caso, ele interrompe o que está fazendo, salva o valor do contador ao vivo na EEPROM e aguarda assistindo a tensão de energia bruta. Se voltar, com alguma histerese, o micro será reiniciado essencialmente. Caso contrário, se a energia continuar diminuindo, o micro acabará parando. Na próxima reinicialização, o valor do contador é carregado da EEPROM e, em seguida, usado ao vivo na RAM novamente até a próxima inicialização.
Não demora muito para escrever um pequeno valor na EEPROM. Provavelmente, o sistema de fonte de alimentação existente possui armazenamento de energia suficiente para detectar a tensão baixa e ainda ter tempo de execução garantido suficiente antes que a energia do micro fique abaixo do limite de operação ou de gravação da EEPROM.
No meu caso, o único hardware adicional era um diodo Schottky para impedir que a fonte de alimentação CC sugasse a carga do reservatório local no caminho para baixo e dois resistores como divisor de tensão para que o micro possa ler a tensão de entrada bruta. O resto é firmware.
É importante observar que você deve observar a tensão na entrada para qualquer fonte de alimentação final que alimenta o micro, e não a voltagem do micro diretamente. Quando o último estiver baixo, pode ser tarde demais. Esperamos que haja uma faixa de tensão abaixo do pior caso, quando tudo estiver funcionando corretamente, e acima do que a fonte de alimentação do micro precisa para garantir a tensão regulada para o micro. No meu caso, o suprimento do micro era um regulador de fanfarrão alimentado a partir de 48 V, então há uma grande variedade abaixo do normal, mas onde o micro ainda pode operar de maneira confiável.