реклама на сайте
подробности

 
 
> Timer1 Compare B
Рэльс
сообщение Jul 2 2015, 07:34
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Александр1
сообщение Jul 2 2015, 09:42
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 465
Регистрация: 13-05-15
Из: Запорожье
Пользователь №: 86 663



Что-то не видно установок для TCCR1A (WGM10, WGM11).
Я так понимаю, что сейчас установлен СТС режим и макс значение счета определяется регистром OCR1A. А значение OCR1B у Вас больше. Может, поэтому совпадение Б и не происходит.
Я бы выбрал один из режимов 5,6,7 из табл 15-4 из "ATmega48PA/88PA/168PA/328P"
Сам сталкивался с подобными ситуациями. Нужно внимательно почитать документацию. В данном случае, надо просмотреть все регистры таймера 1, где какие биты и для чего они. Так меньше вероятность того, что что-то выпадет из вида.

А прерывание по совпадению Б установлено? И правильно ли установлен вектор прерывания? А то может там стоит команда NOP?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Рэльс   Timer1 Compare B   Jul 2 2015, 07:34
|- - Рэльс   Цитата(Александр1 @ Jul 2 2015, 12:42) Чт...   Jul 2 2015, 15:31
- - Александр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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 05:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01377 секунд с 7
ELECTRONIX ©2004-2016