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

 
 
> Mega (48) Help !, Внешнее прерывание
GeorgyBey
сообщение Apr 28 2005, 17:54
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593



Работаю с Мегой 48 - меряю, управляю, индицирую - все ОК.
Нужно приделать кнопку и по нажатию запускать подпрограмму.
Как только выставляю разрешение внешних прерываний INT1 (sbi EIMSK,1 для М48й) - где-то зависает sad.gif .


Проблема продолжает стоять ! angry.gif
При наличии общего разрешения прерываний, команда разрешения внешнего приводит к тому, что контроллер следующей командой кидается обрабатывать ЯКОБЫ имеющееся внешнее. И даже Студио это старательно симулирует.
Вопрос : где и откуда "накопилось" внешнее прерывание, если никто ничего не трогал !?

Сообщение отредактировал GeorgyBey - May 4 2005, 09:07


--------------------
На "нет" и "нах" :)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 13)
DimSun
сообщение Apr 28 2005, 18:50
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 26-10-04
Из: Москва
Пользователь №: 988



Цитата(GeorgyBey @ Apr 28 2005, 20:54)
Работаю с Мегой 48 - меряю, управляю, индицирую - все ОК.
Нужно приделать кнопку и по нажатию запускать подпрограмму.
Как только выставляю разрешение внешних прерываний INT1 (sbi EIMSK,1 для М48й) - где-то зависает sad.gif . Студия симулирует - нормально).

Чем "вредны" внешние прерывания - по Вашему опыту?
cheers.gif
*


Я так понял кнопка на внешнем прерывании. Вообще ИМХО не очень хорошо. Вопрос как оно среагирует на дребезг?
Go to the top of the page
 
+Quote Post
yung
сообщение Apr 29 2005, 04:39
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 25-03-05
Из: Рязань
Пользователь №: 3 669



Очень похоже на дребезг. Попробуй для проверки при входе в прерывание поставить какой-нибудь свободный порт в 1, а при выходе из прерывания вернуть в 0. Тогда сможешь по крайней мере посмотреть, где находишься.
Go to the top of the page
 
+Quote Post
GeorgyBey
сообщение Apr 29 2005, 08:26
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593



Я так понял кнопка на внешнем прерывании. Вообще ИМХО не очень хорошо. Вопрос как оно среагирует на дребезг?
*

[/quote]


Уточняю: до дребезга дело не доходит! Как только ввожу команду
"sbi EIMSK,1" (компилирую и заливаю во флэш) - нормально работающий до этого (по программе) контроллер останавливается (где-то) - АЦП не меряет (рез-т 0), управляющий вывод порта В = 0 - оптрон управления включен "навсегда", ничто не моргает - где-то стоит sad.gif
Т.е. ввод разрешения на внешнее прерывание УЖЕ чего-то портит wacko.gif
Кнопку нажмут раз в сто лет так стоит ли вводить ее опрос ?
А так - прерывание принято - по дребезгу ли, по потенциалу земли-ли - пошла программа обработки - и пусть себе дребезжит tongue.gif
Или ? ...


--------------------
На "нет" и "нах" :)
Go to the top of the page
 
+Quote Post
DimSun
сообщение Apr 29 2005, 13:24
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 26-10-04
Из: Москва
Пользователь №: 988



Цитата(GeorgyBey @ Apr 29 2005, 11:26)
Уточняю: до дребезга дело не доходит! Как только ввожу команду
*


Ну тогда уточняй дальше. Как кнопка висит?
Go to the top of the page
 
+Quote Post
GeorgyBey
сообщение Apr 29 2005, 14:29
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593



Цитата(DimSun @ Apr 29 2005, 16:24)
Цитата(GeorgyBey @ Apr 29 2005, 11:26)
Уточняю: до дребезга дело не доходит! Как только ввожу команду
*


Ну тогда уточняй дальше. Как кнопка висит?
*



STK-500 rolleyes.gif
Если по изменению состояния кнопки:
PCINT13 (PortC, вывод5 - как вход) проводочком к штатной кнопке,
Галочку через Хрегистр на разрешение этого прерывания и ... на кнопку не реагирует (работает как работал).
А если INT1 (sbi EIMSK,1) - до кнопок, как говорил, не доходит... laugh.gif


--------------------
На "нет" и "нах" :)
Go to the top of the page
 
+Quote Post
GeorgyBey
сообщение Apr 29 2005, 14:51
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593



Чудеса с решетом cranky.gif
Сегодня ТАК себя уже не ведет.
Сегодня "съедает" установку внешнего прерывания (INT1),
зато следующим шагом после установки общего разрешения прерываний (sei)
(в любом месте программы) прерывается! (от прерывания отправляю в ловушку - выставляю светодиоды и зацикливаю).
Впечатление - считает "внешним прерыванием" любое телодвижение angry.gif
Не даром и в книжке "Применение мик-ов Атмел" про внешние прерывания ни гу-гу.
И так - очевидные (для тех кто поборол) гадости внешних прерываний - они есть ?


--------------------
На "нет" и "нах" :)
Go to the top of the page
 
+Quote Post
vvs157
сообщение Apr 29 2005, 15:56
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Цитата(GeorgyBey @ Apr 29 2005, 17:51)
Чудеса с решетом  cranky.gif
Сегодня ТАК себя уже не ведет.
Сегодня "съедает" установку внешнего прерывания (INT1),
зато следующим шагом после установки общего разрешения прерываний (sei)
(в любом месте программы) прерывается! (от прерывания отправляю в ловушку - выставляю светодиоды и зацикливаю).
Впечатление - считает "внешним прерыванием" любое телодвижение angry.gif
Не даром и в книжке "Применение мик-ов Атмел" про внешние прерывания ни гу-гу.
И так - очевидные (для тех кто поборол) гадости внешних прерываний - они есть ?
*


Провод на кнопку длинный? Осциллографом смотрели, что происходит на этой линии?
Go to the top of the page
 
+Quote Post
vet
сообщение Apr 29 2005, 20:41
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



vvs157, никаких гадостей нет, прерывания включаются и работают без танцев с бубном.
Пишем обработчик, ставим соответствующий вектор прерывания,
в процедуре инициализации периферии:
- выставляем условия возникновения внешних прерываний (уровень/фронт),
- снимаем флаги сработки внешних прерываний (единичками),
- поднимаем биты разрешения внешних прерываний,
- разрешаем прерывания вообще (SEI).

По проблеме: подтягивающий резистор на входе висит/включен?


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
GeorgyBey
сообщение May 4 2005, 08:43
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593



[quote=vet,Apr 29 2005, 23:41]
vvs157, никаких гадостей нет, прерывания включаются и работают без танцев с бубном.

"- снимаем флаги сработки внешних прерываний (единичками), "

Вот про Это - поподробнее, плиииииз.
А то как только разрешаю внешнее прерывание (при наличии общего), либо разрешаю общее (при установленном вненшнем) контроллер радостно срывается в обработку внешнего прерывания, хотя никто ничего не трогал!!! wacko.gif
Ни про кнопки ни про провода ПОКА и речи нет


--------------------
На "нет" и "нах" :)
Go to the top of the page
 
+Quote Post
GeorgyBey
сообщение May 4 2005, 08:55
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593



Проблема продолжает стоять !
При включении разрешения внешнего прерывания (при наличии общего разрешения) контроллер, вместо следующей команды, отправляется обрабатывать внешнее прерывание, хотя его (прерывания) нет, а его (контроллер) - никто не просит этого делать !!!
Даже Студио это старательно симулирует sad.gif
Вопрос: ОТКУДА появляется запрос на обработку, если никто не просил !?


--------------------
На "нет" и "нах" :)
Go to the top of the page
 
+Quote Post
vet
сообщение May 4 2005, 12:10
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



GeorgyBey, до настройки типа внешнего прерывания вполне может установиться флаг прерывания; пример - после сброса ISCn1:0=00 (низкий уровень), на ноге - 0, флаг установился, и будет стоять после настройки, хотя, согласно ей, никакого прерывания быть не должно. После разрешения прерываний - имеем описанную Вами ситуацию. Поэтому между настройкой и разрешением прерываний не помешает сбросить флаги INTFn.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
Maxim
сообщение May 5 2005, 07:34
Сообщение #13


Участник
*

Группа: Свой
Сообщений: 36
Регистрация: 24-06-04
Пользователь №: 165



У меня с AT90S1200 была подобная проблема. Почитал доку на нее и вот что там сказано о избавлении от дребезга с внешним прерыванием:

1. Disable the External Interrupt by clearing the INT0 flag in GIMSK.
2. Select level triggered interrupt.
3. Select desired interrupt edge.
4. Re-enable the external interrupt by setting INT0 in GIMSK.

Может и с 48-ой надо сделать тоже самое.
Go to the top of the page
 
+Quote Post
GeorgyBey
сообщение May 5 2005, 16:06
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593



Спасибо "vet" и "Maxim".

Для всех, кто еще не сталкивался a14.gif :

Оказалось, что в железе все было нормально.
ДЛЯ СИМУЛЯТОРА нужно было вручную устанавливать "pin" порта в "1", иначе он (симулятор) считал "0" на ножке "наступившим событием".

Дребезг сказывается когда прерывание определяется по фронту "прерывающего" импульса.
Фронт считается имеющимся, если на момент прихода внутреннего синхроимпульса на ножке "1после0"(или наоборот, а при предыдущем НЕ было!). Если контакт дребезжит т.е. подвижный элемент контакта подпрыгивает на неподвижном, то в момент прихода фронта синхроимпульса собственно контакта может и не быть sad.gif - событие пропущено !

Всем спасибо, тему можно считать закрытой cheers.gif


--------------------
На "нет" и "нах" :)
Go to the top of the page
 
+Quote Post

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

 


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


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