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

 
 
 
Reply to this topicStart new topic
> ?Реакция на продолжительное нажатие кнопки, реагирует на частые кратковременные...
Markfly
сообщение Jul 10 2009, 05:19
Сообщение #1





Группа: Участник
Сообщений: 10
Регистрация: 6-07-09
Пользователь №: 50 955



Прошу помощи. Написал такой текст. По сценарию, при удержании кнопки в течении времени декременирования "Count",по истечении этого времени, если кнопка еще нажата, загорается СИД.При отпускании кнопки, сид гаснет. Соответственно на короткие нажатия СИД не должен реагировать. НО он реагирует. Произвожу короткие последовательние нажатия и он начинает помаргивать... Подскажите, пожалуйста, в чем ошибка, чего я не учел?

CODE
int main()

{
ConfigureButton();

//Main Loop
while(1)
{
if((AT91C_BASE_PIOA->PIO_PDSR & 0x00100000) == 0)//Если кнопка нажата.

{
long int Count = Delay_3sec;//Запись в Count числа
while (((AT91C_BASE_PIOA->PIO_PDSR & 0x00100000) == 0)&&(Count > 0))//Если кнопка нажата и Count не пуст.
{
Count = Count -1; //Декременируем Count.
}
AT91C_BASE_PIOA->PIO_CODR = 0x00000001; //0 on PA0, LED on/ Count пуст и кнопка еще ножата, тогда зажигаем LED.
}

else //Если кнопка не нажималась (или ее отпустили).
{
AT91C_BASE_PIOA->PIO_SODR = 0x00000001; //1 on PA0, LED off //Гасим LED.
}

}


}
Go to the top of the page
 
+Quote Post
artem79
сообщение Jul 10 2009, 05:30
Сообщение #2


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

Группа: Свой
Сообщений: 187
Регистрация: 4-01-07
Из: Казань
Пользователь №: 24 091



Так и будет в вашем случае СИД зажгется в любом случае при нажатии кнопки.
Причина редактирования: Ненужное цитирование.
Go to the top of the page
 
+Quote Post
Markfly
сообщение Jul 10 2009, 05:39
Сообщение #3





Группа: Участник
Сообщений: 10
Регистрация: 6-07-09
Пользователь №: 50 955



Не понимаю, почему. Если не слишком часто производить кратковременные нажатия, СИД не загорается...
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jul 10 2009, 05:40
Сообщение #4


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Вот на что люди расходуют мощность АРМов - на декремент каунта в течение 3 секунд...
Охренеть-не встать!


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
shasik
сообщение Jul 10 2009, 05:54
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188



Цитата(Markfly @ Jul 10 2009, 08:19) *
CODE

long int Count = Delay_3sec;//Запись в Count числа
while (((AT91C_BASE_PIOA->PIO_PDSR & 0x00100000) == 0)&&(Count > 0))//Если кнопка нажата и Count не пуст.
{
Count = Count -1; //Декременируем Count.
}
AT91C_BASE_PIOA->PIO_CODR = 0x00000001; // ЗДЕСЬ БЕДА
}
}


Беда в том, что включение СИДа у Вас происходит в любом случае, независимо от того почему закончился цикл - то ли кнопку отпустили, то ли время уже прошло. Вам не хватает if для проверки причины завершения цикла.
Go to the top of the page
 
+Quote Post
Markfly
сообщение Jul 10 2009, 06:05
Сообщение #6





Группа: Участник
Сообщений: 10
Регистрация: 6-07-09
Пользователь №: 50 955



Цитата(MrYuran @ Jul 10 2009, 09:40) *
Вот на что люди расходуют мощность АРМов - на декремент каунта в течение 3 секунд...
Охренеть-не встать!

Извините, но на моем этапе это не важно...







shasik, спасибо большое, все заработало!!!

Сообщение отредактировал Markfly - Jul 10 2009, 06:04
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 10 2009, 06:11
Сообщение #7


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



CODE

long int Count = Delay_3sec;//Запись в Count числа
while (((AT91C_BASE_PIOA->PIO_PDSR & 0x00100000) == 0)&&(Count > 0))//Если кнопка нажата и Count не пуст.
{
Count = Count -1; //Декременируем Count.
}
if (!Count) AT91C_BASE_PIOA->PIO_CODR = 0x00000001; //0 on PA0, LED on/ Count пуст и кнопка еще ножата, тогда зажигаем LED.
}


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

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

 


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


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