|
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 2 2015, 15:31
|
Участник

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

|
Цитата(Александр1 @ Jul 2 2015, 12:42)  Что-то не видно установок для TCCR1A (WGM10, WGM11). Я так понимаю, что сейчас установлен СТС режим и макс значение счета определяется регистром OCR1A. А значение OCR1B у Вас больше. Может, поэтому совпадение Б и не происходит. Я бы выбрал один из режимов 5,6,7 из табл 15-4 из "ATmega48PA/88PA/168PA/328P" Сам сталкивался с подобными ситуациями. Нужно внимательно почитать документацию. В данном случае, надо просмотреть все регистры таймера 1, где какие биты и для чего они. Так меньше вероятность того, что что-то выпадет из вида.
А прерывание по совпадению Б установлено? И правильно ли установлен вектор прерывания? А то может там стоит команда NOP? Вы правы, установлен режим СТС ldi temp, (1<<WGM12) ; сброс при совпадении, таймер остановлен sts TCCR1B, temp прерывание тоже установлено .org 0x0016 jmp TIM1_COMPA ; Timer1 Compare A Handler .org 0x0018 jmp TIM1_COMPB ; Timer1 Compare B Handler Из даташита ясно, что в режиме СТС счетный регистр сравнивается с OCR1A. Про OCR1B ни слова, только на с 134 про него сказано "A match can be used to generate an Output Compare interrupt, or to generate a waveform output on the OC1x pin"
|
|
|
|
Сообщений в этой теме
Рэльс Timer1 Compare B Jul 2 2015, 07:34 Александр1 Да, в разделе "15.9.2 Clear Timer on Compare ... Jul 3 2015, 03:56 Рэльс Цитата(Александр1 @ Jul 3 2015, 06:56) Да... Jul 5 2015, 02:57 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
|
|
|