Например TDA7294

 Форум РадиоКот • Просмотр темы - Обработка нажатия кнопки в AVR...
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Пн янв 21, 2019 00:28:01



Часовой пояс: UTC + 3 часа [ Летнее время ]


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 294 ]     ... , , , , 15
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт фев 17, 2017 09:45:11 
Встал на лапы

Зарегистрирован: Вс дек 18, 2011 11:26:43
Сообщений: 129
Откуда: Пинск
Рейтинг сообщения: 0
Неужели никто не поможет?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт фев 17, 2017 10:50:47 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 86
Зарегистрирован: Чт дек 28, 2006 09:19:56
Сообщений: 12965
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
infinity19891 писал(а):
забыл как кнопки опрашивать.
настраиваете любой таймер на прерывание каждые 15 миллисекунд. заводите volatile-переменную btn, которая будет содержать номера кнопок. в прерывании таймера записываете в эту переменную содержимое порта, к которому подключены кнопки. в основном цикле смотрите в нужные моменты эту переменную и в зависимости от того, какие там значения, делаете то или это...
Код:
#define BTN_PORT  PINB
#define BTN1   PB0
#define BTN2   PB1
#define BTN3   PB3
// и так далее, сколько там у вас кнопок
volatile uint8_t btn;

ISR(IMER0_OVF_vect){
   // каждые 15-20 миллисекунд!
   btn = (~BTN_PORT) & (_BV(BTN1) | _BV(BTN2) | _BV(BTN3));
}

int main(void){
   // всякое разное ваше
   // настройки портов и таймеров
   while(1){
      // всякое разное нужное
      switch(btn){
      case _BV(BTN1): // если нажата кнопка 1
         break;
      case _BV(BTN2): // если нажата кнопка 2
         break;
      // и так далее все кнопки
      default:
         // если не нажато ни одной кнопки или нажато сразу несколько
      }
   }
}

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...


Вернуться наверх
 
JLCPCB, 10 прототипов ПП всего за $2 и 2 дня доставка!

Крупнейший производитель печатных плат в Китае, 300,000+ заказчиков, 10,000+ он-лайн заказов в день.

Рассчитайте цену онлайн:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт фев 17, 2017 11:04:47 
Модератор
Аватар пользователя

Карма: 75
Зарегистрирован: Пт мар 19, 2010 00:09:57
Сообщений: 3944
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Немного не понятна, что означает сия фраза :
infinity19891 писал(а):
забыл как кнопки опрашивать

Состояние входа не знаете как опросить, или что ?
И что значит "забыли" ? В даташите на камень полюбому расписаны регистры, отвечающие за порты. Может стоит туда заглянуть, чтобы вспомнить ?

_________________
Я мненью вашему вращенье придавал, а осью был - мой детородный орган.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $88 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Второй конкурс по дизайну печатных плат от PCBWay!
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт фев 17, 2017 11:50:14 
Встал на лапы

Зарегистрирован: Вс дек 18, 2011 11:26:43
Сообщений: 129
Откуда: Пинск
Рейтинг сообщения: 0
ARV, Спасибо большое!


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт фев 17, 2017 19:17:45 
Друг Кота

Карма: 29
Зарегистрирован: Чт май 05, 2011 22:26:34
Сообщений: 4453
Откуда: Украина, Славутич
Рейтинг сообщения: 0
ИМХО, это немного неправильный алгоритм. Чтобы не вышло чего боком, переменную btn перед тем как передать в CASE надо скопировать! Иначе представьте что переменная изменится посреди CASE... прерывание-то может произойти в любой момент. И ещё завести надо две переменные - одна предыдущее состояние а другая, рабочая, будет содержать флаги нажатия кнопок. В прерывании произвести XOR с предыдущим состоянием, там где текущее =1 и XOR тоже даёт =1 соответствующий бит в рабочем регистре установить.

В итоге, имеем в рабочем регистре факты нажатия кнопок, независимо от того сколько их удерживают. При проверке и отработке процедуры по нажатию кнопки сбросить 1 в рабочем регистре.

Впрочем, я бы всеравно усложнил обработчик - Проверяем состояние порта по маске(надо ли? может сразу воспользоваться BST/BLD), копируем бит в флаг С, и даём команду ROL. В итоге, кнопки могут быть расположены на любом порту и заданы дефайнами, а результат ложится в один регистр компактно. Кнопки потом можно переназначать дефайнами, а внутреннее представление останется неизменным.


Вернуться наверх
 
Впервые на русском языке! «Поваренная книга разработчика аналоговых схем: Операционные усилители»

Практическое руководство «Разработчика аналоговой электроники по операционным усилителям», созданной инженерами компании Texas Instruments. Содержит схемы, примеры типовых расчетов с указанием формул и последовательности действий. Результаты расчетов дополнительно проверяются в программе SPICE-моделирования.
Подробнее...
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт фев 17, 2017 19:24:11 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 86
Зарегистрирован: Чт дек 28, 2006 09:19:56
Сообщений: 12965
Откуда: Новочеркасск
Рейтинг сообщения: 3
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Alexeyslav писал(а):
Иначе представьте что переменная изменится посреди CASE...
и что будет? ничего ровным счетом: используется переменная ровно в одном месте - switch(btn), именно в этот момент из нее будет взято значение, помещено в регистр и далее будет вестись работа уже с этим регистром. переменная пусть себе меняется хоть сто раз - отработает только то ее значение, что было в момент обращения. ну а новое - в новой итерации цикла.
не надо паники! :)

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср фев 22, 2017 02:25:17 
Встал на лапы

Зарегистрирован: Вс дек 18, 2011 11:26:43
Сообщений: 129
Откуда: Пинск
Рейтинг сообщения: 0
В общем жесть. Мутил-мутил, и намутил такого... при этом всё собралось, но ниодна нажатая кнопка не даёт никаких результатов. Бьюсь уже который день. Прошу помощи у знающих. Проект прилагается, создан в AVR Studio 4, на C. Помогите сделать кнопки рабочими...
Вложение:
stend.zip [7.82 KiB]
Скачиваний: 77


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср фев 22, 2017 13:34:12 
Друг Кота

Карма: 29
Зарегистрирован: Чт май 05, 2011 22:26:34
Сообщений: 4453
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Оно и понятно... смотрел-смотрел исходник и НЕ НАШЁЛ того места где у тебя кнопки вообще проверяются.
Лучше в таких случаях ставить себе вопрос: а почему оно ДОЛЖНО работать? и мысленно доказать что оно ДОЛЖНО работать, в процессе найдёшь причину.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Чт фев 23, 2017 02:04:16 
Встал на лапы

Зарегистрирован: Вс дек 18, 2011 11:26:43
Сообщений: 129
Откуда: Пинск
Рейтинг сообщения: 0
Alexeyslav, за время написания, сборки устройства и основной работы, уже кипит мозг. Я не могу найти ошибку, потому и прошу о помощи, ибо нет сил уже, туплю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Чт фев 23, 2017 11:32:49 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 86
Зарегистрирован: Чт дек 28, 2006 09:19:56
Сообщений: 12965
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
infinity19891 писал(а):
за время написания, сборки устройства и основной работы, уже кипит мозг. Я не могу найти ошибку
у меня сложилось впечатление, что вы откуда-то надергали файлов и свалили все в кучу, ожидая, что в этой помойке зародится жизнь.

в частности, мой "пример" опроса кнопок вы просто кинули в общую кучу даже не задумавшись, что теперь в вашем проекте 2 функции main!

думаю, вам стоит подумать о том, как нанять кого-либо для написания программы по вашему заданию, иначе ваш мозг выкипит полностью без всякого результата, разве что крышку сорвет паром.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт фев 24, 2017 14:17:18 
Встал на лапы

Зарегистрирован: Вс дек 18, 2011 11:26:43
Сообщений: 129
Откуда: Пинск
Рейтинг сообщения: 0
ARV, Ваш пример я не скинул просто в проект, скачайте и посмотрите. Функция main по всему проекту только в основном файле, main.c. Далее. Я всё прекрасно понимаю, что проще человека обвинить неизвестно в чём, нежели помочь ему. А я просто очень давно не писал ничего. Так что спасибо вам за помощь.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт фев 24, 2017 15:29:58 
Электрический кот
Аватар пользователя

Карма: 20
Зарегистрирован: Ср янв 29, 2014 09:41:31
Сообщений: 1029
Откуда: Баку
Рейтинг сообщения: 0
infinity19891 писал(а):
Функция main по всему проекту только в основном файле, main.c

В switch.c загляните.

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Чт мар 02, 2017 23:57:02 
Встал на лапы

Зарегистрирован: Вс дек 18, 2011 11:26:43
Сообщений: 129
Откуда: Пинск
Рейтинг сообщения: 0
Zhuk72, да, вы правы. Только этот файлик случайно оказался в архиве, и отношения ко всей программе не имеет. Похоже запутал этим людей. Всё касающееся кнопок в файле sw.c. Но никак не получается правильно построить опрос кнопок, и сделать чтобы всё работало как надо. Потому и прошу помощи.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт янв 11, 2019 16:56:05 
Модератор
Аватар пользователя

Карма: 75
Зарегистрирован: Пт мар 19, 2010 00:09:57
Сообщений: 3944
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
По кнопкам сюда - https://radiokot.ru/forum/viewtopic.php?f=61&t=79801

_________________
Я мненью вашему вращенье придавал, а осью был - мой детородный орган.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 294 ]     ... , , , , 15



Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

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


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

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


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y