Циклический таймер на ATtmega8A.

Обсуждаем контроллеры компании Atmel.
Самсусамыч

Циклический таймер на ATtmega8A.

Сообщение Самсусамыч »

Алгоритм которого написан по просьбе Александр_73.
Александр_73 писал(а):По возможности програмируем время покоя, время работы и общее время программы.Общее время программы до 24часов.
ПРИМЕР 1:включили,задаем время покоя 10мин,время работы 1сек,общее время 6часов.
ПРИМЕР2:включили ,время покоя 3мин,время работы 30сек,общее время 1час
В таймере можно выбирать период, продолжительность времени которого логической единицы (Hi) от 1 сек. до 59 мин и время логического нуля (Lo) также от 1 сек. до 59 мин. А также можно выбирать количество циклов (общее время работы до 24 часов.).
Для понимания работы в виде примера: допустим время лог 1 (Hi) выставили 5 секунд, а время лог 0 (Lo) выставили 3 минуты. Таким образом, общее время периода составило - 3 мин, 5 сек. Если нам нужно общее время работы около 1 часа, то в данном примере это получится 19 периодов, то есть время общей работы точнее составит 58 минут 35 секунд.

Устройство выполнено на МК ATtmega8A. МК тактируется на частоте 4 МГц. Ставить или не ставить кварцевый резонатор зависит от желания пользователя. В виде дисплея используется LCD WH1602 или подобный на HD44780 (шрифт используется латиница).
Схема:
Изображение
Прошивка:
Timer.hex
Фьюзы для тактирования от внутреннего генератора:
F1.png
Фьюзы для тактирования от кварца:
F2.png
Краткое описание управления.
Описание.pdf
ЗЫ. Прошивка требует тщательного тестирования. Тестирование мною производилось поверхностно.
СпойлерИзображение
Последний раз редактировалось Самсусамыч Ср апр 07, 2021 14:22:46, всего редактировалось 1 раз.
Реклама
Александр_73
Открыл глаза
Сообщения: 66
Зарегистрирован: Пт фев 15, 2013 21:08:33

Re: Циклический таймер на ATtmega8A.

Сообщение Александр_73 »

Спасибо,проверю.
Реклама
Аватара пользователя
Starichok51
Модератор
Сообщения: 19048
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Циклический таймер на ATtmega8A.

Сообщение Starichok51 »

то, что весь экран на порте РС - это не удобно в программе - нужно передаваемый байт двигать туда-сюда для передачи старшей и младшей тетрады.
я у себя сажаю данные на экран на порты PD4-PD7. это получается, что старшую тетраду можно передавать сразу, а для передачи младшей тетрады применить всего одну команду swap.
и еще одно неудобство применения в качестве выходов выводов порта РС - обязательно нужно подавать питание на вывод AVCC.
в моем же случае подавать питание на вывод AVCC вообще не нужно, что упрощает монтаж.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Самсусамыч

Re: Циклический таймер на ATtmega8A.

Сообщение Самсусамыч »

Библиотека для ЖКИ написана для универсального использования выводов МК. То есть, нет жёсткой привязки какого либо порта… да, универсальные алгоритмы с точки зрения минимизации кода считаются более массивными, но зато позволяют быстро манипулировать выводами при необходимости во время создания ПП. Если у кого возникнут потребности для изменения портов подключения ЖКИ или кнопок, то это легко можно будет организовать.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Циклический таймер на ATtmega8A.

Сообщение pyzhman »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4011479#p4011479"]...swap...[/uquote]
Пишем на С, подключаем библиотеки и забываем про
Starichok51 писал(а):...не удобно...
Docendo discimus
Реклама
Аватара пользователя
Starichok51
Модератор
Сообщения: 19048
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Циклический таймер на ATtmega8A.

Сообщение Starichok51 »

кому что нравится, дело вкуса ....
лично я пишу на ассемблере и вообще никакими библиотеками не пользуюсь.
для меня написать вывод на 1602 - примерно, как два пальца ...
и изменить порты, при необходимости, - точно также.
хотя я заново для каждого проекта не пишу вывод на 1602, а просто копирую из ранее сделанных проектов.
у меня на ассемблере разработана собственная "плавающая точка", которая гораздо быстрее работает Сишной "float".
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Аватара пользователя
Alex_641
Поставщик валерьянки для Кота
Сообщения: 2314
Зарегистрирован: Вт янв 26, 2021 22:33:21

Re: Циклический таймер на ATtmega8A.

Сообщение Alex_641 »

У меня готовое устройство , простой - работа от 0 сек до 99 часов, 99 минут, 99 секунд .. до 99 циклов . Всё проверено , не раз . Правда на микрочипе (16ф684) . А ещё и для лсд на Кириллице.
Не спрашивай по ком звонит колокол, он звонит по тебе !
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Циклический таймер на ATtmega8A.

Сообщение Jack_A »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4011760#p4011760"]у меня на ассемблере разработана собственная "плавающая точка", которая гораздо быстрее работает Сишной "float".[/uquote]
Таковы мы, олдскульные :) То же самое, причём для двух платформ: AVR и ST62XX. + функции: тригонометрия, корень, степень.
СпойлерСебя не похвалишь - сидишь как оплёванный ( © туристская мудрость ) :))
Изображение
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15556
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Циклический таймер на ATtmega8A.

Сообщение BOB51 »

Рационально и разумно все, чем в конкретное время владеешь и можешь с максимальной пользой для конкретного случая применить.
:beer:
Аватара пользователя
Starichok51
Модератор
Сообщения: 19048
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Циклический таймер на ATtmega8A.

Сообщение Starichok51 »

Jack_A писал(а):+ функции: тригонометрия, корень, степень.
+ функции я не делал - пока мне без надобности.
ограничился 4-мя арифметическими операциями - сложение, вычитание, умножение и деление.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
Alex_641
Поставщик валерьянки для Кота
Сообщения: 2314
Зарегистрирован: Вт янв 26, 2021 22:33:21

Re: Циклический таймер на ATtmega8A.

Сообщение Alex_641 »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4011760#p4011760"]у меня на ассемблере разработана собственная "плавающая точка", которая гораздо быстрее работает Сишной "float".[/uquote]
А Кто сказал что в СИ обязательно пользоваться float ?
Не спрашивай по ком звонит колокол, он звонит по тебе !
Аватара пользователя
Starichok51
Модератор
Сообщения: 19048
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Циклический таймер на ATtmega8A.

Сообщение Starichok51 »

да оно и в ассемблере далеко не всегда надо.
в подавляющем числе случаев достаточно работы с целыми числами. а положение точки (запятой) для каждого конкретного параметра фиксированное.
у меня до сих пор все проекты в целых двухбайтовых числах, еще ни разу не пользовался плавающей точкой.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
Alex_641
Поставщик валерьянки для Кота
Сообщения: 2314
Зарегистрирован: Вт янв 26, 2021 22:33:21

Re: Циклический таймер на ATtmega8A.

Сообщение Alex_641 »

Если допустим нужно приращение очень малого параметра к счётчику ( к примеру замер емкости набранной за 0,1 секунды и прибавление к общему счётчику) можно считать в переменную типа INT32 с умножением на 10 000 000 . Если непонятно то объясню на примере.
Не спрашивай по ком звонит колокол, он звонит по тебе !
Аватара пользователя
Starichok51
Модератор
Сообщения: 19048
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Циклический таймер на ATtmega8A.

Сообщение Starichok51 »

чтобы не потерять мелкую добавку к суммирующему счетчику делается совсем иначе.
для накопительного счетчика при очень маленькой прибавке сохраняется остаток от деления.
потом, при следующем делении, этот остаток сначала прибавляется, а уже потом делается деление и опять сохраняется новый остаток.
например.
расчет емкости ведем каждую секунду, поэтому для получения амперчасов проходящий ток нужно делить на 3600 секунд.
и допустим, что ток у нас измеряется в миллиамперах, поэтому будем считать в миллиамперчасах.
пусть ток будет 100 мА.
делим 100 на 3600 - целой части нет, и 100 попадает в остаток.
через 2 секунды мы к 100 прибавляем остаток 100, и делим 200 на 3600. 200 опять попадает в остаток.
через 35 секунд остаток будет равен 3500.
через 36 секунд 100 + 3500 делим на 3600 и получаем 1 - 1 мАч.
через 3600 секунд (1 час) мы получаем ровно 100 мАч.
а зачем тебе такое большое число 10 000 000?
ты что, собираешься считать емкость в микроамперчасах или даже в наноамперчасах? кому такое нужно?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
Alex_641
Поставщик валерьянки для Кота
Сообщения: 2314
Зарегистрирован: Вт янв 26, 2021 22:33:21

Re: Циклический таймер на ATtmega8A.

Сообщение Alex_641 »

Ток у нас не одинаковый ! Зарядные устройства телефонов ( ГАДжеТОВ) не держат ток на одном уровне !!!

Добавлено after 21 minute 37 seconds:
То есть ток заряда регулируют не зарядные устройства, а контроллеры в устройствах конечно - но это не важно кто . Наша задача считать ёмкость.

Добавлено after 1 hour 31 minute 48 seconds:
:) Как быть? Задача : просто подсчитать ёмкость за 0,1 секунды ! От АЦП ! То есть ТОК - не постоянный . Ток считанный и равный миллиамперам !
Не спрашивай по ком звонит колокол, он звонит по тебе !
Аватара пользователя
Starichok51
Модератор
Сообщения: 19048
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Циклический таймер на ATtmega8A.

Сообщение Starichok51 »

я очень подробно расписал, как считать емкость, что тебе еще осталось не понятно?
а по поводу 0,1 секунды я тебе задал вопрос:
ты что, собираешься считать емкость в микроамперчасах или даже в наноамперчасах?
но ты на него не ответил.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
Alex_641
Поставщик валерьянки для Кота
Сообщения: 2314
Зарегистрирован: Вт янв 26, 2021 22:33:21

Re: Циклический таймер на ATtmega8A.

Сообщение Alex_641 »

Ты конечно подробно расписал, но немного не адекватно , может хотел запутать ? И у тебя это получилось ! Твоя фраза "делим 100 на 3600 - целой части нет, и 100 попадает в остаток." Когда делим 100 на 3600 (в целочисленном делении) в остаток попадает ноль. Ну я разобрался с алгоритмом . Наверное он имеет место быть .
Не спрашивай по ком звонит колокол, он звонит по тебе !
Аватара пользователя
Starichok51
Модератор
Сообщения: 19048
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Циклический таймер на ATtmega8A.

Сообщение Starichok51 »

Когда делим 100 на 3600 (в целочисленном делении) целая часть равна нулю, а в остаток попадает 100.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
Alex_641
Поставщик валерьянки для Кота
Сообщения: 2314
Зарегистрирован: Вт янв 26, 2021 22:33:21

Re: Циклический таймер на ATtmega8A.

Сообщение Alex_641 »

Это по какому закону ньютона ? Там получается ( по математике , может какой то другой) =0,027777

Добавлено after 2 minutes 57 seconds:
Может ты слишком умный , а я слишком тупой , и потому Мы не можем понять друг друга ?
Не спрашивай по ком звонит колокол, он звонит по тебе !
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: Циклический таймер на ATtmega8A.

Сообщение parovoZZ »

Который раз убеждаюсь, что интернет выдуман очень умными людьми, но для обезьян. Поэтому в нём есть даже калькулятор остаток от деления (йопт..)

https://ru.onlinemschool.com/math/assis ... ry/modulo/

Если кто-то что-то подзабыл, то велком.
Ответить

Вернуться в «AVR»