Например TDA7294

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



Текущее время: Вт сен 22, 2020 14:27:38

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


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



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 294 ]     ... , , , 9, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пн июн 24, 2013 01:21:14 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 881
Рейтинг сообщения: 1
Alexeyslav писал(а):
По факту достаточно ОДНОГО защелкивания. Ведь в процессе дребезга на момент защелкивания может быть считано только одно из двух 1 или 0. Но поскольку конкретно этот момент считывания обрамляют разные уровни 1 и 0 либо 0 и 1 то каким бы ни было считывание в момент дребезга оно лишь приведет к отставанию считывания реального состояния кнопки максимум на время одного опроса.
Я думаю что не достаточно ОДНОГО защелкивания....
Напимер если прибор работает в условиях помех, то запросто возможна ситуация, когда единичное чтение даст положительный результат.... как результат - выполнится какое то действие....

Я только через счетчик защелки опрашиваю кнопки, так 100% надежно.....
Давно уже состряпал себе такую либу, опрос 4-х кнопок (короткое, длинное нажатие)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пн июн 24, 2013 10:45:48 
Друг Кота

Карма: 28
Рейтинг сообщений: 563
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4506
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Вероятность такого события довольно низка. А если у вас в условиях применения схемы так сильно прут помехи, боюсь там проблем будет выше крыши не только с кнопками. В крайнем случае, импульсные помехи сглаживает обычная RC-цепочка(но она не избавляет от дребезга реальной кнопки).


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

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

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

Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Вт июл 02, 2013 22:02:15 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 881
Рейтинг сообщения: 0
Alexeyslav писал(а):
Вероятность такого события довольно низка. А если у вас в условиях применения схемы так сильно прут помехи, боюсь там проблем будет выше крыши не только с кнопками. В крайнем случае, импульсные помехи сглаживает обычная RC-цепочка(но она не избавляет от дребезга реальной кнопки).
Да, например плата компактная и помехи ей не страшны..... но если кнопки расположены не на плате, и подключены шлейфом.... Вот вам и подвох.....
Поклацайте выключателем рядом с таким прибором..... (а сам прибор работает отменно, никаких проблем выше крыши.....)
Можно конечно поставить RC на каждую кнопку..... Ну а можно и программно решить.... тут уж на вкус и цвет....


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Шестое юбилейное мероприятие в процессе
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Вт июл 02, 2013 22:46:20 
Друг Кота

Карма: 28
Рейтинг сообщений: 563
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4506
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Вероятность того что помеха от соседнего выключателя попадет ровно на момент опроса кнопки стремится к нулю. Чтобы эту вероятность повысить до приемлемого уровня, кнопку надо нажимать примерно с частотой опроса или чаще, ну либо коллекторный двигатель с неисправными щетками поднести к схеме.
В случае прерываний на кнопках, эти импульсы 100% будут фиксироваться....

Но нет ничего идеального... вот мой бесперебойник с ума сходит если поднести к нему включенную радиостанцию, всего 0.5Вт.

По большому счету, если провода к кнопкам длиннее 10 сантиметров, уже надо применять какие-то ограничители напряжения или писать в условиях эксплуатации устройства несовместимость с сильными электромагнитными полями.

Да, работает у меня одно устройство с кнопкой(геркон) которая просто опрашивается с частотой 100Гц - уже десяток лет, ложных срабатываний не обнаружено. Условия, правда, бытовые а не промышленные.

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


Вернуться наверх
 
Драйверы MOSFET/IGBT Infineon – силой нужно управлять!

Специалисты Infineon усовершенствовали традиционные кремниевые MOSFET и IGBT и выпустили компоненты на базе принципиально иных материалов – нитрида галлия и карбида кремния. Мы создали подборку полезных материалов, чтобы вы разобрались во всех тонкостях и стали экспертом по управлению силовыми приборами нового поколения CoolMOS, CoolGaN, CoolSiC!

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт ноя 08, 2013 15:27:40 
Открыл глаза

Зарегистрирован: Пн авг 26, 2013 23:24:01
Сообщений: 60
Рейтинг сообщения: 0
Всем привет, пытаюсь сделать себе небольшое устройство но с кнопкой так и не разберусь. Суть такая устройство управляет яркостью диодов в двух режимах и запоминает эти уровни яркости, но смог сделать запись данных только при выходе из цикла, но как сделать запись по нажатию кнопки так и не смог разобраться


как сделать чтобы переменные записывались по нажатию кнопки энкодера


Вернуться наверх
 
Снижена цена на DC/DC и AC/DC преобразователи Mornsun в Компэл!

Хорошие новости для покупателей источников питания! Компэл снизил цены на всю продукцию Mornsun. В ассортименте – как широко известные и популярные позиции, так и новинки. Доступны AC/DC, неизолированные DC/DC-преобразователи или импульсные стабилизаторы (семейство K78/R3), изолированные DC/DC, и новейшее поколение R4.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Вт дек 17, 2013 01:08:10 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 881
Рейтинг сообщения: 0
Naman_S писал(а):
как сделать запись по нажатию кнопки так и не смог разобраться
Уже разобрался?


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


Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пн фев 03, 2014 21:53:03 
Открыл глаза

Зарегистрирован: Пн авг 26, 2013 23:24:01
Сообщений: 60
Рейтинг сообщения: 0
shads нет, если поможешь буду благодарен


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


Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пн фев 03, 2014 23:25:36 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 881
Рейтинг сообщения: 0
Naman_S писал(а):
shads нет, если поможешь буду благодарен

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


Вернуться наверх
 
Бытовой пирометр АКИП-9312 – просто удобно!

Диапазон 35 °С ...42°С (температура тела) погрешность 0,3 °С
Диапазон 0 °С ...100°С (бытовая сфера) погрешность 1,0 °С
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пн фев 03, 2014 23:31:00 
Открыл глаза

Зарегистрирован: Пн авг 26, 2013 23:24:01
Сообщений: 60
Рейтинг сообщения: 0
viewtopic.php?f=57&t=93727 вот темку создавал заходи туда


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Вт фев 04, 2014 01:15:51 
Друг Кота

Карма: 28
Рейтинг сообщений: 563
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4506
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Так собственно проблема в чем, отловить момент нажатия кнопки, или записать в EEPROM?
Момент отловить - постоянно сравнивать состояние кнопки с предыдущим, моменты нажатия и отпускания отлавливаются на раз-два, а процедура записи в EEPROM приведена прямо в даташите на контроллер, в виде куска кода. Да, перед записью стоит убедится что записываешь другое значение а не то что там уже есть - чтобы зря ресурс ячеек не расходовать, особенно во время отладки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Вт фев 04, 2014 01:18:45 
Открыл глаза

Зарегистрирован: Пн авг 26, 2013 23:24:01
Сообщений: 60
Рейтинг сообщения: 0
Alexeyslav писал(а):
Так собственно проблема в чем, отловить момент нажатия кнопки, или записать в EEPROM?
Момент отловить - постоянно сравнивать состояние кнопки с предыдущим, моменты нажатия и отпускания отлавливаются на раз-два, а процедура записи в EEPROM приведена прямо в даташите на контроллер, в виде куска кода. Да, перед записью стоит убедится что записываешь другое значение а не то что там уже есть - чтобы зря ресурс ячеек не расходовать, особенно во время отладки.

с еепром проблем нет, а вот чтобы производить запись по нажатию кнопки с этим уже проблемы


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пн апр 21, 2014 20:08:33 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 31
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6222
Откуда: Ukraine, Mariupol
Рейтинг сообщения: 0
Код:
if (button==0)
{
      _delay_ms (bounce);
      while (button==0) {};
      if(++mode>=5)mode=0;
}

_________________
____________Если бы начальником был я___________
«Нет верной оценки. Нет справедливого суда. Безошибочно только милосердие.»


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср апр 23, 2014 23:00:09 
Нашел транзистор. Понюхал.

Зарегистрирован: Вс мар 30, 2014 21:41:24
Сообщений: 170
Откуда: Украина
Рейтинг сообщения: 0
Здравствуйте. Не могу реализовать алгоритм включения нагрузки по нажатию кнопки дважды.
То есть выполнить такой-то код, если кнопка была нажата 2 раза.

Вот моя безуспешная попытка:
Код:
#include <mega8.h>
#include <delay.h>

void main(void)
{
PORTB=0x00;         // PORTB - выход
DDRB=0x01;                 
PORTC=0x01;         // PORTC - вход
DDRC=0x00;

while (1)

{     
unsigned char a=0; // переменной а присвоить 0
    if(PINC.0==0) // если кнопка нажата
    {
    a++;            // инкриминируем а
        if(a==2)    // если а равно 2 (кнопка нажата 2 раза)
        {
        PORTB.0=1;   // выводим 1
        a=0;         // обнуляем а
        }
        }
}
}     


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср апр 23, 2014 23:44:53 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 31
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6222
Откуда: Ukraine, Mariupol
Рейтинг сообщения: 0
попробуй так
Код:
if(PINC.0==0) // если кнопка нажата
{
      delay_ms (10);
      while (PINC.0==0) {};
    a++;            // инкриминируем а
        if(a==2)    // если а равно 2 (кнопка нажата 2 раза)
        {
        PORTB.0=1;   // выводим 1
        a=0;         // обнуляем а
        }
        }


_________________
____________Если бы начальником был я___________
«Нет верной оценки. Нет справедливого суда. Безошибочно только милосердие.»


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Чт апр 24, 2014 00:32:45 
Друг Кота

Карма: 28
Рейтинг сообщений: 563
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4506
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Вам кроме подсчета нажатий надо бороться с дребезгом(прошлый код был попыткой это сделать) и ОТЛАВЛИВАТЬ моменты нажатия и отпускания(это не реализовано у вас в коде, у вас получается если кнопка нажата больше двух опросов - она считается нажатой дважды) - сделать это можно только сравнивая считанное состояние кнопки с состоянием предыдущим в прошлой итерации. Во вторых, при первом нажатии надо запустить таймер на 1-2 секунды, если второго нажатия не будет за это время - обнулить счетчик нажатий и остановить таймер.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Чт апр 24, 2014 08:09:38 
Нашел транзистор. Понюхал.

Зарегистрирован: Вс мар 30, 2014 21:41:24
Сообщений: 170
Откуда: Украина
Рейтинг сообщения: 0
Alexeyslav писал(а):
Вам кроме подсчета нажатий надо бороться с дребезгом(прошлый код был попыткой это сделать) и ОТЛАВЛИВАТЬ моменты нажатия и отпускания

Подскажите как ОТЛАВЛИВАТЬ моменты нажатия и отпускания?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Чт апр 24, 2014 08:22:42 
Ум, честь и совесть. И скромность.
Аватар пользователя

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Чт апр 24, 2014 09:20:22 
Друг Кота

Карма: 28
Рейтинг сообщений: 563
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4506
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Цитата:
как ОТЛАВЛИВАТЬ моменты нажатия
Внимательно прочтите сообщение которое перед вашим...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Чт апр 24, 2014 22:13:06 
Нашел транзистор. Понюхал.

Зарегистрирован: Вс мар 30, 2014 21:41:24
Сообщений: 170
Откуда: Украина
Рейтинг сообщения: 0
Alexeyslav писал(а):
Внимательно прочтите сообщение которое перед вашим...

Извините пожалуйста, читал это сообщение ОЧЕНЬ внимательно, но я не силен в программировании (пока) и не знаю как реализовать это на "С".

Я попробовал осуществить задумку через внешние прерывания, работает вроде так как надо, но почему-то в прерывании одно нажатие считается за два, объясните пожалуйста почему так и подправьте код если не сложно.
Спасибо.
Код:
#include <mega8.h>
#include <delay.h>

char s=0;   // переменная s=0

interrupt [EXT_INT0] void ext_int0_isr(void)//внешние прерывания

{
s++;               //инкриминируем s
        if(s==4)    // если s=4(а не 2, как нужно)
        {
        PORTB.0=0;    // 0 на PORTB.0=0
        s=0;          // обнулить s
        }
       
}

void main(void)
{
DDRB=0x01;
PORTB.0=1;
PORTC=0x01;
DDRC=0x00;

PORTD=0x04;
DDRD=0x00;


GICR|=0x40;
MCUCR=0x01;
GIFR=0x40;
UCSRB=0x00;
SFIOR=0x00;
SPCR=0x00;
TWCR=0x00;

// Global enable interrupts
#asm("sei")

while (s==0) // пока s=0
      { 
       
       PORTB.0=1;
       delay_ms(5000);
      }
}

PS
Я чуток изменил задачу, теперь при подаче питания на PORTB.0 будет 1 пока кнопка не будет нажата 2 раза, после чего произойдет задержка в delay_ms(5000) и PORTB.0 опять будет 1 пока кнопка снова не будет нажата 2 раза.
Очень надеюсь на вашу помощь.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Пт апр 25, 2014 10:23:46 
Друг Кота

Карма: 28
Рейтинг сообщений: 563
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4506
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Это не зависит от языка. Напишите программу на русском, потом переводите на С. А вообще, начинать надо с рисования блок-схемы карандашом на листе бумаги, потом переводить на С.

Прерывания... куда вас в СТЕПЬ понесло? Во-первых, задачу решить можно без прерываний а во-вторых работает такая вещь как дребезг контактов - у вас при нажатии кнопки возникает сложный переходный процесс в котором возникает целая пачка импульсов иногда до сотни за раз.
И когда пишете программу, попытайтесь её исполнить в роли процессора - сразу увидите ошибку.


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

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


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

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


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

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


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