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

 
 
> Инициализация Таймер1 в режим Input Capture на Mega8, Инициализация Таймер1 в режим Input Capture на Mega8
DmSk
сообщение Jul 24 2009, 06:29
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 24-07-09
Из: Барнаул
Пользователь №: 51 518



Инициализация Таймер1 в режим Input Capture на Mega8
Как правильно сконфигурировать таймер 1 чтобы он работал в режиме захвата,
а при захвате счетчик сбрасывался в 0 и вызывалось прервание. Также при переполнении счетчика должно быть прерывание.

На данный момент в симуляторе инициировал следующим образом:
; Инициализация таймера
.equ DIVIDER=64 ;
ldi R16, (1<<ICNC1)|(1<<ICES1)|(0<<CS12)|(1<<CS11)|(1<<CS10)|(1<<WGM13)|(1<<WGM12)
out TCCR1B, R16

ldi R16, 0
out TCCR1A, R16

ldi R16, (1<<TICIE1)
out TIMSK, R16

sei
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DmSk
сообщение Jul 24 2009, 09:01
Сообщение #2





Группа: Участник
Сообщений: 12
Регистрация: 24-07-09
Из: Барнаул
Пользователь №: 51 518



Интересно если в режиме 12 (СТС) инициировать таймер то при захвате какие флаги включаются ? захват и переполнение, или только захват ? Соответсвенно какие прервания возникают ? захвата и потом переполнения или только захвата.
Если только захвата, то о переполнение счетчика можно узнать по флагу , при этом запретить прерывание при перполнении, а при захвате если флаг выставлен игнорировать текущее значение ICR(оно неправльное), и сбрасывать флаг переполнения (ждать следующего значения- бес переполнения оно будет правильным)
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 24 2009, 09:36
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(DmSk @ Jul 24 2009, 12:01) *
Интересно если в режиме 12 (СТС) инициировать таймер то при захвате какие флаги включаются ?
Об этом в DS как-то мутно написано. Нужно попробовать "в железе". Сам я такой режим таймера не пользовал. Для проверки симулятором пользоваться не рекомендую - у симуляторов свои глюки. А, вообще-то, режим таймера выбран интересный. Почему-то в голову не приходило воспользоваться этим режимом таймера, или хотя бы проверить, что можно из него "выжать"... Было бы интересно узнать, что можно получить в этом режиме.

Цитата(DmSk @ Jul 24 2009, 11:33) *
Считать долго нежелательно, хотел как проще

А , по поводу более долгих вычислений при mode 0: от вычислений при mode 12 будет отличаться только ещё одной операцией - вычитание шестнадцатибитового значения, т.е. 5-7 лишних тактов в зависимости от того, где разместите предыдущее значение ICR.

Цитата(ivstech @ Jul 24 2009, 11:39) *
Но тут надо аккуратно "разруливать" перехождение через 0, если практически одновременно произойдет прерывание по захвату и переполнению
Вот это - надо делать аккуратно в любом режиме таймера.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 06:56
Рейтинг@Mail.ru


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