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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Dr. Alex
Это не хвост, это антенна
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков
Контактная информация:

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

Сообщение Dr. Alex »

Объясните мне, никак не могу взять в толк, TCCR1A и TCCR1B в чём прикол?
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Таймеры в AVR

Сообщение blackx »

Изображение only pure true norwegian blackx Изображение
Аватара пользователя
Dr. Alex
Это не хвост, это антенна
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков
Контактная информация:

Re: Таймеры в AVR

Сообщение Dr. Alex »

А в двух словах не можете объяснить? Что-то не вкуриваю...... :)
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Таймеры в AVR

Сообщение blackx »

Два слова: не могу.

Читайте, разбирайтесь и задавайте конкретные вопросы.
Изображение only pure true norwegian blackx Изображение
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Таймеры в AVR

Сообщение COKPOWEHEU »

два слова: настройки таймера
Аватара пользователя
Dr. Alex
Это не хвост, это антенна
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков
Контактная информация:

Re: Таймеры в AVR

Сообщение Dr. Alex »

Я просто не могу понять разницы между TCCR1A и TCCR1B..... Просто во многих примерах TCCR1A=0х00; НО, в некоторых какому-то числу.....
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Таймеры в AVR

Сообщение blackx »

:facepalm: это просто два разных регистра. Ну не влезли в один - взяли и второй инженегры Атмела запилили

Ну так вот, есть два регистра, в каждом по восемь битов. У каждого бита может быть своя задача, некоторые могут быть объединены.

Открываем датащит, смотрим регистр TCCR1A:

COM1A1 COM1A0 COM1B1 COM1B0 FOC1A FOC1B WGM11 WGM10

1) COM1A1 COM1A0 COM1B1 COM1B0: для выводов OC1A and OC1B выбран Normal port operation, OC1A/OC1B disconnected.
2) FOC1A FOC1B: просто выключены, можно не заморачиваться пытаясь понять что такое Force Output Compare (я и сам не знаю :))) )
3) WGM11 WGM10 - тут уже половина битов в другом регистре определена (который B). Смотрим таблицу 39 меги8 - там каждый режим описан.

Точно так же с TCCR1B.
Последний раз редактировалось blackx Пт авг 30, 2013 21:34:41, всего редактировалось 1 раз.
Изображение only pure true norwegian blackx Изображение
Аватара пользователя
Dr. Alex
Это не хвост, это антенна
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков
Контактная информация:

Re: Таймеры в AVR

Сообщение Dr. Alex »

Теперь стало яснее, но, получается они под одним таймером?
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Таймеры в AVR

Сообщение blackx »

Ага, это все к таймеру 1 относится, который 16-битный
Изображение only pure true norwegian blackx Изображение
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Таймеры в AVR

Сообщение COKPOWEHEU »

TCCR1A, TCCR1B. Думаете что значит цифра?
Аватара пользователя
Dr. Alex
Это не хвост, это антенна
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков
Контактная информация:

Re: Таймеры в AVR

Сообщение Dr. Alex »

Да я догадывался, но решил спросить у старших братьев.... А меня сразу в штыки :cry: :cry: :cry:
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Таймеры в AVR

Сообщение blackx »

Так спросили.

Старайтесь задавать вопросы более ясно :beer:
Изображение only pure true norwegian blackx Изображение
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Таймеры в AVR

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

На самом деле, тема с таймерами и ШИМ не такая уж простая, без поллитра не разберёшся. Тему прилепил.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Таймеры в AVR

Сообщение COKPOWEHEU »

Да? В даташите же все расписано. Или может это я не выглядывал в какие-то особые дебри?
Хотя в чем-то вы правы.
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Таймеры в AVR

Сообщение blackx »

Да, действительно, по таймерам в АВР больше всего новых тем. Это, пожалуй, самое нужное устройство МК и самое сложное в освоении.
Изображение only pure true norwegian blackx Изображение
Аватара пользователя
Eugene.Negrobov
Мучитель микросхем
Сообщения: 472
Зарегистрирован: Ср фев 15, 2012 09:00:34
Откуда: Киев

Re: Таймеры в AVR

Сообщение Eugene.Negrobov »

Вот как не ругайте, а вот именно с таймерами разобраться, имея в руках генератор кода- проще простого.
I'm on a huge rock, flying through space!
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Таймеры в AVR

Сообщение blackx »

Eugene.Negrobov, нечего тут приучать людей "писать" код с помощью мышки :)))
Изображение only pure true norwegian blackx Изображение
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Таймеры в AVR

Сообщение COKPOWEHEU »

Самое нужное может быть, самое сложное - едва ли. ИМХО с интерфейсами гораздо больше возни, особенно если все делать как положено а не как всегда. То есть проверять ошибки приема-передачи, например
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Таймеры в AVR

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

Ну что ж... Может, получится сделать что-то вроде FAQ по таймерам/счётчикам AVR в режиме диалога, поправьте меня если я где не прав.
Для начала возьмём простой как резистор 8-битный таймер/счётчик0 8-й Меги:
Изображение
Считает только вперёд, флаг и прерывание выставляется когда переваливается через 255 ($FF) на 0 ($00). Соответственно, в режиме таймера чтобы отмерить определённый временной интервал Т, надо заслать соответсвующее число в TCNT0, заранее вычислив его по формуле
TCNT0 = (256 - T/clkТ0), где clkТ0 — частота тактирования таймера/счётчика0.
Источник тактовых импульсов может быть как внешним (через пин Т0), так и внутренним — тот что тактирует МК clkI/O, с предделителем или без:
Изображение
Предделитель (прескалер) считает постоянно, поэтому используя в качестве тактов СК/8, СК/64, СК/256 или СК/1024 перед запуском таймера хорошо бы его сбрасывать (ресетить) для получения точных временных интервалов. Однако, таймер/счётчик0 и таймер/счётчик1 используют один и тот же предделитель, так что сбрасывать надо осторожно чтобы не сбить работу другого таймера.
Таким образом, лучше использовать максимально возможную частоту счёта clkТ0. Например, отсчитать 256 мкс при тактовой clkI/O = 1 МГц (встроенный RC-генератор, заводские фьюзы для 8-й Меги). Возможные комбинации (без сброса предделителя):
1. clkТ0 = clkI/O, TCNT0 = 0. Итог: 256 мкс;
2. clkТ0 = СК/8, TCNT0 = 224. Итог: 248...256 мкс;
3. clkТ0 = СК/64, TCNT0 = 252. Итог: 192...256 мкс;
4. clkТ0 = СК/256, TCNT0 = 255. Итог: 1...256 мкс.
Управляется сие чудо, по сути, всего тремя значащими (младшими) битами регистра TCCR0, которые указывают источник тактового сигнала. Его отсутствие (комбинация "000") стопорит таймер/счётчик. Ну, плюс ещё по биту флаг, маска прерывания и сброс прескалера.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Dr. Alex
Это не хвост, это антенна
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков
Контактная информация:

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

Сообщение Dr. Alex »

Хм... Теперь стало более-менее яснее... Спасибо, но есть ещё некоторые ньюансы, спрошу попозже.
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Ответить

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