При проверке очередного тестового алгоритма пришла мысль, если добавить уже существующие часы и немного дописать небольшое дополнение, то получится вполне неплохой девайс под названием "кухонный таймер с часами".
Остова таймера небольшой МК (ATtiny24A), тактируется на частоте 1 МГц (заводская установка).
Дисплей: 7-сегментные индикаторы, шесть разрядов, под управлением драйвера ТМ1637.
Готовый дисплей выглядит так:
Спойлер

У готового дисплея, необходимо удалить входные конденсаторы на выводах интерфейса.
Дополнительно устройство имеет:
- тактовую кнопку;
- энкодер с кнопкой;
- модуль часов на базе DS3231;
- пассивный зуммер.
Схема устройства:
Спойлер

Режимы работы устройства:
Установка часов:
В дежурном режиме (на индикаторе отображаются значение часов), нажимаем кнопку энкодера ("
Set") и устройство переходит в режим установки значений часов, минут и секунд. На дисплее начинают мигать значение часов, указывая на готовность их к изменению. С помощью вращения энкодера устанавливаем необходимое значение. Для сохранения установленного значения часов и перехода к установке минут, нажимаем повторно кнопку энкодера. На дисплее начинают мигать значения минут. Устанавливаем значение минут на минуту больше от текущего значения и повторно нажимаем на кнопку энкодера. Начинают мигать значение секунд. Ждём до того момента когда у "эталонного времени" наступит переход с 59 секунд на 00 секунд. При этом переходе нажимаем на кнопку энкодера. Устройство сбрасывает текущее значение секунд в ноль и все ранее установленные значения (часов, минут и секунд) записывает в микросхему часов (DS3231), затем переходит в дежурный режим.
Установка таймера:
В дежурном режиме нажимаем на кнопку "
Таймер", устройство перейдёт в режим таймера. На дисплее будет высвечиваться значение часов и минут, а так же в разрядах секунд значок режима таймера (
-t). При первом входе в режим таймера на экране будут высвечиваться нули. При последующих входах на экране будет высвечиваться крайнее установленное значение. Установленное значение сохраняется в память EEPROM. Перед сохранением новых установленных значений таймера, устройство проверяет значения часов и минут в памяти EEPROM и если они одинаковые, то перезапись значений не производится.
Запуск таймера осуществляется нажатием на кнопку "
Пуск". При отсчёте таймера значок режима таймера (
-t) начнёт мигать с частотой 1 Гц. По завершении отсчёта таймера (когда на дисплее высветятся нули), включится зуммер и будет звучать непрерывно 5 секунд. Затем устройство автоматически перейдёт в дежурный режим.
Остановка отсчёта таймера производится нажатием на кнопку "
Стоп". При нажатии этой кнопки при отсчёте таймера, устройство прекратит отсчёт таймера и перейдёт в дежурный режим.
Чтобы установить новое значение таймера, необходимо в режиме таймера нажать кнопку энкодера и устройство перейдёт в режим установки новых значений. При этом значение часов начнут мигать. Выбор необходимого значения производится вращением энкодера. Далее для перехода к установке минут необходимо повторно нажать на кнопку энкодера. После установки минут и очередного нажатия кнопки энкодера, устройство сохранит новое значение в памяти EEPROM и перейдёт в режим ожидания пуска отсчёта таймера.
Примечание:
Если по какой-то причине новые значения таймера вы не захотите записывать в память EEPROM, то просто необходимо вывод РА7 подсоединить к общей шине (GND) и тогда запись в EEPROM производится не будет.
Примечание2:
Если сигнал 1 Гц перестанет поступать от модуля DS3231 к МК, то на дисплее высветятся в место значений времени чёрточки (
--.--.--).
Прошивка:
Прошивку обновил