Easyelectronics.ru

Электроника для всех
Текущее время: 15 янв 2021, 19:55

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 125 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 18:08 
Старожил
Аватара пользователя

Зарегистрирован: 18 июн 2011, 16:29
Сообщения: 2099
Откуда: Докучаевск-Волноваха
Возникла необходимость отслеживать четыре кнопки и мгновенно реагировать на нажатие одной из них, при этом на остальные в этот момент не реагировать (система Брейн-Ринг). Опытные игроки утверждают, что интервал между двумя разными кнопками может исчисляться микросекундами, поэтому важно как можно быстрее определить ПЕРВУЮ нажатую кнопку. Значит опрос в цикле отпадает.
Наколхозил вот такое решение - заводим все четыре кнопки на логический элемент 4И-НЕ а выход логики - на прерывание. В прерывании по восх. фронту опрашиваем порт с кнопками. По результатам - действуем.
Если существует более быстрое и безошибочное решение - подскажите алгоритм, закодить не проблема.
Show код

Show схема

_________________
Хранитель форума


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 18:20 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2011, 21:13
Сообщения: 13139
Откуда: г.Мариинск, Кемеровская обл. , мать Россия
а мк нужен обязательно? если нет -можно помутить
простецкое решение
viewtopic.php?f=14&t=8194&hilit=%D0%BF%D0%BE%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C
посмотрите схему на полевиках, если надо 4 - подумаем (проще всего по три диода катодами к каждому стоку подцепить а оноды - на затворы трёх других транзисторов)

_________________
Лишний повод не бриться: Если у меня растёт борода, значит, это зачем-то нужно? О, Господи, неужели я - философ?


Последний раз редактировалось Johnny0007 31 авг 2012, 18:22, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 18:21 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2010, 15:48
Сообщения: 1141
Откуда: Казахстан, Кустанай
Обязательно именно мега8?
Возьмите камень, где есть прерывание от любого пина (Pin Change Interrupt), хоть ту же мегу88, хоть вообще тиньку 2313. И не надо будет городить внешнюю логику.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 18:23 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2011, 21:13
Сообщения: 13139
Откуда: г.Мариинск, Кемеровская обл. , мать Россия
ну если мк - поцепите диоды от кнопок к инт0 ивсё. т.е. одну кнопку - прямо, а три других - через диоды (катодами - на кнопки, анодами - на инт0) (лог &)

_________________
Лишний повод не бриться: Если у меня растёт борода, значит, это зачем-то нужно? О, Господи, неужели я - философ?


Последний раз редактировалось Johnny0007 31 авг 2012, 18:26, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 18:25 
Старожил
Аватара пользователя

Зарегистрирован: 18 июн 2011, 16:29
Сообщения: 2099
Откуда: Докучаевск-Волноваха
Не, там еще отсчет и индикация времени, бипер фальстарта, кнопки СТАРТ_СТОП, лампочки и пр...
Оно, в принципе, работает в шпротеусе. От нажатия кнопки до появления сигнала на выходе PORTB около 5 мкс при тактовой 8 Мгц.

_________________
Хранитель форума


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 18:27 
Заглядывает иногда

Зарегистрирован: 15 авг 2012, 16:42
Сообщения: 68
триггер-защелка управляется фронтом вашего элемента 4И-НЕ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 18:30 
Заглядывает иногда

Зарегистрирован: 15 авг 2012, 16:42
Сообщения: 68
Johnny0007 писал(а):
а мк нужен обязательно? если нет -можно помутить
простецкое решение
viewtopic.php?f=14&t=8194&hilit=%D0%BF%D0%BE%D0%B8%D0%B3%D1%80%D0%B0%D1%82%D1%8C
посмотрите схему на полевиках, если надо 4 - подумаем (проще всего по три диода катодами к каждому стоку подцепить а оноды - на затворы трёх других транзисторов)


тоже первая мысль была об 4-входомом аналоге RS-триггера.
но работать не будет ИМХО


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 18:32 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:48
Сообщения: 3965
Откуда: Звенигород
Раньше такую хрень на триггерах, транзисторах или тиристорах делали. Гуглить на тему игры "кто быстрей".
Хотя задержку в микросекунды может сама кнопка дать.

_________________
От Парижа до Находки с водкой лучше, чем без водки!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 18:41 
Заглядывает иногда

Зарегистрирован: 15 авг 2012, 16:42
Сообщения: 68
Kanycma писал(а):
тоже первая мысль была об 4-входомом аналоге RS-триггера.
но работать не будет ИМХО


да, нужен 5-входовой RS-триггер.
5 элементов 5И-НЕ.
4кнопки с простыми RS-триггерами.
и кнопка сброс на пятый элемент и сброс тех 4-х триггеров.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 18:43 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2011, 21:13
Сообщения: 13139
Откуда: г.Мариинск, Кемеровская обл. , мать Россия
да зачем триггер-то? простые решения не для нас?
я ж писал выше:
поцепите диоды от кнопок к инт0 ивсё. т.е. одну кнопку - прямо, а три других - через диоды (катодами - на кнопки, анодами - на инт0) (лог &)

чем не устраивает?

_________________
Лишний повод не бриться: Если у меня растёт борода, значит, это зачем-то нужно? О, Господи, неужели я - философ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 18:44 
Старожил
Аватара пользователя

Зарегистрирован: 18 июн 2011, 16:29
Сообщения: 2099
Откуда: Докучаевск-Волноваха
Johnny0007, спасибо за идею с диодами, все работает.
Show схема
Остальным спасибо за то что откликнулись.

_________________
Хранитель форума


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 18:47 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2011, 21:13
Сообщения: 13139
Откуда: г.Мариинск, Кемеровская обл. , мать Россия
кстати, резисторы - нафиг, включите подтяжки, не такая уж серьёзная схема. а вот маленькие кондёрчики лучше поставить - от дребезга параллельно кнопкам

_________________
Лишний повод не бриться: Если у меня растёт борода, значит, это зачем-то нужно? О, Господи, неужели я - философ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 18:48 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2011, 21:13
Сообщения: 13139
Откуда: г.Мариинск, Кемеровская обл. , мать Россия
и один диод - лишний, просто одну кнопку подцепите прямо к инт0. диод сэкономите и вход

_________________
Лишний повод не бриться: Если у меня растёт борода, значит, это зачем-то нужно? О, Господи, неужели я - философ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 18:57 
Старожил
Аватара пользователя

Зарегистрирован: 18 июн 2011, 16:29
Сообщения: 2099
Откуда: Докучаевск-Волноваха
ОК, учту.

_________________
Хранитель форума


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 19:09 
Старожил

Зарегистрирован: 22 мар 2010, 22:54
Сообщения: 3995
всегда было интересно, как разруливается ситуация, когда быстро считали из порта, а там уже 2 кнопки нажато...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 19:21 
Заглядывает иногда

Зарегистрирован: 15 авг 2012, 16:42
Сообщения: 68
Johnny0007 писал(а):
да зачем триггер-то? простые решения не для нас?
я ж писал выше:
поцепите диоды от кнопок к инт0 ивсё. т.е. одну кнопку - прямо, а три других - через диоды (катодами - на кнопки, анодами - на инт0) (лог &)

чем не устраивает?


так МК то и не нужен.
к триггеру и индикацию подвесить можно.
с МК проще взять тогда с 4 входами с прерываниями.
или скоростной STM32 на 72МГц, чтобы тайминги были минимальными


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 19:31 
Старожил
Аватара пользователя

Зарегистрирован: 18 июн 2011, 16:29
Сообщения: 2099
Откуда: Докучаевск-Волноваха
Код:
00000029  PUSH R1      Push register on stack
0000002A  PUSH R0      Push register on stack
0000002B  IN R0,0x3F      In from I/O location
0000002C  PUSH R0      Push register on stack
0000002D  CLR R1      Clear Register
0000002E  PUSH R24      Push register on stack
0000002F  PUSH R25      Push register on stack
   switch (KEY_PIN & KEY_MASK)
00000030  IN R24,0x13      In from I/O location
8 тактов между входом в прерывание и считыванием из порта. При тактовой 8 МГц - 1 мкс. Вроде бы должно хватить...
Какие аппаратные варианты можно придумать?

_________________
Хранитель форума


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 19:32 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 июл 2012, 19:52
Сообщения: 119
Откуда: Елец
Это трудная и инвалидная схема. Я думая моя для ATmega8 самая лучшая по простоте.

Вложение:
proteus.jpg
proteus.jpg [ 137.87 Кб | Просмотров: 4834 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 19:41 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2011, 21:13
Сообщения: 13139
Откуда: г.Мариинск, Кемеровская обл. , мать Россия
А что - красиво... Это кусочек матричной клавиатуры (1 строка)
но работать будет чуть дольше. ТС хочет - максимум

_________________
Лишний повод не бриться: Если у меня растёт борода, значит, это зачем-то нужно? О, Господи, неужели я - философ?


Последний раз редактировалось Johnny0007 31 авг 2012, 19:43, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 19:43 
Старожил
Аватара пользователя

Зарегистрирован: 18 июн 2011, 16:29
Сообщения: 2099
Откуда: Докучаевск-Волноваха
А красота требует жертв.. Сколько времени займет вычисление номера кнопки?
Можно еще завести регистровую переменную, и по входу в прерывание сразу хватать в нее состояние порта, сохранять SREG и используемые регистры, а уже потом, на расслабоне - выяснить, кто панику поднял.

_________________
Хранитель форума


Последний раз редактировалось Финский 31 авг 2012, 19:48, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 19:47 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2010, 15:48
Сообщения: 1141
Откуда: Казахстан, Кустанай
Финский писал(а):
...8 тактов между входом в прерывание и считыванием из порта.
Эт компилятор что-ли такое наделал? Нафиг всё это??? Если настолько критичная задача по времени, ну выделите один регистр специально под неё и не надо будет никаких пушей-попов.

В прерывании читаем порт ОДНОЙ командой за ОДИН ТАКТ в специально выделенный регистр. Всё. Выходим из прерывания и спокойно, неторопясь анализируем считанное.


Последний раз редактировалось YurkaM 31 авг 2012, 19:50, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 19:48 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2011, 21:13
Сообщения: 13139
Откуда: г.Мариинск, Кемеровская обл. , мать Россия
>>А красота требует жертв..
Кстати - жертвой станет мк , если нажаты две и больше кнопок - замкнутся 0 и 1 при переборе

хотя если только на входы с подтяжкой переключать, вместо 1, то можно попробовать

_________________
Лишний повод не бриться: Если у меня растёт борода, значит, это зачем-то нужно? О, Господи, неужели я - философ?


Последний раз редактировалось Johnny0007 31 авг 2012, 19:53, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 19:49 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2011, 21:13
Сообщения: 13139
Откуда: г.Мариинск, Кемеровская обл. , мать Россия
YurkaM писал(а):
Финский писал(а):
...8 тактов между входом в прерывание и считыванием из порта.
Эт компилятор что-ли такое наделал? Нафиг всё это??? Если настолько критичная задача по времени, ну выделите один регистр специально под неё и не надо будет никаких пушей-попов.

В прерывании читаем порт ОДНОЙ командой в специально выделенный регистр. Всё. Выходим из прерывания и спокойно, неторопясь анализируем считанное.

не-не, это по даташиту - 7тактов -только на вход в прерывание - сохранение в стек+jmp на обработчик

_________________
Лишний повод не бриться: Если у меня растёт борода, значит, это зачем-то нужно? О, Господи, неужели я - философ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 19:51 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2010, 15:48
Сообщения: 1141
Откуда: Казахстан, Кустанай
Ну, время на вход в прерывание, - это само сабой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Четыре кнопки на одно прерывание
СообщениеДобавлено: 31 авг 2012, 19:54 
Старожил
Аватара пользователя

Зарегистрирован: 18 июн 2011, 16:29
Сообщения: 2099
Откуда: Докучаевск-Волноваха
Ок, перепишу обработчик на асме. Только чтение порта только хардкор

_________________
Хранитель форума


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 125 ]  На страницу 1, 2, 3, 4, 5  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB