roboforum.ru

Технический форум по робототехнике.

считывание энкодеров через прерывание - нужен пример на Си

Re: считывание энкодеров через прерывание - нужен пример на Си

avr123.nm.ru » 01 апр 2009, 16:23

EdGull писал(а):с таким же успехом можно и диодами завести на прерывние

Расскажи как. А лучше покажи.

Добавлено спустя 30 минут 17 секунд:
arisov77 писал(а):Вот здесь http://electronix.ru/forum/index.php?s= ... t&p=565035 я выкладывал как делаю только с одним прерыванием настроенным на любое изменение уровня. Исходник - на асме.


Для тех кто не зареген на том форуме - выкладуваю исходник для квадратурного энкодера здесь.

Добавлено спустя 1 минуту 13 секунд:
А Апноуте Microcip AN696 тоже аппаратная обработка энкодеров на внешней логике.
Вложения
INT_Encoder.rar
(3 КиБ) Скачиваний: 50

Re: считывание энкодеров через прерывание - нужен пример на Си

arisov77 » 02 апр 2009, 00:14

Только в AN696 надо использовать два таймера, что не всегда удобно.
А прошивку, я выложил в предыдущем посту вместе со схемой.
Вспомнил, что сейчас у меня в сервоконтроллере http://www.cnczone.com/forums/showpost. ... stcount=28 ( http://www.cnczone.com/forums/showthrea ... post574303) этот "кусок" немного изменился - убрал лишний регистр r16.
Вот подкоректированая версия.
Вложения
INT_Encoder.txt
(4.73 КиБ) Скачиваний: 295

Re: считывание энкодеров через прерывание - нужен пример на Си

Vooon » 02 апр 2009, 00:42

Хм, у меня ощущение, что я уже видел эту схему в журнале «радио».

Re: считывание энкодеров через прерывание - нужен пример на Си

arisov77 » 02 апр 2009, 09:58

Я бы очень хотел посмотреть на аналогичную схему, я на нескольких форумах выкладывал свой вариант и просил показать аналогичное, т.к. считаю, что это решение очень простое и имеет несколько преимуществ перед подобными. И очень странно, что нигде это широко не распространено (такой схемы, честное слово, нигде не видел, сам догадался объединить стандартные решения, правда дошёл до этого экспериментальным путём).
Преимущества, на мой взгляд, заключаются в следующем - на входах для уменьшения дребезга триггеры Шмита (DD1.1 и DD1.2) с возможностью регулирования «ширины окна» и временем фильтрации шумов (RC-цепочками), сигнал прерывания возникает только во время «правильных» переходов (т.к. переходов с энкодера с 00 на 11, с 01 на 10 или наоборот не может быть, то за счёт применения элемента DD1.3 «Иск. ИЛИ» обеспечивается дополнительная защита от «ложных» переходов и повышается быстродействие, т.к. МК лишний раз «не отвлекается» и не надо в п/программе проводить это сравнение) и всё это реализуется на одном корпусе К561ЛП2, да ещё 1 элемент остаётся (в AN696 – используются 2 внешних ИМС). И как уже писал – надо только один вход прерывания, настроенного на любое изменение уровня.
Я раньше на некоторых форумах, «выкидывал» эту схемку для обсуждения возможных нюансов, т.к. не проверял её. А сейчас она у меня проверенна, этот узел «без проблем» работает у меня в пока экспериментальном варианте сервоконтроллера.
Если есть, что то похожее, то плз ссылочку.

Re: считывание энкодеров через прерывание - нужен пример на Си

Vooon » 02 апр 2009, 18:52

Попробую найти, на сколько помню там четверть страницы все занимало...
Но я уже с год не покупаю его, наверное 2007-ого года журнал был.


Rambler\'s Top100 Mail.ru counter