реклама на сайте
подробности

 
 
> Дребезг контактов, Как избежать?
Labinskiy Nikola...
сообщение Jul 9 2006, 18:55
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 27
Регистрация: 5-07-06
Из: Украина, Донецк
Пользователь №: 18 606



Кнопка замыкает ножку на землю.
Mega16
Код
#include <avr/io.h>
#include <avr/interrupt.h>

#define F_CPU 8000000UL  // 8 MHz
#include <util/delay.h>

ISR(INT2_vect)
{
  int i;
  for (i=0;i<3;i++)
    _delay_ms(10);
  if ((PINB & 0x04)==0) // ножка внешнего прерывания
      PORTA ^= 1;
}

int main()
{
  PORTA = 0;
  DDRA = 0xFF;

  PORTB = 0xFF;
  DDRB = 0x00;
  
  MCUCSR &= ~_BV(ISC2);  // по заднему фронту (H->L)
  GICR = _BV (INT2);
  sei ();

  for(;;)
  return(0);
}


Идея вроде бы правильная, но на практике срабатывает плоховато...
В чем ошибка?

Сообщение отредактировал Labinskiy Nikolay - Jul 9 2006, 18:59


--------------------
If you can't make it good - don't make it look good ;)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
smk
сообщение Feb 10 2010, 17:48
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Marian
сообщение Feb 11 2010, 13:49
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 148
Регистрация: 23-02-07
Пользователь №: 25 618



Цитата(smk @ Feb 10 2010, 19:48) *
Как выяснилось в моем случае, полезно обеспечивать не только устранение дребезга, но и время нечувствительности к повторному нажатию. Иначе сканировать и отрабатывать будет успевать быстрее чем поймет оператор что он нанажимал.

Или следить, когда кнопку отпустили.
Для схемы с одной кнопкой делал типа :

Код
#define Knopka PIND.3
// Knopka podl na PD 3 , vtoraja noga na zemlu
// v portu vklucit podtiagivajushchij rezistor, ili postavit vneshnij k +5 V
// jesli knopka nazata, to "Knopka " budet ravna 0

unsigned char ButtonDownTime(void)
// return TimeLong if long, and TimeShort if short time
{
   unsigned char i;
   while ( Knopka == 1);  
   for(i=0;i<7;i++)
   {
      delay_ms(50);      // zadierzka od drebiezga kontaktow
      if (Knopka == 1)   // odpuscili knopku
      {
         return TimeShort;//short
         goto MEnd; // vyhod s cikla
      }
   }    
   return TimeLong;//long
MEnd:  
}

void WaitButtonUp(void)
{                        
   while (Knopka == 0);
   delay_ms(50);
}

// vyzyvat primerno tak
if (Knopka == 0) //Pervoje nazatije, vhod v menu
{
    WaitButtonUp(); // zhdem otpuskanija knopki
    if (ButtonDownTime() == TimeShort)
   {
      //naprimer uvelichit peremennuju HD++;
      WaitButtonUp();
    }
   else //if (ButtonDownTime() == TimeShort)
  {          
     // perehod na sledushchij punkt menu
  }
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Labinskiy Nikolay   Дребезг контактов   Jul 9 2006, 18:55
- - Yura_K   Код int i; for (i=0;i<3;i++) _dela...   Jul 9 2006, 19:13
- - rezident   Есть два стандартных способа опроса клавиатуры с у...   Jul 9 2006, 19:25
|- - Stas633   Цитата(rezident @ Jul 9 2006, 23:25) Есть...   Jul 9 2006, 22:32
- - TamTam   [quote name='Stas633' date='Jul 10 200...   Jul 9 2006, 22:50
|- - Velund   С весовыми резисторами имеет смысл связываться тол...   Jul 9 2006, 23:59
|- - Stas633   Цитата(Velund @ Jul 10 2006, 03:59) С вес...   Jul 10 2006, 07:45
|- - Kovrov   Цитата(Stas633 @ Jul 10 2006, 11:45) Мне ...   Jul 10 2006, 08:46
|- - defunct   Цитата(Stas633 @ Jul 10 2006, 09:45) Инте...   Feb 11 2010, 23:02
- - upc2   Можно с использованием флагов.В прерывании устанав...   Jul 10 2006, 04:32
- - Kovrov   Такой вариант обхода дребезга - пользуюсь когда мн...   Jul 10 2006, 06:17
- - rezident   При использовании ADC и "аналоговой" кла...   Jul 10 2006, 09:27
|- - Stas633   Цитата(rezident @ Jul 10 2006, 13:27) При...   Jul 10 2006, 10:40
- - Kovrov   по профилю работы часто приходится общаться с проф...   Jul 10 2006, 11:36
|- - Stas633   Цитата(Kovrov @ Jul 10 2006, 15:36) .... ...   Jul 10 2006, 11:52
- - BVU   Программных алгоритмов антидребезга может быть дос...   Jul 10 2006, 13:01
- - fantasy   Внесу свою реплику в дискуссию... Код#define _fDr...   Jul 10 2006, 15:19
- - Labinskiy Nikolay   Всем спасибо за ответы - пойду экспериментировтаь   Jul 10 2006, 16:36
- - dio   Понимаю что вопрос тупой, но всё таки ... Упростил...   Jul 19 2006, 17:58
|- - rezident   Цитата(smk @ Feb 10 2010, 22:48) Иначе ск...   Feb 11 2010, 15:53
- - Oleg_IT   Как-то уже приводил здесь этот код. Кодunsigned l...   Feb 11 2010, 09:23
- - Lexdaw   А я по опросу входа (кнопки) сдвигаю регистр влево...   Feb 11 2010, 13:24
|- - Corvus   А простой инкремент/декремент чем не угодил?   Feb 11 2010, 13:47
|- - ReAl   Цитата(Corvus @ Feb 11 2010, 15:47) А про...   Feb 12 2010, 05:56
|- - Corvus   Цитата(ReAl @ Feb 12 2010, 08:56) Если Вы...   Feb 12 2010, 09:09
- - smk   Нет, просто события внутри микроконтроллера опереж...   Feb 11 2010, 17:08
|- - sonycman   Цитата(smk @ Feb 11 2010, 21:08) Нет, про...   Feb 11 2010, 17:17
|- - rezident   Цитата(smk @ Feb 11 2010, 22:08) Нет, про...   Feb 11 2010, 17:25
- - Oleg_IT   Товарищ смешивает две задачи, устранения дребезга ...   Feb 11 2010, 19:27
|- - rezident   Цитата(Oleg_IT @ Feb 12 2010, 00:27) Това...   Feb 11 2010, 21:31
- - smk   Цитатая лично на точно таких же принципах о чем то...   Feb 12 2010, 06:58
|- - muravei   Цитата(smk @ Feb 12 2010, 09:58) в следст...   Feb 12 2010, 08:18
|- - rezident   Цитата(smk @ Feb 12 2010, 11:58) Действие...   Feb 12 2010, 14:26
- - smk   КодЧтобы так сильно не рисковать стоит проверять ...   Feb 12 2010, 09:30
- - andr_doy   давно и с большим успехом пользую следущий код //....   Feb 12 2010, 09:50
- - sonycman   Цитата(ReAl @ Feb 12 2010, 09:56) Да ещё ...   Feb 12 2010, 13:42


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 14:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01411 секунд с 7
ELECTRONIX ©2004-2016