Подавление дребезга энкодера

Контроллеры, драйверы, датчики, управляющие устройства.
isx
Опытный
Сообщения: 157
Зарегистрирован: 17 июн 2013, 14:21
Репутация: 17
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение isx »

На них отладчики со встроенным программатором и тестовым МК продаются по цене комплектующих. Так что особых проблем нет :wik:
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение aftaev »

UAVpilot писал(а):Всегда было можно.
Именно по этому видимо на форумах: начали пробовать СТМ32 и бросили :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
skyAlex
Мастер
Сообщения: 489
Зарегистрирован: 30 май 2014, 21:43
Репутация: 87
Откуда: Питер

Re: Подавление дребезга энкодера

Сообщение skyAlex »

На самом деле у ардуины есть огромное преимущество - не надо читать даташиты, изучать таймеры и прерывания, для непрограмиста самое то.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение aftaev »

skyAlex писал(а):На самом деле у ардуины есть огромное преимущество - не надо читать даташиты, изучать таймеры и прерывания, для непрограмиста самое то.
Именно так :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение Serg »

skyAlex писал(а):На самом деле у ардуины есть огромное преимущество - не надо читать даташиты, изучать таймеры и прерывания, для непрограмиста самое то.
И для Arduino и для STM принцип одинаков: всякие несложные программки можно писать практически не читая даташитов, но полностью использовать возможности периферии без даташитов не получится.
Ну и возможностей периферии у STM на порядок больше. Я например делал опрос 1-wire температурных датчиков (DS18B20) вообще без использования ЦП.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение aftaev »

Вспоминается тема michael-yurov, как он с СТМ32 долбался :) Да на ардуине он бы не сделал конечно свой StepMaster. Помню как сам долбался с СТМ32 и экранчиком TFT 3.2" :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение michael-yurov »

aftaev писал(а):Вспоминается тема michael-yurov, как он с СТМ32 долбался
И сейчас продолжаю - боюсь вывод перенести на другую ножку. Велика вероятность нарваться на какую-нибудь проблему.
Стоит задействовать какое-нибудь переферийное устройство, как оно начинает конфликтовать по порту, или прерыванию, или еще по какой-то причине с другими устройствами.
Вот по отдельности, вроде бы все настраивается и работает - а вместе, хрен упихаешь в этот проц.

Вот, казалось бы - обычная ножка, называется PortB3. Но, почему-то не срабатывает прерывание. Пол дня убил, пока не понял, что по умолчанию она назначена для использования JTAG отладчика, и, чтобы ее использовать - нужно убрать оттуда этот JTAG.
Но, блин, стоило убрать JTAG, как оказалось, что автоматически стала занята другая ножа, используемая для вывода сигнала с таймера, и перенести ее никуда нельзя!
И такая фигня происходит постоянно. Почему нельзя было ножку порта JTAG так и назвать? Зачем нужно было ее называть, как и остальные "B3"?
И чтобы такую фигатень выловить - приходится рыться в сотнях страниц документации.

Казалось бы простой вопрос - как задать частоту работы процессора?
Я до сих пор не могу разобраться, как это делать грамотно.
Вроде бы замудреная физическая реализация тактирования мне понятна, но в каких библиотеках искать и менять параметры функций настройки тактирования - до сих пор не понимаю.
Вот, вроде бы нашел, изменяю, и нифига!
Блин, да я даже до сих пор не понимаю, откуда программа начинается?
В каком месте запускается функция инициализации системы? Почему ее нет в файле main.c?
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение aftaev »

Потому Ардуина хороша для своих простых, да и сложных проектов где хватает ее мощи :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
skyAlex
Мастер
Сообщения: 489
Зарегистрирован: 30 май 2014, 21:43
Репутация: 87
Откуда: Питер

Re: Подавление дребезга энкодера

Сообщение skyAlex »

aftaev писал(а):Потому Ардуина хороша для своих простых, да и сложных проектов где хватает ее мощи
А учитывая что сейчас ардуинка уже на ARMах есть, то и для сложных тоже.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение aftaev »

Есть у меня Ардуина Due на ARM, но пока Мега2560 вполне хватает :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение michael-yurov »

aftaev писал(а):Потому Ардуина хороша для своих простых, да и сложных проектов где хватает ее мощи :)
Тут вот какая заковыка - производительность STM32, конечно, в разы выше, чем у 8-битных AVR-ок,
Но существенные плюсы именно в обилии аппаратных возможностей микроконтроллера.
Если делать по простому, силами процессора - никакой производительности не хватит для сложных задач, потому и приходится разбираться с извращениями в настройке переферии.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение aftaev »

В нашем случае Ардуинка управляет простой линией(станком), считали длину профиля энкодером, стоп, даванули гидравлику первую, вторую, отрезали и по новой. На СТМ32 яб писал это год и не написал бы сам :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
isx
Опытный
Сообщения: 157
Зарегистрирован: 17 июн 2013, 14:21
Репутация: 17
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение isx »

Немного не в тему но все же.
skyAlex писал(а):На самом деле у ардуины есть огромное преимущество - не надо читать даташиты, изучать таймеры и прерывания, для непрограмиста самое то.
Если вы хоть иногда делаете сложные проекты, то лучше один раз научиться, чем всю жизнь страдать, а с даташитами тут все просто - у большинства STM все настройки периферии практически идентичны, так что выучив один камень можно применять любой другой без особых трудностей.
aftaev писал(а):Помню как сам долбался с СТМ32 и экранчиком TFT 3.2"
С экранчиками ничего сказать не могу, сам не работал пока, не было необходимости.
michael-yurov писал(а):И чтобы такую фигатень выловить - приходится рыться в сотнях страниц документации.
В даташите (не Ref. Manual!) есть таблица пинов (идет обычно после распиновки), и там есть колонка с указание функции по умолчанию.
michael-yurov писал(а):Казалось бы простой вопрос - как задать частоту работы процессора?
Я использую заготовку:

Код: Выделить всё

RCC->CR |= RCC_CR_HSION; //Включить генератор HSI
	RCC->CR &= ~RCC_CR_HSEON;
while((RCC->CR & RCC_CR_HSIRDY)==0) {} //Ожидание готовности HSI
//
 RCC->CFGR &= ~RCC_CFGR_PLLSRC; //Источником сигнала для PLL выбран HSI с делением на 2
RCC->CR &= ~RCC_CR_PLLON; //Отключить генератор PLL
RCC->CFGR &= ~RCC_CFGR_PLLMUL; //Очистить PLLMULL
RCC->CFGR |= (RCC_CFGR_PLLMUL_3 | RCC_CFGR_PLLMUL_1); //Коефициент умножения
RCC->CR |= RCC_CR_PLLON; //Включить генератор PLL
while((RCC->CR & RCC_CR_PLLRDY)==0) {} //Ожидание готовности PLL
//
//Переключиться на тактирование от PLL
RCC->CFGR &= ~RCC_CFGR_SW; //Очистка битов выбора источника тактового сигнала
RCC->CFGR |= RCC_CFGR_SW_PLL; //Выбрать источником тактового сигнала PLL
while((RCC->CFGR&RCC_CFGR_SWS)!=0x08){} //Ожидание переключения на PLL
Корректирую только PLLMULL по необходимости.
aftaev писал(а): На СТМ32 яб писал это год и не написал бы сам :)
Да бросьте. Это по-началу так страшно (я сам рожал месяцев 9 :) ), а потом втягиваешься и все норм - на других и смотреть не хочется ...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение Serg »

aftaev писал(а):Вспоминается тема michael-yurov, как он с СТМ32 долбался :) Да на ардуине он бы не сделал конечно свой StepMaster. Помню как сам долбался с СТМ32 и экранчиком TFT 3.2" :)
michael-yurov писал(а):Стоит задействовать какое-нибудь переферийное устройство, как оно начинает конфликтовать по порту, или прерыванию, или еще по какой-то причине с другими устройствами.
Ну что тут можно сделать?.. Разве что только посочуствовать и посоветовать читать доки, ибо они - RuleZ!
Там например можно вычитать про такую вот забавную приблуду: http://www.st.com/stm32cube :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение aftaev »

Для моих проектов и Ардуины хватает ;)
isx писал(а):Да бросьте. Это по-началу так страшно (я сам рожал месяцев 9 )
Если бы мы так же рожали клиенту, то был бы аборт с проектом и с оплатой ;) Клиент рад что у него русский экранчик и все работает. Как оно работает клиенту до лампочки, да хоть на транзисторах МП42 :) А мы рады что нам заплатили несколько килобаксов :)
isx писал(а):С экранчиками ничего сказать не могу, сам не работал пока, не было необходимости.
Попробуй его прилипендить и запустить Тач :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
isx
Опытный
Сообщения: 157
Зарегистрирован: 17 июн 2013, 14:21
Репутация: 17
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение isx »

aftaev писал(а):Если бы мы так же рожали клиенту, то был бы аборт с проектом и с оплатой
Ну так я АВР-ки выгуливал, пока рожал с STM :) .
aftaev писал(а): да хоть на транзисторах МП42
Ну не знаю, мне такой переход оказался выгодным. Теперь я не думаю хотя бы о том, хватит ли мне внешних прерываний и таймеров для проекта....
aftaev писал(а):Попробуй его прилипендить и запустить Тач
У меня пока даже необходимости нет символьник цеплять, не то что тач :D .
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение michael-yurov »

isx писал(а):В даташите (не Ref. Manual!) есть таблица пинов (идет обычно после распиновки), и там есть колонка с указание функции по умолчанию.
Ну так никто в этом и не сомневается.
Вопрос был в другом - почему на этом входе не срабатывает прерывание? Может быть я неправильно назвал обработчик прерывания?, может быть что-то напутал в настройке приоритетов?, может быть сбрасываю не тот флаг прерывания, а нужный продолжает висеть?, может быть то прерывание, которое я выбрал не работает именно с этой ногой?, может быть этот вход был LVTTL и сгорел от 5 В ?.. На какой странице нужно было искать ответ на мой вопрос?
isx писал(а):В даташите (не Ref. Manual!) есть таблица пинов (идет обычно после распиновки), и там есть колонка с указание функции по умолчанию.
Ага, сначала колонка с названиями ног, где данная нога фигурирует, как PB3, а потом оказывается есть вторая колонка, в которой все то же самое, кроме этого JTAG.
2015-08-01 02-43-15 Скриншот экрана.png (2005 просмотров) <a class='original' href='./download/file.php?id=55125&mode=view' target=_blank>Загрузить оригинал (151.62 КБ)</a>
Нет, я не спорю, все в общем-то просто... открыл мануал, нашел таблицу, нашел данные для своего корпуса, посмотрел какая функция у ноги по умолчанию после сброса...
Просто нужно пол дня убить не понимая, почему прерывание на ноге PB3 не вызывается. А потом еще пол дня убить, чтобы понять, что отключить этот чертов JTAG я не могу, потому что возникает конфликт с другой периферией, которую уже переназначить на новую ногу нельзя.
Все это становится привычным и понятным со временем. Но я так и не пойму, почему бы ногу так и не назвать JTAG, раз она является ей по умолчанию?
Зачем создавать таблицу соответствия названия и выполняемой функции?
isx писал(а):Я использую заготовку:
Это, конечно, все хорошо. Я так же поступаю.
Но как нормальный человек должен понять, где найти и отключить функцию системинит, вызываемую по умолчанию?
И почему после ее отключения перестает работать часть используемой периферии, и по другому начинает работать приоритезация прерываний?
isx писал(а):Корректирую только PLLMULL по необходимости.
А если я захочу кварц поставить? (это риторический вопрос).

AVR-ки в этом плане настраивались намного, намного проще.
UAVpilot писал(а):Ну что тут можно сделать?.. Разве что только посочуствовать и посоветовать читать доки, ибо они - RuleZ!
Собственно, чем я и занимаюсь.
Вместо того, чтобы писать программу - я вдумчиво с расстановкой изо дня в день читаю доки.
UAVpilot писал(а):Там например можно вычитать про такую вот забавную приблуду: http://www.st.com/stm32cube
Приблуда классная, бесспорно, и я ей давно и с радостью пользуюсь. Многие вопросы распределения перефирийных устройств с ней решаются во много раз быстрее.
Да и тактирование сейчас намного проще настроить.

Только вот в последних версиях используются собственные библиотеки функций,
и генерирует эта приблуда не простой и понятный код, как раньше, а гору непонятных файлов, в которых использует незнакомые мне и компилятору названия функций.
А если я начну подключать ее библиотеки к своему проекту - я окончательно запутаюсь во всем этом безобразии-многообразии.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение aftaev »

isx писал(а):У меня пока даже необходимости нет символьник цеплять, не то что тач .
У нас проекты больше связаны с пром. применением. Какой нибудь контроллер нужен чтобы таскать ось туды/сюды, иль какой нибудь хитрый таймер с температурой или заменить PLC тд.. Многие клиенты жаждят видеть экранчик :)
Ардуина с TFT экраном стоит около 15$ http://ru.aliexpress.com/item/Free-ship ... 03179.html
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение Serg »

michael-yurov писал(а):Только вот в последних версиях используются собственные библиотеки функций,
Если ты пользуешь CMSYS, то это тоже "собственная библиотека функций", только уже сильно устаревшая и от этого создающая много лишних проблем при использовании с RTOS и новых чипов. Куб использует библиотеки HAL, которые позволяют полностью абстрагироваться от распределения ножек, таймеров и прерываний и т.п. Это позволяет просто сменить чип например с stm32f1 на stm32f4 и всё будет работать. Вобщем это наше неизбежное будущее, такое-же, какими были Win95, WinXP, Win7. :)
michael-yurov писал(а):и генерирует эта приблуда не простой и понятный код, как раньше, а гору непонятных файлов, в которых использует незнакомые мне и компилятору названия функций.
На счёт незнакомых названий функций утверждение сильно сомнительное - те, которые знакомые тоже ведь по началу были незнакомые... )
michael-yurov писал(а):А если я начну подключать ее библиотеки к своему проекту - я окончательно запутаюсь во всем этом безобразии-многообразии.
Так и будет, если не прочитаешь небольшое пособие по миграции своих приложений на HAL. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Подавление дребезга энкодера

Сообщение michael-yurov »

UAVpilot писал(а):Куб использует библиотеки HAL, которые позволяют полностью абстрагироваться от распределения ножек, таймеров и прерываний и т.п. Это позволяет просто сменить чип например с stm32f1 на stm32f4 и всё будет работать.
Это радует, это правильная штука.
UAVpilot писал(а):Так и будет, если не прочитаешь небольшое пособие по миграции своих приложений на HAL.
Не мог бы ткнуть меня носом?
Ответить

Вернуться в «Электроника»