Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Леонид Иванович, а попробуйте этот код (вернее даже идеологию):
Отправлено
кодер
17 сентября 2008 г. 16:25
В ответ на:
По совету Oldring добавил в обработку энкодера гистерезис. Теперь работает вообще как зверь :)))
отправлено Леонид Иванович 16 сентября 2008 г. 23:12
static unsigned char kBuff;
//обработка энкодера, самостоятельно крутится в прерывании ~500Гц
//iKeyL- выход1 энкодера, нормально=1
//iKeyR- выход2 энкодера, нормально=1
//char shattl- куда врашаемся, после использования/обработки в верхнем меню- обнулить
if((!iKeyL&&(kBuff==1))||(!iKeyR&&(kBuff==2)))
{
if(kBuff==1)shattl=-1;
if(kBuff==2)shattl=1;
kBuff=128;
}
if((!iKeyL||!iKeyR)&&kBuff==0)
{
if(!iKeyR){kBuff=1;}
if(!iKeyL){kBuff=2;}
}
if(iKeyL&&iKeyR)kBuff=0;
return;
Составить ответ
|
Вернуться на конференцию
Ответы
Хотя и перый вариант должен был у Вас норм работать. У меня исходное состоя...{+}
-
кодер
(17.09.2008 18:28:1
89.104.120.23
, 203 байт)
В точках фиксации и у меня единицы. Какое конкретно состояние - это ни на что не влияет. Только смещает точку переключения.
-
Леонид Иванович
(17.09.2008 20:06:8
87.252.227.56
,
пустое
)
Работать-то оно работает, но последовательности состояний обрабатывает неправильно. Если вал энкодера качать туда-сюда на одном месте, постоянно происходит или инкремент, или декремент в зависимости от угла, на котором стоим.
-
Леонид Иванович
(17.09.2008 16:43:58
87.252.227.56
,
пустое
)
Так вроде так и должно быть... Если при этом "качании" ошибка не ...{+}
-
кодер
(17.09.2008 16:56:0
89.104.120.23
, 183 байт)
А, понял, это у Вас энкодер неправильный ;)
-
кодер
(17.09.2008 17:03:40
89.104.120.23
, 153 байт)
Ошибка накапливается. Другой вариант сброса kBuff не поможет, чтобы устранить эффект, надо помнить историю энкодера.
-
Леонид Иванович
(17.09.2008 18:03:23
87.252.227.56
,
пустое
)
Так и есть, она в переменной kBuff (+)
-
кодер
(17.09.2008 18:15:20
89.104.120.23
, 769 байт)
Хотя и перый вариант должен был у Вас норм работать.
-
кодер
(17.09.2008 18:32:53
89.104.120.23
, 194 байт)
Помнить нужно более длинную историю, иначе ничего не выйдет.
-
Леонид Иванович
(17.09.2008 20:04:57
87.252.227.56
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 34:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru