Таймеры/счётчики в AVR
- Dr. Alex
- Это не хвост, это антенна
- Сообщения: 1438
- Зарегистрирован: Вт окт 28, 2008 09:00:18
- Откуда: Украина, Харьков
- Контактная информация:
Таймеры/счётчики в AVR
Объясните мне, никак не могу взять в толк, TCCR1A и TCCR1B в чём прикол?
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
- blackx
- Говорящий с текстолитом
- Сообщения: 1518
- Зарегистрирован: Пт дек 28, 2012 21:56:46
- Откуда: St. Petersburg
Re: Таймеры в AVR
Все приколы расписаны со стр. 96
http://www.atmel.com/images/atmel-2486- ... asheet.pdf
еще приколы
тут http://easyelectronics.ru/avr-uchebnyj- ... jmery.html
и
тут http://easyelectronics.ru/avr-uchebnyj- ... -shim.html
http://www.atmel.com/images/atmel-2486- ... asheet.pdf
еще приколы
тут http://easyelectronics.ru/avr-uchebnyj- ... jmery.html
и
тут http://easyelectronics.ru/avr-uchebnyj- ... -shim.html
only pure true norwegian blackx 
- Dr. Alex
- Это не хвост, это антенна
- Сообщения: 1438
- Зарегистрирован: Вт окт 28, 2008 09:00:18
- Откуда: Украина, Харьков
- Контактная информация:
Re: Таймеры в AVR
А в двух словах не можете объяснить? Что-то не вкуриваю...... 
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
- blackx
- Говорящий с текстолитом
- Сообщения: 1518
- Зарегистрирован: Пт дек 28, 2012 21:56:46
- Откуда: St. Petersburg
Re: Таймеры в AVR
Два слова: не могу.
Читайте, разбирайтесь и задавайте конкретные вопросы.
Читайте, разбирайтесь и задавайте конкретные вопросы.
only pure true norwegian blackx 
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: Таймеры в AVR
два слова: настройки таймера
- Dr. Alex
- Это не хвост, это антенна
- Сообщения: 1438
- Зарегистрирован: Вт окт 28, 2008 09:00:18
- Откуда: Украина, Харьков
- Контактная информация:
Re: Таймеры в AVR
Я просто не могу понять разницы между TCCR1A и TCCR1B..... Просто во многих примерах TCCR1A=0х00; НО, в некоторых какому-то числу.....
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
- blackx
- Говорящий с текстолитом
- Сообщения: 1518
- Зарегистрирован: Пт дек 28, 2012 21:56:46
- Откуда: St. Petersburg
Re: Таймеры в AVR
это просто два разных регистра. Ну не влезли в один - взяли и второй инженегры Атмела запилилиНу так вот, есть два регистра, в каждом по восемь битов. У каждого бита может быть своя задача, некоторые могут быть объединены.
Открываем датащит, смотрим регистр 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
Теперь стало яснее, но, получается они под одним таймером?
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
- blackx
- Говорящий с текстолитом
- Сообщения: 1518
- Зарегистрирован: Пт дек 28, 2012 21:56:46
- Откуда: St. Petersburg
Re: Таймеры в AVR
Ага, это все к таймеру 1 относится, который 16-битный
only pure true norwegian blackx 
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: Таймеры в AVR
TCCR1A, TCCR1B. Думаете что значит цифра?
- Dr. Alex
- Это не хвост, это антенна
- Сообщения: 1438
- Зарегистрирован: Вт окт 28, 2008 09:00:18
- Откуда: Украина, Харьков
- Контактная информация:
Re: Таймеры в AVR
Да я догадывался, но решил спросить у старших братьев.... А меня сразу в штыки

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

only pure true norwegian blackx 
- Gudd-Head
- Друг Кота
- Сообщения: 20091
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Таймеры в AVR
На самом деле, тема с таймерами и ШИМ не такая уж простая, без поллитра не разберёшся. Тему прилепил.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: Таймеры в AVR
Да? В даташите же все расписано. Или может это я не выглядывал в какие-то особые дебри?
Хотя в чем-то вы правы.
Хотя в чем-то вы правы.
- blackx
- Говорящий с текстолитом
- Сообщения: 1518
- Зарегистрирован: Пт дек 28, 2012 21:56:46
- Откуда: St. Petersburg
Re: Таймеры в AVR
Да, действительно, по таймерам в АВР больше всего новых тем. Это, пожалуй, самое нужное устройство МК и самое сложное в освоении.
only pure true norwegian blackx 
- Eugene.Negrobov
- Мучитель микросхем
- Сообщения: 472
- Зарегистрирован: Ср фев 15, 2012 09:00:34
- Откуда: Киев
Re: Таймеры в AVR
Вот как не ругайте, а вот именно с таймерами разобраться, имея в руках генератор кода- проще простого.
I'm on a huge rock, flying through space!
- blackx
- Говорящий с текстолитом
- Сообщения: 1518
- Зарегистрирован: Пт дек 28, 2012 21:56:46
- Откуда: St. Petersburg
Re: Таймеры в AVR
Eugene.Negrobov, нечего тут приучать людей "писать" код с помощью мышки 
only pure true norwegian blackx 
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: Таймеры в AVR
Самое нужное может быть, самое сложное - едва ли. ИМХО с интерфейсами гораздо больше возни, особенно если все делать как положено а не как всегда. То есть проверять ошибки приема-передачи, например
- Gudd-Head
- Друг Кота
- Сообщения: 20091
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Таймеры в AVR
Ну что ж... Может, получится сделать что-то вроде 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") стопорит таймер/счётчик. Ну, плюс ещё по биту флаг, маска прерывания и сброс прескалера.
Для начала возьмём простой как резистор 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
Хм... Теперь стало более-менее яснее... Спасибо, но есть ещё некоторые ньюансы, спрошу попозже.
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...