Подскажите пожалуйста, может кто сталкивался, нужно к контроллеру прикрутить 4 обычных механических энкодеров. Может что посоветуете с алгоритмом, с 2 мя энкодерами всё понятно, а с 4 мя что то на ум нечего хорошего не приходит. Думаю если их повесить на один порт и проверять его состояние по прерыванию таймера. Кто знает, если не сложно.
4 энкодера и ATMega32
Сообщений 1 страница 6 из 6
Поделиться22018-02-15 07:32:27
Твой вариант не плох, опрашиваем целиком порт и анализируем состояние битов.
МИНУСЫ: постоянное опрашивание займёт процессорное время. Код в таком случае линейным не будет а будет векторным, т.е. на все 4 энкодера одна точка входа в процедуру. Если осилишь написать вектор - тогда всё получится.
***
Или другой вариант - IntX
Здесь только плюсы. Проц не напрягается и код проще.
Вот только их 4 штуки нужно...
***
Вариант с PcintX не рассматривал???
Поделиться32018-02-16 01:03:31
С IntX то всё ясно, только к сожалению в ATMega32 их всего 2. С PcintX не думал, так как не работал ещё с ними. Надо будет покумекать.
Поделиться42018-02-16 07:03:45
Дык, чо, думаешь я не знаю, сколько IntX в 32
***
C PcInt не всё так просто, как с простыми интами... Тебе придётся программно определять нарастание или падение фронтов и от какой ноги это прилетело и ещё много там нюансов. Короче - мне не понравилось с ними работать.
А варик объединить по ИЛИ ноги энкодеров и повесить на любой IntX и уже в векторе смотреть, что там и как не рассматривал? Я ща чёт прикинул в голове - должно работать... но нуно в протеусе тестамуть для верности.
Короче - думай!
Поделиться52018-02-17 19:09:40
Ну если одной рукой управлять, то можно и через диоды прерывание вызывать и в прерывании сразу определять какой порт изменён.
Поделиться62018-02-17 23:08:10
Могу предложить более изощрённую систему на "интах"
С каждого тактового через делитель 5В/4 заводим на вход АЦП и ставим его на FreeRunning с минимальным прескалером и зырим шо там у нас с АЦП. 8-ми бит вполне, тк 256/4=64 и есть некий лаг в запасе. Отселя мы уже знаем какой енкодер крутанули и уже его и идём обрабатывать. Идея весьма витиевата, но если бы мне нужно было так сделать - сделал бы запросто. Кстати, её в протеусе не сложно модельнуть.... 