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

 
 
> Энкодер и как с ним работать.
TamTam
сообщение Jun 8 2006, 03:59
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254



Поделитесь грамотным кодом для обработки энкодера.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Sam_
сообщение Jun 8 2006, 12:12
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 278
Регистрация: 18-01-05
Из: Санкт-Петербург
Пользователь №: 2 031



Цитата
если нужно определять направление движения то обрабатывать нужно два выхода. Если не нужно определять направление движения то достаточно одного вывода


Выкидывая второй сигнал вы уменьшете разрешающую способность энкодера в 2 раза!


Код
prev_pind2 = pind2;
prev_pind3 = pind3;

pind2 = ( ((PIND.2) & (1<<PIND.2)) == 0 );
pind3 = ( ((PIND.3) & (1<<PIND.3)) == 0 );

any_edge_d3 = ( prev_pind3 ^ pind3 )

any_edge_d3 выделяет все фронты одного из сигналов.

Код

if(!pind2 & any_edge_d3)
              count = (pind3) ? count + 1 : count - 1;

Это мы получили половину разрядности

Теперь остальное
Код
full_code = count << 1 | ( (pind2 ^ pind3) == 0);


В принципе у psw таже задача решена табличным способом.

Ещё хотелось бы знать какова разрешающая способность вашего датчика.
Go to the top of the page
 
+Quote Post



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

 


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


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