Например TDA7294

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





Текущее время: Вт апр 16, 2024 10:17:28

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


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



Начать новую тему Ответить на тему  [ Сообщений: 321 ]     ... , , , 15, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Чт фев 02, 2017 13:58:08 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 33
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6296
Откуда: Ukraine
Рейтинг сообщения: 0
а какого номинала резисторы внутренней подтяжки у AVR ?

_________________
Tell Me The Truth


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Чт фев 02, 2017 14:14:30 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
вроде бы 50-100к
на плате без разговоров этого обычно достаточно, но если помеховая обстановка тяжелая или провода идут дальше или вообще шлейфом уходят с платы, то без раздумий нужно вешать внешнюю подтяжку, да посильнее, например 4,7 - 10к


У меня был случай прикольный:
Я тоже в своем устройстве использовал внутреннюю подтяжку, кнопка всего в 5-ти см от контроллера, кнопка использовалась для программирования устройства, все всегда нормально было, но как то раз...
На этом объекте другая фирма смонтировала рекламный щит, при этом поленились крепить свою коробку для коммутации питания щита, и взяли и засунули всю коммутацию в нашу коробку...
Далее в течение какого то времени нас периодически вызывали по поводу отказа нашего блока... всякий раз оказывалось что блок запрограммирован на несоответствующие функции, его тут же настраивали правильно и на какое то время все было ОК... но потом все повторялось...
Так было до тех пор пока я лично не приехал на объект... я конечно удивился куче проводов в нашей коробке, но не придал этому особого значения... и тут....... прям на моих глазах, блок самолично вошел в режим настроек..... и начал скакать туда сюда... я сначала потерял на время дар речи... но потом сообразил, что это - 10А импульсный блок питания, который стоит рядом, а его силовая проводка проходящая прям под контроллерной платой - так колбасят линию кнопки, что и даже программный антидребезг не помогает отсеть такие наводки...
После освобождения нашей коробки от лишних проводов, мы про этот объект постепенно забыли.....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Чт фев 02, 2017 15:41:23 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 33
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6296
Откуда: Ukraine
Рейтинг сообщения: 0
shads писал(а):
вроде бы 50-100к

нашол все-таки :)
ATmega8
Изображение
выходит чем больше сопротивление резистора подтяжки тем сильнее он ловит всякие помехи ?

_________________
Tell Me The Truth


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Пт фев 03, 2017 17:31:04 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
FreshMan писал(а):
выходит чем больше сопротивление резистора подтяжки тем сильнее он ловит всякие помехи ?
Естественно...
Только не резистор ловит помехи, а вход контроллера...
При бесконечном сопротивлении подтяжки - вход вообще будет работать как антенна )))


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Пт фев 03, 2017 17:56:33 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 33
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6296
Откуда: Ukraine
Рейтинг сообщения: 0
тогда я вот что не возьму в толк: почему специ из AVR поставили подтягивающий резистор номиналом в 20-50кОм ?
почему бы не поставить 4,7кОм ?
они что о подобного рода проблемах не ведали ?
навряд...... :roll:

_________________
Tell Me The Truth


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Пт фев 03, 2017 19:04:25 
Опытный кот
Аватар пользователя

Карма: 4
Рейтинг сообщений: 11
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 823
Откуда: Киселевск
Рейтинг сообщения: 0
https://ru.wikipedia.org/wiki/%D0%9F%D0 ... 0%BE%D1%80

_________________
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Пт фев 03, 2017 20:59:49 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
FreshMan писал(а):
тогда я вот что не возьму в толк: почему специ из AVR поставили подтягивающий резистор номиналом в 20-50кОм ?
почему бы не поставить 4,7кОм ?
Ну просто всему есть разумные пределы... А то можно и продолжить тему, почему они например не сделали внутренний отключаемый последовательный резистор? чтобы можно было сразу светодиод вешать???

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

Ну а у нас, простых кулибинов, как всегда - сколько людей столько и мнений)))
Радуйтесь, что хоть такой резистор есть, хуже было бы если бы они его вообще не реализовали... для многих задач его хватает, ну а если вам нужно выжимать максимумы, тут уж будьте добры навешивайте то что вам необходимо - резисторы, силовые ключи или что там еще может пригодится...

FreshMan писал(а):
они что о подобного рода проблемах не ведали ?
Кстати а вы знаете о такого рода проблеме как энергосбережение??? есть же много батарейных устройств... представьте что конкуренты ставят 50к резисторы, а вы поставили 4к7... так вот теперь когда вы будете нажимать на кнопочку своего устройства, ваша батареечка будет садится в 10 раз быстрее чем у конкурентов!!!!! как вам такие перспективы?



Посмотрел у STM8 - примерно та же песня...

Изображение


Вложения:
Безымянный.png [53.61 KiB]
Скачиваний: 2496
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Интервал нажатия кнопки.
СообщениеДобавлено: Пт мар 16, 2018 15:56:01 
Открыл глаза
Аватар пользователя

Зарегистрирован: Пт авг 07, 2009 06:55:32
Сообщений: 62
Откуда: Asia. Turkmenistan
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Всем доброго времени суток.
Подскажите пожалуйста начинающему, как реализовать программную обработку условия нажатой кнопки. К примеру, нажата кнопка ST1 - 1 сек, выполняем функцию 1, если время вышло, функцию 2. . Заранее благодарен.
Спойлерif(BUT1==0) // если нажата кнопка BUT1
{
if(BUT2==1)// если отжата кнопка BUT2
delay_ms(50);
OUT6=0; // тушим левый
delay_ms(50);
OUT5=1; // зажигаем правый
}
else
{
if(ST1==0)//если нажали ST1
{
delay_ms(50);
OUT5=0; //тушим правый
delay_ms (300);
OUT5=1;
}
}
if(BUT2==0) // если нажата кнопка BUT1
{
if(BUT1==1) //если отжата but1
delay_ms(50);
OUT5=0; // тушим правый
if(BUT1==1)// если отжата кнопка BUT2
delay_ms(50);
OUT6=1; // зажигаем левый
}
else
{
if(ST2==0)//если нажали ST1
{
delay_ms(50);
OUT6=0; //тушим левый
delay_ms (300);
OUT6=1;
}
}

}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Интервал нажатия кнопки.
СообщениеДобавлено: Пт мар 16, 2018 16:29:43 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
тут посмотри

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Интервал нажатия кнопки.
СообщениеДобавлено: Пт мар 16, 2018 19:48:32 
Открыл глаза
Аватар пользователя

Зарегистрирован: Пт авг 07, 2009 06:55:32
Сообщений: 62
Откуда: Asia. Turkmenistan
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
тут посмотри

Спасибо. Так как я начинающий, очень с трудом дался вариант со сбросом счетчика после выполнения условия. Для одной кнопки.Но не смог я сделать это для двух кнопок. Мне бы кусок кода глянуть. Пробовал таким методом.
Спойлерif(KEY==0) // если нажата кнопка
{
if(counter!=255)counter++; //начинаем счет
OUT4=1;
delay_ms(150); //Мигаем индикатором нога №3
OUT4=0;
if(counter==LONGKEY) //Если длительное по длительности нажатие
{
if(OUT1)OUT1=0; else OUT1=1;eep_1=OUT1; //Включаем, запоминаем PORTB.1 нога №6
}
}
else // иначе
{
if(counter>=1) //если был начат счет
{
if(counter<midkey) // и это короткое по длительности нажатие
{
if(OUT2)OUT2=0;else OUT2=1;eep_2=OUT2; //Включаем, запоминаем PORTB.2 нога №7
}
else
{
if(counter<longkey) //среднее по длительности нажатие
{
if(OUT3)OUT3=0;else OUT3=1;eep_3=OUT3; //Включаем, запоминаем PORTB.3 нога №2
}
}
}
counter=0; //Сброс подсчитанного
}
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Сб мар 17, 2018 21:17:29 
Открыл глаза
Аватар пользователя

Зарегистрирован: Пт авг 07, 2009 06:55:32
Сообщений: 62
Откуда: Asia. Turkmenistan
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Голову готов расшибить себе... Подскажите пожалуйста где ошибка? Код с этого топика. Работает только на короткое нажатие.


Вложения:
butt1.rar [62.64 KiB]
Скачиваний: 454
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Сб мар 17, 2018 21:19:51 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А где в коде обработка события длинного нажатия ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Сб мар 17, 2018 22:22:01 
Открыл глаза
Аватар пользователя

Зарегистрирован: Пт авг 07, 2009 06:55:32
Сообщений: 62
Откуда: Asia. Turkmenistan
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А где в коде обработка события длинного нажатия ?

Спасибо за столь быстрый ответ. Я поудалял все, за сутки этих пробных версий ведро написал :(( Вот теперь думаю в самой инициализации ошибки допустил.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Вс мар 18, 2018 07:08:57 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 1
Спойлер//Chip type : ATtiny13
//Clock frequency : 9,600000 MHz

#include <tiny13.h>
#include <delay.h>

bit oldButton, Button;
unsigned char timeout;

void main(void)
{
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Port B initialization
PORTB=0x01;
DDRB=0x18;
// Clock value: Timer 0 Stopped
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;
// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x00;
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;


Button= PINB.0; // считываем состояние кнопки

while (1)
{
delay_ms(10); // задержка 10 мсек

oldButton= Button; // предыдущее состояние кнопки
Button= PINB.0; // текущее состояние кнопки

if(oldButton && !Button) timeout= 100; // взводим таймаут на 1 сек при нажатии кнопки
if(!oldButton && !Button && timeout) --timeout; // уменьшаем таймаут при удержании кнопки
if(!oldButton && Button) // если кнопка отжата
{
if(timeout) PORTB^= 0x08; // если прошло менее 1 сек, то инвертируем выход РВ3
else PORTB^= 0x10; // если прошло более 1 сек, то инвертируем выход РВ4
}
};
}

Изображение

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Вс мар 18, 2018 16:43:26 
Открыл глаза
Аватар пользователя

Зарегистрирован: Пт авг 07, 2009 06:55:32
Сообщений: 62
Откуда: Asia. Turkmenistan
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
pyzhman Спасибо огромное! :beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Вс мар 18, 2018 17:28:59 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
Пожалуйста.

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Чт янв 10, 2019 22:09:14 
Открыл глаза
Аватар пользователя

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Вт сен 27, 2011 07:28:44
Сообщений: 46
Откуда: Москва
Рейтинг сообщения: 0
Господа, помогите разобраться, третий день мучаюсь.
Имеется три кнопки и три светодиода контрольных. Дребезг победил, но проблема в том, когда держишь одну кнопку нажатой (допустим первую), то любой другой кнопкой можно выполнить действие для первой кнопки, при этом действие прописанное для самой этой кнопки, которую нажимаешь к уже нажатой не выполняется. Сумбурно, но вроде понятно.
Спойлер
Код:
#include <avr/io.h>   /* Device specific include file */
#include "hd44780.h"  /* EZ-LCD include file (библиотека по японской технологии) */
#include <util/delay.h> //Delay library
#include <avr/interrupt.h> //Interrupt library
//#include "xprintf.h"
//#include <avr/pgmspace.h>
//#include <stdio.h>
//#include <string.h>
//#include <avr/eeprom.h>

#define RED PD7
#define YELLOW PD6
#define GREEN PD5
#define BTN1 PD0
#define BTN2 PD1
#define BTN3 PD2

static volatile uint8_t divider, state=0, keys=0, btns=0, flags=0;

void toggle (uint8_t color)
{
    if (~PIND&(1<<color))
    {
        PORTD|=(1<<color);
    }
    else
    {
        PORTD&=~(1<<color);
    }
}

void buttons (void)
{
   btns=~PIND; //читаем PIND в переменную и инвертируем прочитанное
   btns=btns&((1<<BTN1)|(1<<BTN2)|(1<<BTN3)); //отсекаем лишние разряды, оставляем только кнопки

   switch(btns)
   {
      case (1<<BTN1): //если нажата кнопка 1
        if(~flags&(1<<BTN1)) //если флаг первой кнопки не установлен, то
           {
              flags|=(1<<BTN1); //устанавливаем флаг
            toggle(RED); //что-то делаем
         }   
          break; //и на выход

      case (1<<BTN2): //если нажата кнопка 2
        if(~flags&(1<<BTN2)) //если флаг второй кнопки не установлен, то
          {
               flags|=(1<<BTN2); //устанавливаем флаг
            toggle(YELLOW); //что-то делаем
          }
         break; //и на выход

      case (1<<BTN3): //если нажата кнопка 3
        if (~flags&(1<<BTN3)) //если флаг третьей кнопки не установлен, то
           {
            flags|=(1<<BTN3); //устанавливаем флаг
            toggle(GREEN); //что-то делаем
           }
         break; //и на выход

      default: //если не нажата ни одна кнопка
         flags=0; //сбрасываем все флаги
    break; //и на выход
   }
   keys=0; //сбрасываем флаг разрешения опроса кнопок
}

/*void button (void)
{         
    if (~PIND&(1<<BTN1) && state==0) // если кнопка нажата и флаг не установлен, то
    {
        toggle(RED); // вызываем переключалку красного светодиода
      //toggle(GREEN);
    }
    if (~PIND&(1<<BTN1)) // если кнопка нажата, то
    { state=1; } // устанавливаем флаг
    else
    { state=0; } // если отпущена, то опускаем флаг
   keys=0;
}
*/

ISR(TIMER0_OVF_vect) //прерывание по переполнению
{
    divider++; //увеличиваем щоччик
   if (divider==3) // 61Гц/3=20Гц (или 50 мс)
   {   
        divider=0; //сбрасываем щоччик
      keys=1; //устаналиваем флаг разрешения опроса кнопок
   }

}

int main (void)
{
   //Инициализация портов I/O
    //PORTB это LCD порт, инициализируется в файле hd44780.c
    //Ноги PB0 и PB1 свободны
   ACSR|=(1<<ACD); //отключение компаратора
   DDRD|=(1<<PD7)|(1<<PD6)|(1<<PD5); //ноги PD7, PD6, PD5 на выход
    PORTD|=(1<<PD0)|(1<<PD1)|(1<<PD2); //подключение подтягивающих резисторов
    //Инициализируем таймер для кнопок
   TCCR0|=(1<<CS02)|(0<<CS01)|(1<<CS00); //таймер0 с предделителем 1024, т.е. 8000000/1042=7812,5Гц (или 128мс)
   TCNT0=128; //значение щ0ччика 7812,5/128=61Гц (или 16мс)
   TIMSK|=(1<<TOIE0); //разрешаем прерывание таймера0 по переполнению
   
   //Баловство-приветствие
   lcd_init(); /* Initialize LCD */
   _delay_ms(200);
   lcd_putc(0x56); //V
   _delay_ms(200);
   lcd_putc(0x41); //A
   _delay_ms(200);
   lcd_putc(0x44); //D
   _delay_ms(200);
   lcd_putc(0x45); //E
   _delay_ms(200);
   lcd_putc(0x47); //G
    _delay_ms(200);
   lcd_locate(1,3); //ставим курсор на вторую строку, 4-е знакоместо
   lcd_putc(0x44); //D
   _delay_ms(200);
   lcd_putc(0x41); //A
   _delay_ms(200);
   lcd_putc(0x44); //D
   _delay_ms(200);
   lcd_putc(0x45); //E
    _delay_ms(200);
   lcd_putc(0x47); //G
    _delay_ms(500);
   lcd_locate(0,0); //почему-то нужен возврат на нулевую позицию, я х.з?
    lcd_putc('\f'); //очистка экрана и возврат курсора "домой"

    sei(); //сеем

    while(1) //бесконечный цикл
    {
        if(keys==1) //если флаг разрешения опроса кнопок поднят, то
        {
         buttons(); //опрашиваем кнопки
        }
    }       
}

_________________
ИзвЕните от слова - веник, ИзвИните от слова - вина.


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

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14052
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Необходим алгоритм для определения последней устойчивой КОМБИНАЦИИ нажатых/активных кнопок, а не "поштучное" оценивание каждой кнопы в отдельности.
8)
Без схемотехники кноп затруднительно подсказать...
:dont_know:


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

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
по-моему, надо просто убрать все флаги и тупо выполнять в switch-е нужное действие по коду нажатой кнопки. в этом случае надо учитывать и комбинации нажатых кнопок. при необходимости после switch-а дожидаться отпускания кнопок.

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

Мой уютный бложик... заходите!


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

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14052
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Под ассемблером...
буфер статуса ЛВК получает значение при первом обнаружении какого-либо нажатия
при контроле антидребезга снова чтение
если комбинация совпала с предыдущей - исполняем
если иная - замена содержимого в буфере и повтор антидребезга
если ВСЕ сброшены - возврат в исходное состояние.
:roll:
Ну а по завершении обработки цикл ожидания "полного отпускания".
Как под Си... ешшо не пробовал...
:dont_know:


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 321 ]     ... , , , 15, ,  

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


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

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


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

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


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