Перейти к содержанию

Вопросы от начинающих по МК


Рекомендуемые сообщения

2 минуты назад, Alex сказал:

Опрашивать энкодер через внешние прерывания - мазохизм.

сильно с вами не согласен. лучше чем опрашивать его постоянно. появилось прерывание-- программа откликнулась, нет-- занимается другими делами

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов
  • Создана
  • Последний ответ

Топ авторов темы

Только что, Дмитрий Мамедиев сказал:

А я хочу

А вы не хотите научиться сначала простым вещам, а потом совершенствовать свои навыки путем усложенения задач? Или вы считаете себя выше этого?

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

10 минут назад, Дмитрий Мамедиев сказал:

сильно с вами не согласен.

Это прерогатива всех начинающих. Годика через 3...5 будете согласны. И даже другим будете утверждать это.
Внешние прерывания созданы далеко не для таких целей.
Прерваться по внешнему прерыванию, затем тупо сидеть и ждать какое-то время для дальнейшего ожидания прерывания - очень глупое решение. Причём, не поддающееся никакой разумной логике.
А втыкать в обработчики прерываний всякие миллисекундные делеи - ещё глупей. Или Вы считаете, в это время контроллер будет свободен и будет заниматься другими делами ? :)

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

3 минуты назад, Дмитрий Мамедиев сказал:

лучше чем опрашивать его постоянно

а чем лучше? Вы думаете контроллер устанет?

Вот делать задержки в прерываниях по 20 ms это точно не правильно

Ссылка на комментарий
Поделиться на другие сайты

23 минуты назад, Дмитрий Мамедиев сказал:

Потом заменю.

На что, интересно знать ?

25 минут назад, Дмитрий Мамедиев сказал:

Мне бы отладить в целом а потом можно совершенствовать

А что не так ? Не работает что-то ?

Ссылка на комментарий
Поделиться на другие сайты

5 часов назад, Дмитрий Мамедиев сказал:

Знаю что задержки никамильфо. Потом заменю. Мне бы отладить в целом а потом можно совершенствовать

Любые механические контакты имеют дребезг. Работа с энкодером через прерывания  приведет к генерации серии прерываний на каждый щелчок. Глупое, никчемное решение. Даже бескомпромиссный алгоритм обработки энкодера по таймеру занимает  доли процента вычислительных ресурсов, ибо опрос ведется один раз примерно в 2...3 мс. Делэй в прерывании очевидно не сможет быть убран, поскольку нет иного способа борьбы с прерываниями кроме интервального чтения. Тогда зачем вообще прерывание по контактам энкодера, если его можно читать по таймеру, выдерживая антидребезговый интервал?

7 часов назад, Дмитрий Мамедиев сказал:

выходит нужно для volt и amper писать отдельно?

Обработчик энкодера вообще не должен ничего инкрементировать/декрементировать. Его задача сгенерировать СОБЫТИЕ и НАПРАВЛЕНИЕ (то есть установить ФЛАГ СОБЫТИЯ и установить/сбросить ФЛАГ НАПРАВЛЕНИЯ). А в отдельной функции основного цикла ПО УКАЗАТЕЛЮ НА ПЕРЕМЕННУЮ (которая подлежит регулировке) произвести действие над самой переменной и сбросить флаг события.

Изменено пользователем my504

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Тогда зачем вообще прерывание по контактам энкодера, если его можно читать по таймеру, выдерживая антидребезговый интервал?


Тут сложно поспорить. Теперь задумался...

Ссылка на комментарий
Поделиться на другие сайты

7 часов назад, IMXO сказал:

энкодеры иногда стоят на двигателях и считают углы/обороты и на выходе имеют частоты до 20-30кГц

Контактные?! В оптических нет дребезга, и нужды в борьбе с ним тоже нет. 

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

Только что, IMXO сказал:

И я вам тоже: 

Цитата

То что вы описали больше похоже на неисправность, энкодеры тем и отличаются что они не имеют дребезга, то что вы сейчас
описываете нормальному энкодеру не свойственно, может у вас с подключением что то не так, земляной провод не контачит
или питающий, а может наводки идут.
В общем такого быть не должно.
Помотрите правильно ли у вас выполнено заземление.

Это по вашей ссылке чуть пониже первых постов. А еще ниже - решение проблемы. 

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

пипец... хоть понял как решили проблему?

Цитата

внешний генератор, с частотой в 4-5 раз превышаюшей максимально возможную частоту импульсов энкодера, несколько D-триггеров и логика.

создан подавитель дребезга в железе!

хочешь могу схемку подобного показать?

Ссылка на комментарий
Поделиться на другие сайты

Только что, IMXO сказал:

хочешь могу схемку подобного показать?

Не стоит. Вы там читали, что он еще и развязку сделал, и питание изменил? То есть просто не стал заморачиваться над выяснением причин и тупо принял все меры, на которые был способен, сразу. Метод стрельбы из пушки по воробьям - наверняка накроет, если снаряд взять побольше.

Хотя наверняка проблема была не в оптическом датчике, а в его питании, линиях связи, режиме фототранзистора или светодиода и т.п. ошибках применения. Оптические схемы на гигагерцах работают и не дребезжат, если грамотно спроектированы, а тут вдруг задребезжали на десятке килогерц? Не смешите мои тапки.

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

35 минут назад, ARV сказал:

Метод стрельбы из пушки по воробьям

В моторных МК, где все заточено на управление э/двигателями,  как стандарт периферии - наличие одного-двух интерфейсов квадратурного энкодера.

ВО ВСЕХ БЕЗ ИСКЛЮЧЕНИЯ таких модулях на входе стоит ЦИФРОВОЙ ФИЛЬТР.

Точно такой же, какой стоит во всех без исключения ПРИЕМНИКАХ UART -  сдвиговый регистр на 2 бита с частотой тактирования  обеспечивающей подавление помех длительностью меньше, чем три периода этой частоты. При наличии всех трех 1 (вход и два выхода) происходит переключение выходного триггера в 1, при наличии всех трех 0 - выходной триггер опрокидывается в 0. Иначе никаких действий с триггером не происходит. Это и есть защита от дребезга.

Вероятно производители МК не в курсе, что оптические и индуктивные датчики не дребезжат...

:rolleyes:

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Встретил пример кода на сравнении последовательности.

Upcase 3case 2case 0case 1Downcase 1case 0case 2case 3


И не нужен антидребезг. Но при условии дребезга выпадет ли такая последовательность?

Ссылка на комментарий
Поделиться на другие сайты

Дребезг это нестабильное обнаружение фронта. Либо натурально механическое подпрыгивание контакта на контакте, либо когда оптический сенсор засвечен лишь частично и реагирует на любую помеху.

В случае энкодера он возникает за раз только на одном контакте, так что некорректных состояний не возникает, максимум - хаотичный счет на +/- 1. А некорректные состояния могут возникнуть только если скорость вращения достаточно высока чтобы "проскочить" промежуточное состояние между опросами. Ну либо совсем уж жуткие помехи.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Да поэтому и прихожу к выводу что будет 3333, 2222, 0000, 1111 что то типа такого.

Хотя какие 0000? Ну в общем я думаю понятен ход моих мыслей.

Ссылка на комментарий
Поделиться на другие сайты

Внезапно, у оптического энкодера тоже есть механическая часть - шторка. Она может дребезжать сама по себе, она может бликовать на кромке и давать неустойчивые двойные импульсы, много чего может с ней произойти. Оптический от механического отличается только износостойкостью, а проблемы у них почти одинаковые. И почему-то для промышленных станков где используются подобные энкодеры на них ставят ПЛИС, работающую на сотне-другой мегагерц, чтобы не пропустить ни один импульс. Идиоты?

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

48 минут назад, Alexeyslav сказал:

почему-то для промышленных станков где используются подобные энкодеры на них ставят ПЛИС, работающую на сотне-другой мегагерц, чтобы не пропустить ни один импульс. Идиоты?

Нет, конечно. Только сотни мегагерц к энкодеру не имеют НИКАКОГО ОТНОШЕНИЯ. Для энкодера не нужны даже мегагерцы. Просто на ПЛИСах ЗАОДНО реализуют логику энкодера, включая фильтрацию, если такового интерфейса нет в  контроллере реального времени, либо вообще система построена как ПЛК и ей необходим внешний контроллер энкодера (ПЛК не является системой реального времени).

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

14 минуты назад, Дмитрий Мамедиев сказал:

 

А почему бы в коде там где идёт инкремент/декремент не вставить условный выбор в зависимости от состояния какую переменную трогать? Или делаете глобальный указатель, по которому код в прерывании будет инкрементировать переменную, а уж на какую переменную указатель будет указывать то и будет управляться энкодером. Но тут есть ньюанс, операция с этой переменной не атомарна, а значит нужна критическая секция на любую операцию с переменной. В самом простом варианте - это менять указатель только под запрещёнными прерываниями.

Но ИМХО селектор в прерывании это проще и понятней, пока позволяет время обработки прерывания.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...