Одной из самых популярных конструкций с использованием микроконтроллеров являются часы. Тысячи различных вариантов их можно найти в интернете. В качестве индикаторов в них наиболее часто применяются светодиодные или символьные жидкокристаллические индикаторы. Появление доступных плат с TFT дисплеями, таких как mikromedia, позволило создавать интересные конструкции с огромными возможностями по выводу графики. Естественно, что одним из первых проектов могут стать часы.
Возможности графического дисплея позволяют создавать не только цифровые, но и классические аналоговые часы. При этом на циферблате можно расположить различные стрелки и другую информацию. Так как в используемой плате mikromedia стоит процессор STM32F207VG, а на плате запаян часовой кварц, то практически никаких проблем с организацией часов нет. Единственная проблема кроется в особенностях часов микроконтроллера. Модуль часов реального времени в STM32F2xx не имеет возможности сформировать сигнал частотой 1Гц для обновления показаний. В младших и более старших моделях для этого предусмотрено отдельное прерывание. В серии F2xx его нет. Конечно можно использовать функцию таймера с постоянным обновлением, но это как-то не правильно. Единственный выход - использование прерывания для выхода из спящего режима - WakeUP. Его можно настроить на срабатывание с частотой 1Гц.
Сами часы не представляют особой сложности, особенно для таких мощных систем как STM32. Для определения направления стрелки используются тригонометрические функции. При этом часовая стрелка изменяет положение не раз в час, а раз в минуту. Ее положение находится в границах часового сектора времени, как и на обычных стрелочных часах. Для менее мощных систем можно поступить проще и заранее рассчитать все координаты стрелок. Применение математики позволило сделать часы настраиваемыми. Можно менять их угол положения, координаты центра и диаметр. В дальнейшем планируется использовать данные часы, например в проекте метеостанции.
Некоторую проблему создал механизм настройки времени. Графические библиотеки в mikroC не очень-то поворотливы, поэтому не получилось сделать плавный ручной поворот стрелок. Часовая и минутная стрелки настраиваются отдельно.
Программный код написан в среде mikroC. Готовый файл получился объемом чуть более 23 кБайт, что в принципе довольно много, но не критично для STM32. Найти проект можно в библиотеке программ LibStock, развиваемой производителем Mikroelektronika, по ссылке Analog Clock for STM32.
Комментариев нет:
Отправить комментарий