Страница 1 из 1
Зачем 16-разрядному Таймеру1 целых два 16-разрядных OCR'a???
Добавлено: Чт ноя 18, 2010 19:25:29
kotbimigot
Здравствуйте!Подскажите, зачем в AVR'ках типа Atmega8535 в TIMER1 два 16-разрядных регистра OCR(OCR1A и OCR1B,к которым даже можно обратиться как к OCR1AН,OCR1AL и соответственно OCR1BН,OCR1BL)?Одновременно они по моему разумению не работают ни в СТС (счетчик сбросится по достижении одного из порогов, до второго не досчитает), ни в PWM'ах. Канал А у меня правильно работает и в CTC и в PWM, а вот канал B никуда пока приспособить не удалось) Может кто-то уже сталкивался с такой проблемой и решил ее?
Re: Зачем 16-разрядному Таймеру1 целых два 16-разрядных OCR'
Добавлено: Чт ноя 18, 2010 19:42:04
ARV
они работают независимо в режимах ШИМ, например, откуда вы взяли, что не работают - не понятно...
Re: Зачем 16-разрядному Таймеру1 целых два 16-разрядных OCR'
Добавлено: Чт ноя 18, 2010 19:46:09
Fasterpast
kotbimigot, попробуйте воспользоваться даташитом )
Это два разных "условия срабатывания", как уже сказали, в шим используется или для других целей...
Да и прерывание можно сделать по обоим условиям.
Так и не надо CTC, в обычном режиме не будет он сбрасывать ничего.
Re: Зачем 16-разрядному Таймеру1 целых два 16-разрядных OCR'
Добавлено: Чт ноя 18, 2010 20:37:48
kotbimigot
В обычном - Normal - понятно,что не будет работать,там OCR не используется. А в ШИМе при OCR1A<OCR1B таймер начинает считать,потом присходит прерывание по сравнению например с OCR1A,таймер сбрасывается,начинает считать снова,происходит прерывание по сравнению с OCR1B? такая логика?
Re: Зачем 16-разрядному Таймеру1 целых два 16-разрядных OCR'
Добавлено: Чт ноя 18, 2010 20:39:32
kotbimigot
ARV писал(а):они работают независимо в режимах ШИМ, например, откуда вы взяли, что не работают - не понятно...
это у меня пока не работают. но я так понимаю,что раз есть они у таймера, то не зря,потому и спрашиваю, просто до меня пока не дошло
Re: Зачем 16-разрядному Таймеру1 целых два 16-разрядных OCR'
Добавлено: Чт ноя 18, 2010 21:16:03
Fasterpast
kotbimigot писал(а):В обычном - Normal - понятно,что не будет работать,там OCR не используется.

а если внимательно почитать ДШ?
А конкретно - страничку прерываний...
А потом про PWM...
А в ШИМе при OCR1A<OCR1B таймер начинает считать,потом присходит прерывание по сравнению например с OCR1A
Не путайте тёплое с мягким.
В ШИМе нет вообще никаких прерываний, в режиме ШИМа таймер управляет ножками OC1A и OC1B используя значения регистров OCR1A и OCR1B соответственно. В этом случае таймер конфигурируется именно в режим работы ШИМ.
В случае с прерываниями, таймер устанавливается в режим "Normal", а потом выставляет регистр TIMSK, который "говорит" при каких событиях будут прерывания, при переполнении, при совпадении с OCR1x ит.д.
Re: Зачем 16-разрядному Таймеру1 целых два 16-разрядных OCR'
Добавлено: Пт ноя 19, 2010 01:01:31
maglev
kotbimigot писал(а):в ШИМе при OCR1A<OCR1B таймер начинает считать,потом присходит прерывание по сравнению например с OCR1A,таймер сбрасывается,начинает считать снова,происходит прерывание по сравнению с OCR1B? такая логика?
Нет. Таймер не сбрасывается, прерывание само не происходит (можно вызвать, но не нужно). Состояние выводов OC1A/OC1B меняется, имеем два PWM сигнала.
Re: Зачем 16-разрядному Таймеру1 целых два 16-разрядных OCR'
Добавлено: Пн ноя 22, 2010 10:00:43
EugenyAM
Можно использовать для обмена с устройствами 1-wire
ОСR1А в режиме CTC задает период бита, в ОСR1В пишется длительность импульса для "0" или "1" при записи, либо OCR1A/2 при чтении. Дальше все строится на обработке прерыаний.