v.4 я попробовал реализовать через sleep mode (IDLE) после каждого полного цикла программы. Выход из спящего режима осуществляется через прерывание Т0. Приследовалась цель снижения энергопотребления, но получилось следующее:
- пришлось уменьшить предделитель таймера, иначе программа не могла отсчитывать циклы динамической индикации;
- при уходе в сон по какой-то причине переставали работать порты I/O, хотя даташит говорит о том, что они должны работать. Из-за чего пропала возможность использовать ночной режим. Независимо от сигнала с датчика освещенности дисплей горит всегда с одинаковой яркостью, но при попытке понизить частоту обновления он начинает мерцать.
В итоге энергопотребление и вовсе выросло, ведь дисплей горит в полную силу и отжирает большую часть батарейки.
Делаю откат до версии 3 и продолжаю пилить ее.
P.S. не хватает какой-нибудь графической CVS, ибо читать код в MyTetra с ее форматированием - лютый трэш... ):