Таймеры/счётчики в AVR

Обсуждаем контроллеры компании Atmel.
Против часовой
Открыл глаза
Сообщения: 72
Зарегистрирован: Вт апр 01, 2014 16:33:06
Откуда: Москва

Re: Таймеры/счётчики в AVR

Сообщение Против часовой »

Ни в коем разе. Естифеева читал, и поскольку не отложилось, что там про это было, решил поспрашать другие источники.
Реклама
Аватара пользователя
sergo80zxc
Встал на лапы
Сообщения: 113
Зарегистрирован: Пт апр 04, 2014 09:34:08
Откуда: Санкт-Петербург

Re: Таймеры/счётчики в AVR

Сообщение sergo80zxc »

как же бесит этот Евстееф до дыр зачитал, ни....на не пойму эти таймеры счетчики как их настраивать
я думаю там для специалистов в этой области написано, а не для чайников вроде меня, неужели
нельзя объяснить это для этого, это для таго и примеры, а там тонна сухарей с одного на другое
я бы не сказал, что я тормоз, но 3 дня синею за матчастью :(
глаза боятся, а руки что то не делают))
Реклама
Аватара пользователя
ИС-пытатель
Вымогатель припоя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Re: Таймеры/счётчики в AVR

Сообщение ИС-пытатель »

но 3 дня синею за матчастью
Мы тут все синяки! :)))

А что не понятного? )) Есть один-три регистра управления (Их несколько потому что все настройки в один не поместились. но пугаться не стоит - большинство настроек однотипные), регистры сравнения и счетный регистр. )) Таймер может управлять парой выходов (3-мя в некоторых моделях). и может тактироваться либо от частоты проца, либо извне, с сигнала приходящего на ножку. + пара регистров для настройки и регистрации прерываний. +несколько регистров не нужных Вам на данном этапе обучения.

В счетном регистре насчитываются такты. При совпадении с числом одного из регистров совпадения (зависит от режима) или по достижению конца генерируется прерывание. А вот режимы и остальные настройки выставляются как раз в управляющих регистрах.
Я помнится тоже не с первого раза это усвоил. Поэтому предлагаю читать не все подряд. а выборочно, частями. Прочитали, например про режим сброс по переполнению. остановились. подумали. попробовали (обязательно). остальные режимы либо на следующий день, либо отложите до лучших времен, пока не понадобятся. Т.е. читайте только то, что Вам нужно сейчас. Поверьте, здесь нет ни одного человека, который знает AVR на все 100 %. Потому что даже если Вы все прочтете - Вы все это не запомните. Всегда нужно попробовать, а еще лучше помучиться с этим, а это время. А еще по первости помогает выписать регистры на бумажку и карандашиком проставить биты, какие необходимо в какие значения установить, чтобы активировать нужный режим. На второй раз уже легче читаться будет. Еще читайте пока только про 8-битные таймеры. 16-тибитные оставьте на потом.
Удачи! ;)

P.S. Статейку что ли по таймерам написать... Чтобы легче усваивалось...

А вот, кстати, кто-то уже написал. ))
http://radiokot.ru/start/mcu_fpga/avr/11/
Последний раз редактировалось ИС-пытатель Ср апр 30, 2014 08:54:24, всего редактировалось 2 раза.
Аватара пользователя
sergo80zxc
Встал на лапы
Сообщения: 113
Зарегистрирован: Пт апр 04, 2014 09:34:08
Откуда: Санкт-Петербург

Re: Таймеры/счётчики в AVR

Сообщение sergo80zxc »

ИС-пытатель спасибо , что откликнулись) а то матерюсь сижу) в том то и дело) что у Евстеева написано все в кучу и о всех таймерах сразу и о всех МК и 16 и 8 битные в кучу, прочитаю каша в голове))
вот кто нибудь написал бы для котят мол атмега8)) таймер Т0, 8 битные, и все о нем рассказал показал))
тогда б и усвоилось все улыбаясь)) просто понимаю , что не сложно, но написано ну не дать не взять
на немецкой энигме)))))
глаза боятся, а руки что то не делают))
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ИС-пытатель
Вымогатель припоя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Re: Таймеры/счётчики в AVR

Сообщение ИС-пытатель »

Вот, специально для Вас написал! Мож, админы опубликуют - будет еще кому полезна.
Добавил в конце примеры с настройкой прерываний.
Вложения
Таймер АВР.rar
(211.07 КБ) 317 скачиваний
Последний раз редактировалось ИС-пытатель Ср апр 30, 2014 10:31:04, всего редактировалось 2 раза.
Реклама
Аватара пользователя
sergo80zxc
Встал на лапы
Сообщения: 113
Зарегистрирован: Пт апр 04, 2014 09:34:08
Откуда: Санкт-Петербург

Re: Таймеры/счётчики в AVR

Сообщение sergo80zxc »

ИС-пытатель респект и уважуха))) спасибо большое, совсем другое дело))
единственное пример бы в конце статьи) что бы котята наглядно видели как выглядит настройка)
и тогда все горемыки на статью кинутся как на спасительный плот)
глаза боятся, а руки что то не делают))
Реклама
Аватара пользователя
ИС-пытатель
Вымогатель припоя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Re: Таймеры/счётчики в AVR

Сообщение ИС-пытатель »

Так там есть пример небольшой. ) Правда на Си. На ассемблере все тоже самое, только загрузка в регистр идет через промежуточный основной (r16, например).
сброс флагов прерываний TIFR = 0xFF; (Закидываем все единицы, чтобы сбросить все флаги)
запись TIFR = TIFR; также сбросит установленные флаги
или TIFR = (1<<TOV0); сбрасываем только флаг TOV0
разрешить прерывание TIMSK |= (1<<TOV0);
запретить прерывание TIMSK &= ~(1<<TOV0);
Последний раз редактировалось ИС-пытатель Ср апр 30, 2014 10:24:17, всего редактировалось 2 раза.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Таймеры/счётчики в AVR

Сообщение Gudd-Head »

ИС-пытатель писал(а):Мож, админы опубликуют
А чё сразу админы? Сам накропай, будем новичков носом тыкать :)
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
ИС-пытатель
Вымогатель припоя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Re: Таймеры/счётчики в AVR

Сообщение ИС-пытатель »

Да там, в принципе, упрощенный и пережеванный Евстифеев.
Gudd-Head, почему я не могу изменить рейтинг чужих сообщений или карму пользователей? У меня запускается какой-то скрипт и виснет... когда отменяю - все остается на прежнем месте. Пользуюсь Гугл-хромом.
Кстати, как статью добавить на сайт?
Аватара пользователя
sergo80zxc
Встал на лапы
Сообщения: 113
Зарегистрирован: Пт апр 04, 2014 09:34:08
Откуда: Санкт-Петербург

Re: Таймеры/счётчики в AVR

Сообщение sergo80zxc »

ИС-пытатель если бы я еще и Си знал, думаю нубских вопросов было бы меньше)))
глаза боятся, а руки что то не делают))
Аватара пользователя
ИС-пытатель
Вымогатель припоя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Re: Таймеры/счётчики в AVR

Сообщение ИС-пытатель »

Все элементарно, Ватсон!

Там где просто TCCR0 = xxxx;
заменяете на
ldi r16, xxxx
ount TCCR0, r16

там где TCCR0 |= xxxx; // означает прочитать регистр, и провести операцию побитного ИЛИ с числом xxxx
заменяете на
in r16, TCCR0
ori r16, xxxx
out TCCR0, r16

там где TCCR0 &= xxxx; // означает прочитать регистр, и провести операцию побитного И с числом xxxx
заменяете на
in r16, TCCR0
andi r16, xxxx
out TCCR0, r16

там где TCCR0 = TCCR0
пишете
in r16, TCCR0
out TCCR0, r16.

Естественно, если у Вас периферийный регистр в вашем контроллере находится вне диапазона адреса 0x3F, то вместо операций in-out необходимо использовать операции
sts-lds и им подобные.

Все вычисления вида ~((1<<XYZ) | (0<<ZYX)) выполняются самим компилятором и так же работают на асме. Изменять не требуется.
Аватара пользователя
sergo80zxc
Встал на лапы
Сообщения: 113
Зарегистрирован: Пт апр 04, 2014 09:34:08
Откуда: Санкт-Петербург

Re: Таймеры/счётчики в AVR

Сообщение sergo80zxc »

испытатель спасибо)
только вот строки)

Все вычисления вида ~((1<<XYZ) | (0<<ZYX)) так же работают и на асме. Изменять не требуется.


меня немного смущают :oops:
инверсия битов?
глаза боятся, а руки что то не делают))
Аватара пользователя
ИС-пытатель
Вымогатель припоя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Re: Таймеры/счётчики в AVR

Сообщение ИС-пытатель »

~ побитная инверсия числа
a << b сдвиг числа a влево b раз
a >> b аналогично вправо
| побитное ИЛИ
& побитное И

это сделано для читабельности, переносимости и исключения ошибок, чтобы не писать побитно в виде 0b00100101, хотя если Вам на данном этапе удобней побитно - пишите как умеете. Потом освоите и остальное.

P.S при сооружений конструкций с << ~ | & активней пользуйтесь скобками - будет меньше ошибок.
Аватара пользователя
sergo80zxc
Встал на лапы
Сообщения: 113
Зарегистрирован: Пт апр 04, 2014 09:34:08
Откуда: Санкт-Петербург

Re: Таймеры/счётчики в AVR

Сообщение sergo80zxc »

испытатель а обязательно так писать с или инверсией и т д?
по простому никак? типа

ldi r16, 0b00000011
out TIFR, r16

так хоть наглядно видно где какой бит стоит
глаза боятся, а руки что то не делают))
Аватара пользователя
ИС-пытатель
Вымогатель припоя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Re: Таймеры/счётчики в AVR

Сообщение ИС-пытатель »

Так я ж говорю, пишите, как умеете! ))

не принципиально.

Только у Вас сброс битов будет таким

andi r16, 0b11111011 ; сбросить 2-й бит, остальные - без изменений. Это заместо инверсии ~0b00000100
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Таймеры/счётчики в AVR

Сообщение Gudd-Head »

ИС-пытатель писал(а):Gudd-Head, почему я не могу изменить рейтинг чужих сообщений или карму пользователей?
Возможно, из-за плохой кармы.
ИС-пытатель писал(а):Кстати, как статью добавить на сайт?
Ссылка на главной: http://radiokot.ru/upload/?new=1
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
sergo80zxc
Встал на лапы
Сообщения: 113
Зарегистрирован: Пт апр 04, 2014 09:34:08
Откуда: Санкт-Петербург

Re: Таймеры/счётчики в AVR

Сообщение sergo80zxc »

ИС-пытатель и пример, пример не забудте по простому который в статью :oops: :)
глаза боятся, а руки что то не делают))
Аватара пользователя
Lenin_01
Родился
Сообщения: 2
Зарегистрирован: Пт май 02, 2014 21:24:14

Re: Таймеры/счётчики в AVR

Сообщение Lenin_01 »

Доброго времени суток, товарищи.
С микроконтроллерами дел ранее не имел, но жизнь заставляет... А самому разобраться мозгов не хватает...

Собственно, с геркона поступает сигнал, время паузы которого меняется от t1=68 мс до t2=385 мс. Есть микроконтроллер attiny2313.
Нужна функция, которая будет возвращать значение этого времени паузы.

Частота такирования 8 МГц. Какой делитель на таймере использовать? Что писать в теле программы, чтобы таймер включить? К какой ножке подключаться?

И ещё вопрос. Предположим, импульсы с геркона перестали поступать. Счетчик когда-нибудь переполнится, так? Можно ли по переполнению запустить какую-то функцию?
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6308
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Таймеры/счётчики в AVR

Сообщение Jack_A »

Все так просто, Владимир Ильич ? Научите побыстрее меня программировать в течение ближайшего получаса. Вряд ли... Думаю, вопрос надо сформулировать так: напишите мне этот кусок проги. Куда возвращать значение - в программу, которая уже есть, т.е. вопрос только в измерении интервала ? В этой проге уже задействованы какие-нить прерывания ? Или передавать во внешний мир - по интерфейсу или на ЖКИ ? В каких единицах ? Как часто надо снимать инфу ?
Для начала надо самому себе сформулировать задачу на алгоритмичемсом уровне, если есть навык, то и схему алгоритма нарисовать. Если - то, а если так - то вот этак. И привести кусок проги, куда ее надо встроить.
Правильно поставленный вопрос уже содержит половину ответа. Ну а если темнить, скрывая конкретную задачу - вряд ли помогут. Похоже, что-то вроде тахометра или стабилизатора скорости.
Кстати, это на рассыпухе, без МК, решается на раз. Как-то так.
Функцию запустить можно.
Вложения
Strob.JPG
(7.48 КБ) 650 скачиваний
Аватара пользователя
Lenin_01
Родился
Сообщения: 2
Зарегистрирован: Пт май 02, 2014 21:24:14

Re: Таймеры/счётчики в AVR

Сообщение Lenin_01 »

Jack_A писал(а):Ну а если темнить, скрывая конкретную задачу - вряд ли помогут
Хорошо. Рассказываю всё по порядку. В обычной жизни я вожусь по большей части с мопедами, а не с электроникой. Язык С немного знаю, пару программ для компьютера писал.

Конкретная задача: есть старый мопед без спидометра. родной механический установить нельзя, ибо в новых колёсах нет места для крепления червяка. Цифровой спидометр с 7-и сегментным индикатором будет портить раритетный внешний вид. Суть - сделать стрелочный спидометр с электронным управлением. Пусть, он будет работать в диапазоне 5-65 км/ч.

Индикаторы:
1. стрелочный. управляется меандром частотой 0-200 Гц.
2. маленький 5-и цифровой семисигментник (в качестве одометра)
Ввод данных - с геркона, которым управляет магнит на колесе.
Jack_A писал(а):Для начала надо самому себе сформулировать задачу на алгоритмичемсом уровне
1. Программа должна измерить время одного периода вращения колеса. С этим у меня возникают трудности...
2. Преобразовать эту информацию в скорость и пробег. Это математика, тут я справлюсь
3. Вывод информации на индикаторы. Тут я тоже представляю принцип работы. Как понимаю, меандр генерировать с помощью одного таймера. 7-и сегментном управлять с помощью delay. Тогда второй таймер остается на измерение времени на входе.
4. Пробег надо бы сохранять в энергонезависимую память, дабы он не сбрасывался всякий раз, как отключается питание. Поскольку память не вечная, есть идея записывать информацию всякий раз, как мопед останавливается, т.е. скорость равна 0, импульсы с геркона не поступают. Представлений о работе с памятью тоже не имею...
как-то так...
Jack_A писал(а):Думаю, вопрос надо сформулировать так: напишите мне этот кусок проги. Куда возвращать значение - в программу, которая уже есть, т.е. вопрос только в измерении интервала ?
Собственно, да. Вопрос у меня именно в измерении интервала.
Ответить

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