roboforum.ru

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

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

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

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

Сообщение Ruslan » 05 мар 2009, 00:32

Понял. Я просто в AVR-студио работаю, пойду CVAVR скачаю.
Аватара пользователя
Ruslan
 
Сообщения: 603
Зарегистрирован: 03 июн 2007, 22:32
Откуда: Москва
ФИО: Руслан

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

Сообщение avr123.nm.ru » 05 мар 2009, 00:36

RiO писал(а):пойду CVAVR скачаю.

C этого начинать надо ! И еще ICC скачайте - http://avr123.nm.ru/04.htm
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение Ruslan » 05 мар 2009, 01:03

ОК с прерыванием вроде разобрался. PCICR включает прерывания PCIE0-PCIE2 а те обрабатывают ножки согласно маскам в PCMSK.

Теперь подскажите пожалуйста, насколько серьезной проблемой являются ложные срабатывания (дребезг) и есть ли простые решения в случае с одинарным энкодером.
Аватара пользователя
Ruslan
 
Сообщения: 603
Зарегистрирован: 03 июн 2007, 22:32
Откуда: Москва
ФИО: Руслан

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

Сообщение =DeaD= » 05 мар 2009, 09:22

Простые решения пожалуй такие:
1. RC-цепь на выход датчика;
2. Замер времени между срабатываниями, если нереальное - отсекаем;

Однако это не спасает от остановки в промежуточном положении.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение Ruslan » 05 мар 2009, 17:23

Наверно это простой вопрос, но всё же, как сделать этот RC фильтр (с номиналами деталей)?
Аватара пользователя
Ruslan
 
Сообщения: 603
Зарегистрирован: 03 июн 2007, 22:32
Откуда: Москва
ФИО: Руслан

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

Сообщение avr123.nm.ru » 05 мар 2009, 17:35

RiO писал(а):как сделать этот RC фильтр (с номиналами деталей)?

Вот так - "Фильтрация сигналов, усиление и масштабирование сигналов" - http://avr123.nm.ru/z09b.htm

Ну и запомнить что: кОм * нФ получаются микроСекунды
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение Ruslan » 05 мар 2009, 19:08

avr123, Спасибо за быстрый ответ.
Если бы к Вашему курсу было удобное оглавление - совсем было бы замечательно. А так приходится здесь задавать много вопросов.

А под какую частоту собственно подбирать компоненты? У меня скорость диска энкодера будет переменная.
Аватара пользователя
Ruslan
 
Сообщения: 603
Зарегистрирован: 03 июн 2007, 22:32
Откуда: Москва
ФИО: Руслан

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

Сообщение avr123.nm.ru » 05 мар 2009, 21:10

RiO писал(а):avr123, Спасибо за быстрый ответ.
Если бы к Вашему курсу было удобное оглавление - совсем было бы замечательно.

А оно и есть на заглавной странице курса, а задачи озаглавлены и кратко описаны на стр. 6 Задачи курса.

Добавлено спустя 35 секунд:
RiO писал(а):А так приходится здесь задавать много вопросов.

Форум как раз для вопросов.

Добавлено спустя 2 минуты 31 секунду:
RiO писал(а):А под какую частоту собственно подбирать компоненты? У меня скорость диска энкодера будет переменная.

ОЧЕВИДНО под максимальную, если по произведению R*C то наверно на 0.15-0.2 от минимального периода.

А на низкой частоте можно програмные переменные паузы защиты сделать на прерываниях.

Но у меня и без извратов этих хорошо работало на актуаторе автомобильном от замков дверей с мышином энкодером.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение almazkazan » 10 мар 2009, 19:14

avr123.nm.ru писал(а):
=DeaD= писал(а):а прерывание по изменению входа обычное INT чем не устроило?
Дак через ж интересней ведь !


а если допустим ножки INT заняты, можно ли навесить прерывание на ножку которая НЕ INT, то есть на обычную PD2 например?
“Но мы же еще ​живы, чувак, это же круто…”
Аватара пользователя
almazkazan
 
Сообщения: 97
Зарегистрирован: 04 окт 2008, 17:47
Откуда: казань, респ. Татарстан, россия
прог. языки: c++, c#, asm

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

Сообщение boez » 11 мар 2009, 00:57

У некоторых (обычно более современных) МК можно, у некоторых - нет. Это я про AVR. Конкретно смотреть в даташите. И читать ЭТУ тему - на первой странице про прерывания на произвольных ногах уже писали...
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

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

Сообщение avr123.nm.ru » 11 мар 2009, 02:29

almazkazan писал(а):а если допустим ножки INT заняты, можно ли навесить прерывание на ножку которая НЕ INT, то есть на обычную PD2 например?


Вам нужно использовать ATmega48 -88 -168 или ATmega162
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение Duhas » 11 мар 2009, 06:19

можно в принципе на любой ноге, только тогда придется их постоянно сканировать...
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

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

Сообщение avr123.nm.ru » 11 мар 2009, 13:30

А можно внешнюю логику прицепить 74hc00 hc02 для генерации 1 прерывани при любом изменении на выходе энкодеров, затем анализировать что на выходах.

Пример есть в апноуте AN696 и он есть в примерах PROTEUS.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение EdGull » 11 мар 2009, 15:59

с таким же успехом можно и диодами завести на прерывние
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

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

Сообщение arisov77 » 01 апр 2009, 11:46

Вот здесь http://electronix.ru/forum/index.php?s= ... t&p=565035 я выкладывал как делаю только с одним прерыванием настроенным на любое изменение уровня. Исходник - на асме, но он прост и под Си легко переписать.
Вложения
INT_Encoder.txt
(2.15 КиБ) Скачиваний: 238
Encoder.GIF
arisov77
 
Сообщения: 3
Зарегистрирован: 01 апр 2009, 11:38
Откуда: Ульяновск

Пред.След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 37