Alfamayonez
Пункты: 3702
Регистрация: 04.10.2009
Пол: Мужчина
Пробовал кто обрабатывать энкодер в linux?
Основа драйвера я так понимаю просто читать значения на пинах, к которым будет подключен энкодер? ioread32()? :)
sasamy
Пункты: 83542
Регистрация: 14.08.2009
Такой вопрос - о каком енкодере речь ?
Alfamayonez
Пункты: 3702
Регистрация: 04.10.2009
Пол: Мужчина
:)
Пока просто от мышки :).
Alfamayonez
Пункты: 3702
Регистрация: 04.10.2009
Пол: Мужчина
Хех :) что-получилось :) gpio_get_value помог :).
Цитата
hexdump /dev/enc0
0000000 0001 0000 0001 0000 0001 0000 0001 0000
*
03068d0 0001 0000 0000 0000 0000 0000 0000 0000
03068e0 0000 0000 0000 0000 0000 0000 0000 0000
Неужели я правильно все сделал? :)
---upd
Похоже что нет.
Alfamayonez
Пункты: 3702
Регистрация: 04.10.2009
Пол: Мужчина
Так вроде правильно всетаки? Господа матерые, подскажите зеленому :)?
По-сути вот, что у меня вышло.
Цитата
Устанавливаем положение когда ни один светодиод не светит. Затем вращаем по часовой стрелке, очень медленно, сначало зажигается светодиод на выводе B затем на половине одного щелчка зажигается светодиод на выводе A, затем щелчек оба светятся еще пол щелчка перестает светится B и затем оба гаснут. Ну и так в обратном направлении получаем цикл наоборот - оба светятся, один гаснет затем другой. Получается что при вращении по часовой первым зажигается B а против зажигается A. как-то так.
Alfamayonez
Пункты: 3702
Регистрация: 04.10.2009
Пол: Мужчина
Посадил энкодер на прерывание по пину, шумит больно, хотя pullup используется. В случае моего энкодера от мышки, этих шумов не избежать?
--UPD--
Интересное выяснил:), оказывается нельзя сделать IRQ_TYPE_EDGE_FALLING или RISING на пин, только BOTH.
Почему так сделано никто не знает?
Lampus
Пункты: 3552
Регистрация: 26.04.2011
Alfamayonez
Пункты: 3702
Регистрация: 04.10.2009
Пол: Мужчина
2Lampus, О! про сайт знаю, а этого не видал там. Класс! Спасибо большое!
UPD---
Ну и мутный же код драйвера там для енкодера.
Не понимаю смысла конструкции двойного отрицания (!!). Зачем? Чтобы вызвать задержку?
bzzz
Пункты: 1170
Регистрация: 01.03.2011
Цитата
Не понимаю смысла конструкции двойного отрицания (!!). Зачем? Чтобы вызвать задержку?
чтобы скаляр привести к логическому типу (0/1). без задержки на условном переходе.
sasamy
Пункты: 83542
Регистрация: 14.08.2009
Цитата
Не понимаю смысла конструкции двойного отрицания (!!). Зачем? Чтобы вызвать задержку?
Это называется - чтобы никто не догадался :) считаю такие конструкции только запутывают код, тем более что
Цитата
/* GPIO INPUT: return zero or nonzero */
int gpio_get_value(unsigned gpio);
/* GPIO OUTPUT */
void gpio_set_value(unsigned gpio, int value);
The values are boolean, zero for low, nonzero for high.
Скорей всего (!!) там применили для того чтобы nonzero однозначно привести к 1 для дальнейших арифметических операций.