Отговори на тема  [ 21 мнения ]  Отиди на страница Предишна  1, 2
Притреперване на контактите на бутон 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 23, 2005 12:02 pm
Мнения: 3070
Местоположение: София
Мнение Re: Притреперване на контактите на бутон
Съгласен. Щом се стигне до пестене на ток критериите са други.


Пет Окт 21, 2016 11:17 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Яну 20, 2009 11:54 pm
Мнения: 11338
Местоположение: "Занзибар"
Мнение Re: Как бае бай Бонго:
pldimitroff написа:
......По тази логика, възможно ли е .....

Всичко е възможно :) Зависи колко ти е разбрицан бутонът и какво време за реакция искаш. Стойностите са примерни, но колкото повече - повече.
По принцип човек не може да натисне бутон 10 пъти в секунда, а понякога време за реакция над 1с е дори полезна.
Колкото до икономията на тоци - и това е въпрос на въображение. Нищо не пречи проца да се буди от всяко натискане и след това да започне да умува. Но тук вече акъл не давам.


Пет Окт 21, 2016 2:24 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Нед Окт 19, 2008 7:26 pm
Мнения: 672
Мнение Re: Притреперване на контактите на бутон
Ползвам това много често при случай на ръчно натискане на бутон.
Някъде мисля че беше 0,8 секунди сигурна връзка без искрене или други.
Код:
/*****************************************************

Chip type           : ATmega8L
Program type        : Application
Clock frequency     : 8,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256
*****************************************************/
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
alarm1=1;
}
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0xE9;
// Place your code here
if(alarm1){
        conter2++;
        if(PIND.2){
                   conter1++;
                     }
        else conter1=0,conter2=0;
        if((conter2==conter1)&&(conter1>=200)){
                                                     button=1; // Бутона е реално натиснат и задържан 0,8 секунди
                                                       alarm1=0;
                                                        };
            }

    }

void mine(void) {

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Any change
// INT1: On
// INT1 Mode: Any change
GICR|=0xC0;
MCUCR=0x05;
GIFR=0xC0;


// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 7,813 kHz
TCCR0=0x05;
TCNT0=0xE9;




Правя го така, когато ми излезе външно прекъсване от ниво, променлива ми става 1.
Проверявам пина за 0 ниво във времеви таимер определени пъти и ако е сигурен сигнала за около 0,8сек.
вече съм сигурен за ръчно натиснат бутон.

_________________
Вниманиене съмвишист....ИЙ.


Пон Окт 24, 2016 8:04 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юни 07, 2005 6:20 pm
Мнения: 3532
Мнение Re: Притреперване на контактите на бутон
0.8 сек ми се виждат много за реакция. Обикновено двойна проверка с 20мс помеждутък са достатъчен компромис между надеждност и скорост на реакцията. Ако и това не работи - се сменя бутона. Все пак всичко си има граници.


Сря Ное 30, 2016 12:58 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30684
Местоположение: София
Мнение Re: Притреперване на контактите на бутон
20 мс според мен е малко, 100-200 ms интервал за проверка е ОК, имам в превдид за тези 100-200 ms се проверяваняколко пъти. Аз като пиша такива неща са ми на прекъсване, просто вземам таймера ако слиза в 0 го нулирам, така избягвам забавяния от трептенето, ако проверяваш фиксирано през 20 мс след всяко слизане в 0 заради трептене което хванеш увеличаваш константно с 20 мс. Проблеми са не само бутоните а и смущения и др. подобни.


Сря Ное 30, 2016 1:10 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Мар 19, 2009 11:22 am
Мнения: 38
Местоположение: Стара Загора
Мнение Re: Притреперване на контактите на бутон
Здравейте!
Направих го на около 30ms да се проверява бутона и ако три пъти се повтори един и същ резултат (включен/изключен) тогава го приемам за действителен. Получи се и на практика.
Отново МНОГО Ви благодаря!


Чет Дек 01, 2016 12:01 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 21 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни