Таймер2
- Войдите на сайт для отправки комментариев
Ср, 13/07/2022 - 17:52
Что то не могу въехать... И, как бы, раньше понимал, а теперь вот... забыл). Или лыжи теперь перестали ехать...( Ужос.
Есть таймер 2. Хочу иметь (и имею) на пине 3 (OC2B) частоту. Не пойму сейчас только отчего она там есть!
#define FREQ 4000000 void setup() { pinMode(3, OUTPUT); TCCR2A = 1<<COM2B0 | 1<<WGM21; TCCR2B = 1; OCR2A = F_CPU / 2 / FREQ - 1 }
Но ведь, согласно ДШ, в режиме CTC, в формировании импульсов на OC2B (pin 3) участвует только OCR2B, который в моём случае вообще не упоминается! Однако, работает. Или нет? Пчему? Какие мысли?
Потому что ты работаешь в среде arduino ide, может быть?
Да. Пофигу.
Пчему? Какие мысли?
OCR2A = TOP ?
Да, похоже OCR2B в этом режиме не используется..
Да, похоже OCR2B в этом режиме не используется..
мне вот другое интересно, что за чудак твои высказывания минусует, это что-то личное из зависти или он по жизни такой?...
Да, похоже OCR2B в этом режиме не используется..
мне вот другое интересно, что за чудак твои высказывания минусует, это что-то личное из зависти или он по жизни такой?...
А какой вариант вам кажется более подходящим в случае если - OCR2B в этом режиме ИСПОЛЬЗУЕТСЯ.
а. что-то личное
б. из зависти
в. он по жизни такой.
Да, похоже OCR2B в этом режиме не используется..
мне вот другое интересно, что за чудак твои высказывания минусует, это что-то личное из зависти или он по жизни такой?...
Какой то обиженный, похоже )))
А какой вариант вам кажется более подходящим в случае если - OCR2B в этом режиме ИСПОЛЬЗУЕТСЯ.
Тогда можно просто написать, что используется , задаёт на каком такте toggle делать.
электротехника наука о контактах или они есть там где их не должно быть или их нет там где должно быть )))
Да, похоже OCR2B в этом режиме не используется..
Вот только сейчас поимел доступ к компу.(
Да, в том то и дело, что OCR2B я не использую совсем. OCR2A задаёт TOP.
Но ведь, согласно схемы, именно OCR2B задаёт сравнение с TCNT2!
И именно от него формируется частота на OC2B.
Коллеги! Если в ДШ что-то не написано прямым текстом, то стоит посмотреть на блок-схемы. В компаре-юнит передается сигнал "компаре матч", а на какую ногу его выводить и выводить ли хоть на какую - задается в строчке №5 у Федора. Выводить - на ногу "Б".
Картинка 17-3 по ЭТОМУ ДШ: https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-M...
Но ведь, согласно схемы, именно OCR2B задаёт сравнение с TCNT2!
И именно от него формируется частота на OC2B.
Не понимаю, что вас удивляет. Все так и происходит. OCR2B после ресета равен 0 и именно этот 0 сравнивается с TCNT2 и при равенстве инвертирует выход. Запишите в OCR2B значение больше чем TOP и генерации не будет.
Меня удивляет то, что согласно схемы в ДШ, в формировании на выходе 3 (ОС2B) у меня OCR2B не участвует, а участвует OCR2A только.
У меня это железо работает уже года 3 как, не меньше. Но я сейчас посмотрел на это "как баран на новые ворота", и не смог понять почему оно так работает... И до сих пор не могу въехать.(
5 TCCR2A = 1<<COM2B0 | 1<<WGM21;
WGM2 WGM1 WGM0 Timer/Counter Mode of Operation TOP Update of OCRx at TOV Flag Set on
0 1 0 CTC OCRA Immediate MAX
Вы же сами указали дергать ногой B при достижении OCRA ...
Схема там для разных таймеров, но видимо таймеру 2 подрезали крылья и там вообще нет сравнения с OCRB.
Komandir, дык разобрались же уже. Счётчик тикает до OCR2A, а заданное действие совершает при совпадении с OCR2B. Тоже кстати часто замечаю, что какие-то нюансы в ДШ либо вовсе не указаны, либо описаны так, что фик поймёшь сразу..
Но OCR2B ведь не задан! Он равен 0. Именно это меня и смущает.
Но OCR2B ведь не задан! Он равен 0. Именно это меня и смущает.
дотикал до OCR2A, обнулился, в этот момент совпало с OCR2B ... правильно?
Где вы увидели OCRB ???
дотикал до OCR2A, обнулился, в этот момент совпало с OCR2B ... правильно?
Если OCR2B был по дефолту =0, то да, обнуление точно совпадёт с ногодрыгом.
Не понимаю, что вас удивляет. Все так и происходит. OCR2B после ресета равен 0 и именно этот 0 сравнивается с TCNT2 и при равенстве инвертирует выход. Запишите в OCR2B значение больше чем TOP и генерации не будет.
Меня удивляет то, что ОСR2B у меня совсем не участвует, хотя должен! Как прикажете это понимать?
У меня справляется OCR2A, и справляется успешно. Но, согласно описания в ДШ, этого не видно! И именно в этом мой вопрос к сообществу.
Green в №18 таблица из ДШ с режимами работы второго таймера - где там вы нашли OCRB ? Или у нас разные ДШ ?
Нет, ДШ не разные. Но посмотрите схему (в #10) формирования на выходе OC2B. От чего она зависит?
А в режиме FastPWM частота через ICR2 не задаётся ?
Ps. Посмотрел, у второго таймера такого регистра нет...
Green но сброс таймера то происходит только по значению из OCR2A. В OCR2B по любому какое то число есть и видимо оно меньше чем число из OCR2A и сравнение срабатывает, но с частотой заданной в OCR2A. Меняя число в OCR2B в пределах от 0 до OCR2A - можно сдвигать сигнал на OC2B относительно сигнала на OC2A, но частота и форма сигнала будет одинаковой.
Kakmyc, меня интересует только CTC режим.
Komandir, да, сброс происходит по значению из OCR2A. Но я не вижу при чём здесь OCR2B!
Мужики, всем спасибо за разъяснения! Я хоть и тормоз, но таки всё понял.)))