Расклад такой: контроллер ATmega8515, кварц на 4,096МГц, датчики LM75AD - домашняя температура, DS1820 - уличная, часы реального времени на таймере Т1 (предделитель 1024, режим нормал, сброс по совпадению с OCR1A=4000дес, плюс прерывания на OCR1A - отсчет времени, OCR1B=2000дес - для мигания двоеточия часы:минуты), таймер Т0 - генерация звуков и опрос кнопок (3 кнопки на одном порту) (предделитель 1024, режим нормал, перекидывание выхода в противоположное состояние при генерации звука 2048Гц), програмлю на CVAVR, работа с датчиками и индикатором из стандартных его библиотек (от Pavel Haiduk). Да, еще индикатор WH1602. Обновление индикации раз в минуту с опросом датчиков (через стандартные библиотеки), каждые полсекунды по Т1 (А и В) мигает двоеточие и обновляются секунды таймера (если таймер запущен) на экране. Есть подозрение, что считывание датчика DS1820 заставляет пропускать прерывание Т1, либо Т0 заставляет пропускать его. В даташите на таймеры я так и не понял пропускается ли прерывание от таймера, когда прерывания запрещены или ставится в очередь. Исходник прилагаю.
- Вложения
-
- kitchenclock.c
- Исходник
- (21.81 КБ) 315 скачиваний
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης


