Страница 12 из 15
Re: Обработка нажатия кнопки в AVR...
Добавлено: Вс апр 27, 2014 05:38:13
КРАМ
HHIMERA писал(а):delay() к чему относится???
А если МК имеет хардварную обработку кнопок???
Можешь назвать МК с хардварной обработкой кнопок?
Или опять забыл название темы?
А может слово "универсальный" выпало из твоей памяти?
Ранний склероз?

Стас, чем больше ты пытаешься троллить по обсуждаемому вопросу, тем глупее выглядишь...
HHIMERA писал(а):
И в догонку...
КРАМ писал(а):Из серии printf ...
А что... printf так тяжек для нежного и ранимого мозга???
А если он хорошо ложится под задачу... почему бы и нет??? Или костность мышления не позволяет???
Косность мышления состоит в том, чтобы при выборе дисплея выяснять поддерживает его библиотека или нет...
Телега все же находится позади лошади...
Re: Обработка нажатия кнопки в AVR...
Добавлено: Вс апр 27, 2014 10:10:57
HHIMERA
КРАМ писал(а):
Можешь назвать МК с хардварной обработкой кнопок?
Cortex M0 от Nuvoton... хотя к данной теме это и не относится...
слово "универсальный"
"Заставь дурака богу молиться..."(С)
Вот так и ты... со своим "универсальный"... как "с писаной торбой"...

Нечего сказать по теме, так лучше промолчи...
Телега все же находится позади лошади...
Ох и тяжёлая она для тебя!!!
Re: Обработка нажатия кнопки в AVR...
Добавлено: Вс апр 27, 2014 10:52:24
КРАМ
HHIMERA писал(а):КРАМ писал(а):
Можешь назвать МК с хардварной обработкой кнопок?
Cortex M0 от Nuvoton... хотя к данной теме это и не относится...
Если к данной теме не относится, то к чему ты об этом?
Собственно все уже сказано тем, что ТС ни хрена не понял из приведенного ARV примера.
Тогда ЗАЧЕМ? Чтобы еще раз выпендриться?
Или заставить "подумать"?
Над чем?
Прежде чем учить, нужно самому научиться учить...
HHIMERA писал(а):
Нечего сказать по теме, так лучше промолчи...
Стас, тебя уже банили за твои "чего сказать по теме"...
Видимо твой ЧСВ исключает такой "корм"...
Re: Обработка нажатия кнопки в AVR...
Добавлено: Вс апр 27, 2014 11:43:23
Аlex
Я вот даже и не знаю, то-ли чистить тему, то-ли совсем её сносить, т.к. чистить придётся полдня...

Re: Обработка нажатия кнопки в AVR...
Добавлено: Вс апр 27, 2014 18:48:31
shads
Господин модератор!
Если надумаете чистить, то просьба и тут сразу почистить
http://radiokot.ru/forum/viewtopic.php? ... 0#p1382330
А то местный персонаж и там постарался наславу...
Re: Обработка нажатия кнопки в AVR...
Добавлено: Пн апр 28, 2014 09:18:37
sanyo.95
Рискнул сделать еще одну попытку, посмотрите пожалуйста. Просьба: если что-то не так то ткните носом где именно. Я всего лишь пытаюсь научиться обрабатывать кнопки, но также хочется все делать правильно вот по этому и обращаюсь к вам.
Код: Выделить всё
#include <mega8.h>
#include <delay.h>
unsigned char a=0; //переменной "а" присвоить "0"
void main(void)
{
PORTB=0x00; //PORTB-выход(0)
DDRB=0x01;
PORTC=0x01; //PORTC-вход(1)
DDRC=0x00;
while(1)
{
if(PINC.0==0) //если кнопка нажата
{
delay_ms(50); // ждем 50мс
if(PINC.0==0) // проверяем еще раз, если нажата
{
a++; // инкриминируем "а"
}
while(PINC.0==0) // ждем отпускания кнопки
{
}
if(a==2) // если "а" равно 2(кнопка нажата 2 раза)
{
PORTB.0=1; // "1" на порт Б
a=0; // обнуляем "а"
}
}
}
}
Re: Обработка нажатия кнопки в AVR...
Добавлено: Пн апр 28, 2014 10:27:31
Аlex
Событие у Вас происходит после отжатия кнопки, по этому и делайте инкремент после ожидания отжатия, сразу с проверкой.
Что то типа такого :
Код: Выделить всё
if(PINC.0==0) //если кнопка нажата
{
delay_ms(50); // ждем 50мс
while(PINC.0==0) continue; // ждем отпускания кнопки
if(++a>=2) // если "а" равно 2(кнопка нажата 2 раза)
{
PORTB.0=1; // "1" на порт Б
a=0; // обнуляем "а"
}
}
Re: Обработка нажатия кнопки в AVR...
Добавлено: Пн апр 28, 2014 12:03:29
sanyo.95
Большое спасибо. Исправил.
Re: Обработка нажатия кнопки в AVR...
Добавлено: Пн апр 28, 2014 12:12:47
ARV
ну почему не слушаете советов?! все равно ведь используете метод опроса - почему тогда не поступите, как рекомендовал я, т.е. выделить работу с опросом в отдельную функцию и использовать ее, где нужно?!
Re: Обработка нажатия кнопки в AVR...
Добавлено: Пн апр 28, 2014 12:16:18
Alexeyslav
Зачем все так сложно? Неужели это все проще анализа состояния кнопки равными интервалами?
хочется все делать правильно
Понятие правильно - субъективное. Правильно все то что работает, а правильней - то что при этом просто и красиво выглядит.
Код: Выделить всё
while(1)
{
delay_ms(10); // Это самый простой способ соблюсти условие для нижней строчки
butt = PINC.0 // Главное здесь именно эта строчка, она должна выполнятся максимум один раз в 10мс, если соблюсти это условие - дребезг будет не страшен.
if(butt <> last)
{
if(butt ==0) {момент когда кнопка нажата}
if(butt ==1) {момент когда кнопка отпущена}
}
last = butt
}
Re: Обработка нажатия кнопки в AVR...
Добавлено: Пн апр 28, 2014 12:54:26
FreshMan
ARV писал(а):ну почему не слушаете советов?!
видать, от изобилия советов, человек просто-напростаки запутался и незнает чьим советам следовать

Re: Обработка нажатия кнопки в AVR...
Добавлено: Пн апр 28, 2014 15:02:12
sanyo.95
sanyo.95 писал(а):ну почему не слушаете советов?!
Советы я "слушаю" очень внимательно, перечитываю по 100500 раз, но мне непонятно как это сделать из за моего уровня знаний в данной области, так что извините. Вот подучусь немного еще, начну ПОНИМАТЬ Ваши советы и вот тогда...
Re: Обработка нажатия кнопки в AVR...
Добавлено: Пн апр 28, 2014 17:41:48
КРАМ
sanyo.95 писал(а):
Советы я "слушаю" очень внимательно, перечитываю по 100500 раз, но мне непонятно как это сделать
Рискну привести вариант с системным таймером в виде диаграммы работы:

Re: Обработка нажатия кнопки в AVR...
Добавлено: Пн апр 28, 2014 21:16:41
sanyo.95
КРАМ писал(а):Рискну привести вариант с системным таймером в виде диаграммы работы:
Спасибо большое, но все же остановлюсь пока на том что получилось.
Re: Обработка нажатия кнопки в AVR...
Добавлено: Вт апр 29, 2014 11:38:29
FreshMan
КРАМ писал(а):sanyo.95 писал(а):
Советы я "слушаю" очень внимательно, перечитываю по 100500 раз, но мне непонятно как это сделать
Рискну привести вариант с системным таймером в виде диаграммы работы:

тоесть....., вы хотите сказать что использование системного таймера при обработке кнопки является не целесообразным ?
Re: Обработка нажатия кнопки в AVR...
Добавлено: Вт апр 29, 2014 13:36:26
shads
FreshMan писал(а):тоесть....., вы хотите сказать что использование системного таймера при обработке кнопки является не целесообразным ?
КРАМ как раз и предлагает сделать на таймере .....
Что кстати и является наиболее универсальным решением...
Re: Обработка нажатия кнопки в AVR...
Добавлено: Вт апр 29, 2014 13:59:57
Alexeyslav
Что я в самом начале и предлагал... только сам таймер в виду начинающего заменить на бесконечный цикл специально замедленный на 10мс/итерация, это и правда простое решение если контроллеру кроме обработки кнопки больше ничего делать не нужно.
Re: Обработка нажатия кнопки в AVR...
Добавлено: Ср апр 30, 2014 09:19:57
Аlex
sanyo.95 писал(а):становлюсь пока на том что получилось.
Ну и напрасно, потом начнутся проблемы, связанные с выполнением отдельных кусков кода.
Сейчас у Вас пока нажата кнопка, программа тупо зациклена, не выполняя ничего, а могла бы выполнять что-нибудь полезное. Нужно стараться распараллеливать процессы, тогда не возникнет никаких трудностей.
Re: Обработка нажатия кнопки в AVR...
Добавлено: Ср апр 30, 2014 12:49:23
sanyo.95
Вы имеете в виду прерывания от таймера. Т.е. поместить опрос кнопки в обработчик прерываний? Или как?
Re: Обработка нажатия кнопки в AVR...
Добавлено: Чт май 01, 2014 17:34:11
shads
sanyo.95 писал(а):Вы имеете в виду прерывания от таймера. Т.е. поместить опрос кнопки в обработчик прерываний? Или как?
Именно так...
Вот примерчик: