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

 
 
 
Reply to this topicStart new topic
> ATmega128 сбрасывается при внешнем прерывании EXT3
nullakilla
сообщение Jan 9 2010, 17:54
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 7-05-09
Пользователь №: 48 785



Внешнее прерывание INT3 настроено на срабатывание по спадающему уровню
Код
void init_cardreader(){
      //enable INT0, INT1, INT2, INT3 on falling edge
    EICRA = ( 1 << ISC01 ) | ( 1 << ISC11 ) | ( 1 << ISC21 ) | ( 1 << ISC31 );
    EIMSK = ( 1 << INT0 ) | ( 1 << INT1 ) | ( 1 << INT2 ) | ( 1 << INT3 );
}


Когда выполняется прерывание, то микроконтроллер сбрасывается sad.gif.

Подскажите, плиз, куда копать.
Go to the top of the page
 
+Quote Post
SysRq
сообщение Jan 9 2010, 20:14
Сообщение #2


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Остальной код показывайте.
Go to the top of the page
 
+Quote Post
smac
сообщение Jan 9 2010, 20:14
Сообщение #3


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

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



Цитата(nullakilla @ Jan 9 2010, 20:54) *
...Подскажите, плиз, куда копать.

Как всегда, в таблицу векторов прерываний.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Jan 10 2010, 05:53
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



В установках компилятора установите режим заполнения неиспользуемых векторов прерываний командой RETI.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
nullakilla
сообщение Jan 10 2010, 10:56
Сообщение #5





Группа: Участник
Сообщений: 11
Регистрация: 7-05-09
Пользователь №: 48 785



Цитата(DpInRock @ Jan 10 2010, 07:53) *
В установках компилятора установите режим заполнения неиспользуемых векторов прерываний командой RETI.


СПАСИБО!!!! ПОМОГЛО!!!
Go to the top of the page
 
+Quote Post
smac
сообщение Jan 10 2010, 12:45
Сообщение #6


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

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



Цитата(DpInRock @ Jan 10 2010, 08:53) *
В установках компилятора установите режим заполнения неиспользуемых векторов прерываний командой RETI.

Совет действенный, но КМК он убирает только результат глюка, а не сам глюк. Думаю стоит разобраться с причиной сброса (нет нужного вектора прерывания по таймеру, существует "лишний" источник прерывания или т. п.), хотя топикстартеру виднее.
Go to the top of the page
 
+Quote Post
nullakilla
сообщение Jan 11 2010, 22:32
Сообщение #7





Группа: Участник
Сообщений: 11
Регистрация: 7-05-09
Пользователь №: 48 785



Моей ошибкой было то, что я настроил прием четырех внешних прерываний, а описал интеррапт-рутину только для одного. sad.gif

Эффект замыленного глаза подействовал.

Еще раз спасибо!
Go to the top of the page
 
+Quote Post

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

 


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


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