|
Timer1 Compare B |
|
|
|
Jul 2 2015, 07:34
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 23-05-12
Пользователь №: 71 976

|
Здравствуйте! Хочу включить в свою программу прерывание по совпадению Б таймера 1
.include "m168def.inc" ................................
RESET: ........................................
;===========старт таймера 1============= ; ;======================================= ldi temp, 9 sts OCR1AH, temp ldi temp, 169 sts OCR1AL, temp ; загрузили регистры сравнения A ldi temp, 0x1A sts OCR1BH, temp ldi temp, 0xDB sts OCR1BL, temp ; загрузили регистры сравнения B ldi temp, (1<<WGM12) ; сброс при совпадении, таймер остановлен sts TCCR1B, temp ................................ lds temp, TIMSK1 cbr temp, 0b00000010 ; запрещаем прерывание "совпадение А" sbr temp, 0b00000100 ; разрешаем прерывание "совпадение B" sts TIMSK1, temp ............................... ; ===запускаем таймер=== clr temp ; = = sts TCNT1H, temp ; =очищаем счетные регистры sts TCNT1L, temp ; =очищаем счетные регистры lds temp, TCCR1B ; = = cbr temp, 0b00000101 sbr temp, 0b00000010 ;запуск таймера 1 16 МГц / 8 = 2 МГц = sts TCCR1B, temp ; ======================
В программе время от времени разрешаются прерывания по таймеру 1 "совпадение А" и "совпадение Б". Если я правильно понимаю, в зависимости от того, какое прерывание разрешено, счетные регистры TCNT1 сравниваются с регистрами сравнения OCR1A или OCR1B. В симуляторе AVR студии все прекрасно работает, а в железе срабатывает только прерывание "сравнение с А". "Сравнение с Б" не работает вообще, почему? PS в книге Евстегнеева сказано "Режим СТС (сброс при совпадении) В этом режиме счетный регистр тоже функционирует как обычный суммирующий счетчик,...Однако максимально возможное значение счетного регистра и, следовательно, разрешающая способность счетчика определяются либо регистром сравнения блока A OCR1A, либо регистром захвата ICR1..." тогда зачам вообще нужно прерывание Timer1 Compare B?
|
|
|
|
|
 |
Ответов
|
Jul 3 2015, 03:56
|
Местный
  
Группа: Участник
Сообщений: 465
Регистрация: 13-05-15
Из: Запорожье
Пользователь №: 86 663

|
Да, в разделе "15.9.2 Clear Timer on Compare Match (CTC) Mode" речь идет только о OCR1A. Может быть и Б будет срабатывать, но у Вас значение OCR1B задано больше, чем OCR1A, поэтому событие Б должно произойти позже, а счетчик уже сбросится. Если все равно не получается, то надо пробовать использовать PWM: режимы 5,6,7 из табл 15-4, или 8,9 и 14,15, если требуется изменение частоты. Там максимальное счетное значение определяется OCR1A или ICR1.
|
|
|
|
|
Jul 5 2015, 02:57
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 23-05-12
Пользователь №: 71 976

|
Цитата(Александр1 @ Jul 3 2015, 06:56)  Да, в разделе "15.9.2 Clear Timer on Compare Match (CTC) Mode" речь идет только о OCR1A. Может быть и Б будет срабатывать, но у Вас значение OCR1B задано больше, чем OCR1A, поэтому событие Б должно произойти позже, а счетчик уже сбросится. Дело в том что прерывания по совпадению А и Б разрешаются не одновременно, то есть если разрешено "совпадение Б", то "совпадение А" запрещается и наоборот.
|
|
|
|
Сообщений в этой теме
Рэльс Timer1 Compare B Jul 2 2015, 07:34 Александр1 Что-то не видно установок для TCCR1A (WGM10, WGM11... Jul 2 2015, 09:42 Рэльс Цитата(Александр1 @ Jul 2 2015, 12:42) Чт... Jul 2 2015, 15:31 ILYAUL Есть такое понятие - Free timer. Вот его и использ... Jul 4 2015, 14:12 RabidRabbit Используйте режим WGM1 = 1100 (WGM13 = 1, WGM12 = ... Jul 5 2015, 15:05 Рэльс Провеля тут лабораторную работу.
В режиме СТС оба ... Jul 8 2015, 07:53 Александр1 Цитата(Рэльс @ Jul 8 2015, 10:53) ... фла... Jul 8 2015, 08:52 Рэльс Спасибо Вам и вашему преподавателю! Все теперь... Jul 8 2015, 13:43 avrx При работе с этим же таймером столкнулся с такой о... Sep 8 2015, 16:29 alexeyv Сброс бита I - это запрещение всех прерываний внут... Sep 9 2015, 06:57 demiurg1978 Флаг I в регистре SREG сбрасывается аппаратно при ... Sep 11 2015, 08:09 avrx Спасибо большое за информацию Sep 12 2015, 17:16
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|