Зачем 16-разрядному Таймеру1 целых два 16-разрядных OCR'a???

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Чт июл 01, 2010 19:48:52

Сообщение kotbimigot »

Здравствуйте!Подскажите, зачем в AVR'ках типа Atmega8535 в TIMER1 два 16-разрядных регистра OCR(OCR1A и OCR1B,к которым даже можно обратиться как к OCR1AН,OCR1AL и соответственно OCR1BН,OCR1BL)?Одновременно они по моему разумению не работают ни в СТС (счетчик сбросится по достижении одного из порогов, до второго не досчитает), ни в PWM'ах. Канал А у меня правильно работает и в CTC и в PWM, а вот канал B никуда пока приспособить не удалось) Может кто-то уже сталкивался с такой проблемой и решил ее?
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18694
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

они работают независимо в режимах ШИМ, например, откуда вы взяли, что не работают - не понятно...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 493
Зарегистрирован: Ср фев 14, 2007 12:07:58
Откуда: Москва

Сообщение Fasterpast »

kotbimigot, попробуйте воспользоваться даташитом )
Это два разных "условия срабатывания", как уже сказали, в шим используется или для других целей...
Да и прерывание можно сделать по обоим условиям.
Так и не надо CTC, в обычном режиме не будет он сбрасывать ничего.
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Чт июл 01, 2010 19:48:52

Сообщение kotbimigot »

В обычном - Normal - понятно,что не будет работать,там OCR не используется. А в ШИМе при OCR1A<OCR1B таймер начинает считать,потом присходит прерывание по сравнению например с OCR1A,таймер сбрасывается,начинает считать снова,происходит прерывание по сравнению с OCR1B? такая логика?
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Чт июл 01, 2010 19:48:52

Сообщение kotbimigot »

ARV писал(а):они работают независимо в режимах ШИМ, например, откуда вы взяли, что не работают - не понятно...
это у меня пока не работают. но я так понимаю,что раз есть они у таймера, то не зря,потому и спрашиваю, просто до меня пока не дошло
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 493
Зарегистрирован: Ср фев 14, 2007 12:07:58
Откуда: Москва

Сообщение Fasterpast »

kotbimigot писал(а):В обычном - Normal - понятно,что не будет работать,там OCR не используется.
:shock: а если внимательно почитать ДШ?
А конкретно - страничку прерываний...

А потом про PWM...
А в ШИМе при OCR1A<OCR1B таймер начинает считать,потом присходит прерывание по сравнению например с OCR1A
Не путайте тёплое с мягким.
В ШИМе нет вообще никаких прерываний, в режиме ШИМа таймер управляет ножками OC1A и OC1B используя значения регистров OCR1A и OCR1B соответственно. В этом случае таймер конфигурируется именно в режим работы ШИМ.

В случае с прерываниями, таймер устанавливается в режим "Normal", а потом выставляет регистр TIMSK, который "говорит" при каких событиях будут прерывания, при переполнении, при совпадении с OCR1x ит.д.
Контактная информация:
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 316
Зарегистрирован: Пт апр 17, 2009 22:45:42
Откуда: Minsk

Сообщение maglev »

kotbimigot писал(а):в ШИМе при OCR1A<OCR1B таймер начинает считать,потом присходит прерывание по сравнению например с OCR1A,таймер сбрасывается,начинает считать снова,происходит прерывание по сравнению с OCR1B? такая логика?
Нет. Таймер не сбрасывается, прерывание само не происходит (можно вызвать, но не нужно). Состояние выводов OC1A/OC1B меняется, имеем два PWM сигнала.
Контактная информация:
Родился
Сообщения: 13
Зарегистрирован: Вт окт 14, 2008 06:48:04
Откуда: Omsk

Сообщение EugenyAM »

Можно использовать для обмена с устройствами 1-wire
ОСR1А в режиме CTC задает период бита, в ОСR1В пишется длительность импульса для "0" или "1" при записи, либо OCR1A/2 при чтении. Дальше все строится на обработке прерыаний.
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»