|
|
  |
Mega (48) Help !, Внешнее прерывание |
|
|
|
Apr 28 2005, 17:54
|
Местный
  
Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593

|
Работаю с Мегой 48 - меряю, управляю, индицирую - все ОК. Нужно приделать кнопку и по нажатию запускать подпрограмму. Как только выставляю разрешение внешних прерываний INT1 (sbi EIMSK,1 для М48й) - где-то зависает  . Проблема продолжает стоять ! При наличии общего разрешения прерываний, команда разрешения внешнего приводит к тому, что контроллер следующей командой кидается обрабатывать ЯКОБЫ имеющееся внешнее. И даже Студио это старательно симулирует. Вопрос : где и откуда "накопилось" внешнее прерывание, если никто ничего не трогал !?
Сообщение отредактировал GeorgyBey - May 4 2005, 09:07
--------------------
На "нет" и "нах" :)
|
|
|
|
|
Apr 28 2005, 18:50
|
Участник

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

|
Цитата(GeorgyBey @ Apr 28 2005, 20:54) Работаю с Мегой 48 - меряю, управляю, индицирую - все ОК. Нужно приделать кнопку и по нажатию запускать подпрограмму. Как только выставляю разрешение внешних прерываний INT1 (sbi EIMSK,1 для М48й) - где-то зависает  . Студия симулирует - нормально). Чем "вредны" внешние прерывания - по Вашему опыту?  Я так понял кнопка на внешнем прерывании. Вообще ИМХО не очень хорошо. Вопрос как оно среагирует на дребезг?
|
|
|
|
|
Apr 29 2005, 08:26
|
Местный
  
Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593

|
Я так понял кнопка на внешнем прерывании. Вообще ИМХО не очень хорошо. Вопрос как оно среагирует на дребезг? [/quote] Уточняю: до дребезга дело не доходит! Как только ввожу команду "sbi EIMSK,1" (компилирую и заливаю во флэш) - нормально работающий до этого (по программе) контроллер останавливается (где-то) - АЦП не меряет (рез-т 0), управляющий вывод порта В = 0 - оптрон управления включен "навсегда", ничто не моргает - где-то стоит Т.е. ввод разрешения на внешнее прерывание УЖЕ чего-то портит Кнопку нажмут раз в сто лет так стоит ли вводить ее опрос ? А так - прерывание принято - по дребезгу ли, по потенциалу земли-ли - пошла программа обработки - и пусть себе дребезжит Или ? ...
--------------------
На "нет" и "нах" :)
|
|
|
|
|
Apr 29 2005, 13:24
|
Участник

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

|
Цитата(GeorgyBey @ Apr 29 2005, 11:26) Уточняю: до дребезга дело не доходит! Как только ввожу команду Ну тогда уточняй дальше. Как кнопка висит?
|
|
|
|
|
Apr 29 2005, 14:29
|
Местный
  
Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593

|
Цитата(DimSun @ Apr 29 2005, 16:24) Цитата(GeorgyBey @ Apr 29 2005, 11:26) Уточняю: до дребезга дело не доходит! Как только ввожу команду Ну тогда уточняй дальше. Как кнопка висит? STK-500 Если по изменению состояния кнопки: PCINT13 (PortC, вывод5 - как вход) проводочком к штатной кнопке, Галочку через Хрегистр на разрешение этого прерывания и ... на кнопку не реагирует (работает как работал). А если INT1 (sbi EIMSK,1) - до кнопок, как говорил, не доходит...
--------------------
На "нет" и "нах" :)
|
|
|
|
|
Apr 29 2005, 14:51
|
Местный
  
Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593

|
Чудеса с решетом Сегодня ТАК себя уже не ведет. Сегодня "съедает" установку внешнего прерывания (INT1), зато следующим шагом после установки общего разрешения прерываний (sei) (в любом месте программы) прерывается! (от прерывания отправляю в ловушку - выставляю светодиоды и зацикливаю). Впечатление - считает "внешним прерыванием" любое телодвижение Не даром и в книжке "Применение мик-ов Атмел" про внешние прерывания ни гу-гу. И так - очевидные (для тех кто поборол) гадости внешних прерываний - они есть ?
--------------------
На "нет" и "нах" :)
|
|
|
|
|
Apr 29 2005, 15:56
|
Профессионал
    
Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960

|
Цитата(GeorgyBey @ Apr 29 2005, 17:51) Чудеса с решетом Сегодня ТАК себя уже не ведет. Сегодня "съедает" установку внешнего прерывания (INT1), зато следующим шагом после установки общего разрешения прерываний (sei) (в любом месте программы) прерывается! (от прерывания отправляю в ловушку - выставляю светодиоды и зацикливаю). Впечатление - считает "внешним прерыванием" любое телодвижение Не даром и в книжке "Применение мик-ов Атмел" про внешние прерывания ни гу-гу. И так - очевидные (для тех кто поборол) гадости внешних прерываний - они есть ? Провод на кнопку длинный? Осциллографом смотрели, что происходит на этой линии?
|
|
|
|
|
May 4 2005, 08:43
|
Местный
  
Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593

|
[quote=vet,Apr 29 2005, 23:41] vvs157, никаких гадостей нет, прерывания включаются и работают без танцев с бубном. "- снимаем флаги сработки внешних прерываний (единичками), " Вот про Это - поподробнее, плиииииз. А то как только разрешаю внешнее прерывание (при наличии общего), либо разрешаю общее (при установленном вненшнем) контроллер радостно срывается в обработку внешнего прерывания, хотя никто ничего не трогал!!! Ни про кнопки ни про провода ПОКА и речи нет
--------------------
На "нет" и "нах" :)
|
|
|
|
|
May 4 2005, 08:55
|
Местный
  
Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593

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

Группа: Свой
Сообщений: 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-ой надо сделать тоже самое.
|
|
|
|
|
May 5 2005, 16:06
|
Местный
  
Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593

|
Спасибо "vet" и "Maxim". Для всех, кто еще не сталкивался  : Оказалось, что в железе все было нормально. ДЛЯ СИМУЛЯТОРА нужно было вручную устанавливать "pin" порта в "1", иначе он (симулятор) считал "0" на ножке "наступившим событием". Дребезг сказывается когда прерывание определяется по фронту "прерывающего" импульса. Фронт считается имеющимся, если на момент прихода внутреннего синхроимпульса на ножке "1после0"(или наоборот, а при предыдущем НЕ было!). Если контакт дребезжит т.е. подвижный элемент контакта подпрыгивает на неподвижном, то в момент прихода фронта синхроимпульса собственно контакта может и не быть  - событие пропущено ! Всем спасибо, тему можно считать закрытой
--------------------
На "нет" и "нах" :)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|