Например TDA7294

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



Текущее время: Ср янв 29, 2020 05:27:42

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


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



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

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


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

Карма: 83
Рейтинг сообщений: 1551
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 14480
Откуда: Новочеркасск
Рейтинг сообщения: 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, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

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

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

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

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


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт фев 17, 2017 10:50:14 
Встал на лапы

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


Вернуться наверх
 
Molex: соединения, связь, инновации

Развитие техники предъявляет все более высокие требования к разъемам и скорости передачи данных. Соединения становятся прецизионными и наукоемкими изделиями. На сегодня Molex – это не только высокотехнологичные разъёмы, но и инновационные устройства передачи данных.

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

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

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

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


Вернуться наверх
 
Как реализовать минимальное энергопотребление беспроводного микроконтроллера STM32WB55

Система питания беспроводных микроконтроллеров STM32WB55 выглядит непросто, но при этом каждый узел может быть запитан отдельным напряжением, величина которого будет являться наилучшим компромиссом для конкретной тактовой частоты. Это делает STM32WB55 идеальными для создания устройств с батарейным питанием.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт фев 17, 2017 18:24:11 
Ум, честь и совесть. И скромность.
Аватар пользователя

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

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

клавиатура частенько сбоит - пропускает буквы. так что прошу простить, если что...


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


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

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


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


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

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


Вернуться наверх
 
Распродажа паяльных станций ATTEN и аксессуаров!
Индукционная паяльная станция AT315D - 3 977 ₽, станция паяльная AT80D – 2177 ₽, станция паяльная AT936b – 1000 ₽!

Заходите в раздел акции и спецпредложения на сайте prist.ru, покупайте измерительные приборы, инструмент и паяльно-ремонтное оборудование по специальным ценам.
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Чт фев 23, 2017 01:04:16 
Встал на лапы

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


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

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

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

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

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

клавиатура частенько сбоит - пропускает буквы. так что прошу простить, если что...


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

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


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

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

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

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

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


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

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


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

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

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


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

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


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

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


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

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


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