Одним из самых простых, что можно сделать на микроконтроллере является мигалки, таймеры и все что с этим связано. Не смотря на простоту реализации данных устройств, имеются и кое какие ограничения и особенности для реализации этих поделок на микроконтроллерах самых простых серий Аттини 13 и 13 а. Все дело в том, что Attiny 13 и 13а имеют ограничения. Ограничения эти связаны с функцией задержки delay. Честно говоря ничего путнего не нашел в интернете на эту тему, сколько же может быть предельное значение для функции delay для attiny 13, если это все заливать через среду Arduino, но в процессе опытов стало понятно, что функция эта работает явно не корректно с большими величинами.
Проще говоря если задать несколько секунд, пусть 5-7, то все хорошо, если задать 10 минут, то функция не выдерживает интервал и как будто переполняется и в итоге улетает далее, без отработки корректного времени...
В общем мне то был нужен таймер на несколько часов, без особой точности, то есть +-3 минуты в час мне было не принципиально, так как все-таки этот микроконтроллер сам по себе без кварца и точностью похвастаться никак не может.
Таймер на 4 часа на Attiny 13, 13a
Итак, еще раз о проекте. Я решил сделать таймер со следующим алгоритмом работы. В качестве визуального индикатора выступает 1 светодиод. Первый час он горит постоянно, потом через час начинает моргать 1 раз в 10 секунд. Потом через 2 часа - 2 раза. Через 3-3. Через 4-4. В итоге на 5 час начинается наиболее частое моргание вот и все, более мне не надо было! Опять же повторюсь на счет точности, мне ее особо не надо, поэтому это хорошо, выдумывать ничего не пришлось с подключением кварца. Что относительно delay, то как я сказал, с ним были проблемы. Пришлось брать условно гарантированное гарантированное время работы и использовать циклы с заданием переменной, дабы отсчитывать время по циклам, а не по задержке одним только delay.
В общем здесь уже лучше обратиться к скетчу.
Скетч для таймера на 4 часа для Attiny13
В скетче все видно как и что работает. (частота при заливке 128 KHz минимум для Attiny 13) Для одного часа используется 360 циклов.
...на этом можно было бы и закончить, сказав о том, что скетч наверняка не совершенен, так как я еще учусь, но все же работоспособен! А также упомянуть о частоте 128 KHz. Заливался сам скетч через среду Arduino, с помощью самодельного программатора, сделанного известным способом.
Подключение Attiny 13 для таймера схема
Здесь можно даже ничего не рисовать, то есть не приводить рисунка и схемы, ведь надо нам будет 3 ножки. 4 и 8 питание, и 6 ножка физическая или 1 программная, это у нас выход на светодиод, который желательно подключать через ограничивающий резистор порядка 300 Ом.
Таймер с 3 светодиодами на Attiny 85
Еще одной вариацией таймера позже стало создание подобного на базе Attiny 85, но по несколько другому принципу. Алгоритм работы таймера состоял в следующем. К микроконтроллеру Attiny 85, а именно к ножкам 5,6,7 подключались светодиоды, можно разного цвета. При этом один из них горел час, потом второй опять, час, третий снова час, а на четвертый час третий светодиод начинал моргать. Несколько другой принцип, но предназначение то же, то есть такая конструкция работала как таймер.
В скетче пропишу комментарии, как работает программа. (частота при заливке 1 МHz, минимум для Attiny 85). Из-за этого пришлось изменить количество циклов по сравнению с предыдущим скетчем. Для одного часа используется 1080 циклов.
Для новичков
...если до этого вы никак и никогда не занимались микроконтроллерами, то в первую очередь необходимо:
- создать программатор на базе Ардуино;
- научиться заливать простые скетчи (как и этот). Приведено в создании программатора;
- собрать таймер и залить этот самый скетч.