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

 
 
> Mega8 ICP, Прерывания T/C1 ICP
Exstreem
сообщение Feb 5 2009, 09:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 5-02-09
Пользователь №: 44 428



Зравствуйте.
Программирую Mega8, и возникла проблема. Не получается сменить фронт импульса на контакте ICP во время работы прерываний. В даташите написано, что нужно сбросить в TIFR галочку. Делаю все по правилиам, в AVR Studio все работает, а залив в МК не работает. Для проверки добавил строки, что бы при одном фронте светодид загорался, при втором - гас. И получается, что МК будто не видит этот код программы, но в прирывания заходит (добавил код для другого светодиода).
Может кто знает как это решается.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
smac
сообщение Feb 5 2009, 18:20
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 2-06-08
Из: Москва
Пользователь №: 38 003



Цитата(Exstreem @ Feb 5 2009, 12:24) *
...
Программирую Mega8, и возникла проблема. Не получается сменить фронт импульса на контакте ICP во время работы прерываний. В даташите написано, что нужно сбросить в TIFR галочку.
...

В каком еще TIFR?! Чтобы сменить фронт нужно изменить бит ICES1 в регистре TCCR1B, а в TIFR флаг прерываний нужно сбрасывать, если запрос обрабатывается не в обработчике прерывания т. е. переход по вектору прерывания не выполняется.

Сообщение отредактировал smac - Feb 5 2009, 18:21
Go to the top of the page
 
+Quote Post
Exstreem
сообщение Feb 6 2009, 07:11
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 5-02-09
Пользователь №: 44 428



То что нужно поставить/снять галочку ICES1 это понятно. А вот ICF1 в TIFR, как я понял из сказанного, надо снять не в прерывании, а после завершения. Спасибо, попробую.
Go to the top of the page
 
+Quote Post
smac
сообщение Feb 6 2009, 07:36
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 2-06-08
Из: Москва
Пользователь №: 38 003



Цитата(Exstreem @ Feb 6 2009, 10:11) *
То что нужно поставить/снять галочку ICES1 это понятно. А вот ICF1 в TIFR, как я понял из сказанного, надо снять не в прерывании, а после завершения. Спасибо, попробую.


Если вы обрабатываете захват в обработчике прерывания, то ICF1 в TIFR снимать не обязательно, от сам очистится при выполнении обработчика, а вот если вы не используете прерывания, то нужно его сбрасывать программно.
Также атмел рекоммендует сбрасывать ICF1 после смены источкика захвата (компаратор или пин ICP1), поскольку во время смены источкика может выставиться флаг ICF1.
Ну и на всякий случай, флаги прерываний сбрасываются записью 1.
Go to the top of the page
 
+Quote Post
Exstreem
сообщение Feb 6 2009, 09:28
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 5-02-09
Пользователь №: 44 428



Спасибо, smac .
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 02:09
Рейтинг@Mail.ru


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