Подавление дребезга энкодера
Re: Подавление дребезга энкодера
На них отладчики со встроенным программатором и тестовым МК продаются по цене комплектующих. Так что особых проблем нет 
-
aftaev
- Зачётный участник

- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6194
- Откуда: Казахстан.
- Контактная информация:
Re: Подавление дребезга энкодера
Именно по этому видимо на форумах: начали пробовать СТМ32 и бросилиUAVpilot писал(а):Всегда было можно.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Re: Подавление дребезга энкодера
На самом деле у ардуины есть огромное преимущество - не надо читать даташиты, изучать таймеры и прерывания, для непрограмиста самое то.
-
aftaev
- Зачётный участник

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

- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6194
- Откуда: Казахстан.
- Контактная информация:
Re: Подавление дребезга энкодера
Вспоминается тема michael-yurov, как он с СТМ32 долбался
Да на ардуине он бы не сделал конечно свой StepMaster. Помню как сам долбался с СТМ32 и экранчиком TFT 3.2" 
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Подавление дребезга энкодера
И сейчас продолжаю - боюсь вывод перенести на другую ножку. Велика вероятность нарваться на какую-нибудь проблему.aftaev писал(а):Вспоминается тема michael-yurov, как он с СТМ32 долбался
Стоит задействовать какое-нибудь переферийное устройство, как оно начинает конфликтовать по порту, или прерыванию, или еще по какой-то причине с другими устройствами.
Вот по отдельности, вроде бы все настраивается и работает - а вместе, хрен упихаешь в этот проц.
Вот, казалось бы - обычная ножка, называется PortB3. Но, почему-то не срабатывает прерывание. Пол дня убил, пока не понял, что по умолчанию она назначена для использования JTAG отладчика, и, чтобы ее использовать - нужно убрать оттуда этот JTAG.
Но, блин, стоило убрать JTAG, как оказалось, что автоматически стала занята другая ножа, используемая для вывода сигнала с таймера, и перенести ее никуда нельзя!
И такая фигня происходит постоянно. Почему нельзя было ножку порта JTAG так и назвать? Зачем нужно было ее называть, как и остальные "B3"?
И чтобы такую фигатень выловить - приходится рыться в сотнях страниц документации.
Казалось бы простой вопрос - как задать частоту работы процессора?
Я до сих пор не могу разобраться, как это делать грамотно.
Вроде бы замудреная физическая реализация тактирования мне понятна, но в каких библиотеках искать и менять параметры функций настройки тактирования - до сих пор не понимаю.
Вот, вроде бы нашел, изменяю, и нифига!
Блин, да я даже до сих пор не понимаю, откуда программа начинается?
В каком месте запускается функция инициализации системы? Почему ее нет в файле main.c?
-
aftaev
- Зачётный участник

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

- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6194
- Откуда: Казахстан.
- Контактная информация:
Re: Подавление дребезга энкодера
Есть у меня Ардуина Due на ARM, но пока Мега2560 вполне хватает 
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
- michael-yurov
- Почётный участник

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

- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6194
- Откуда: Казахстан.
- Контактная информация:
Re: Подавление дребезга энкодера
В нашем случае Ардуинка управляет простой линией(станком), считали длину профиля энкодером, стоп, даванули гидравлику первую, вторую, отрезали и по новой. На СТМ32 яб писал это год и не написал бы сам 
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Re: Подавление дребезга энкодера
Немного не в тему но все же.
Корректирую только PLLMULL по необходимости.
), а потом втягиваешься и все норм - на других и смотреть не хочется ...
Если вы хоть иногда делаете сложные проекты, то лучше один раз научиться, чем всю жизнь страдать, а с даташитами тут все просто - у большинства STM все настройки периферии практически идентичны, так что выучив один камень можно применять любой другой без особых трудностей.skyAlex писал(а):На самом деле у ардуины есть огромное преимущество - не надо читать даташиты, изучать таймеры и прерывания, для непрограмиста самое то.
С экранчиками ничего сказать не могу, сам не работал пока, не было необходимости.aftaev писал(а):Помню как сам долбался с СТМ32 и экранчиком TFT 3.2"
В даташите (не Ref. Manual!) есть таблица пинов (идет обычно после распиновки), и там есть колонка с указание функции по умолчанию.michael-yurov писал(а):И чтобы такую фигатень выловить - приходится рыться в сотнях страниц документации.
Я использую заготовку: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Да бросьте. Это по-началу так страшно (я сам рожал месяцев 9aftaev писал(а): На СТМ32 яб писал это год и не написал бы сам
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Подавление дребезга энкодера
aftaev писал(а):Вспоминается тема michael-yurov, как он с СТМ32 долбалсяДа на ардуине он бы не сделал конечно свой StepMaster. Помню как сам долбался с СТМ32 и экранчиком TFT 3.2"
Ну что тут можно сделать?.. Разве что только посочуствовать и посоветовать читать доки, ибо они - RuleZ!michael-yurov писал(а):Стоит задействовать какое-нибудь переферийное устройство, как оно начинает конфликтовать по порту, или прерыванию, или еще по какой-то причине с другими устройствами.
Там например можно вычитать про такую вот забавную приблуду: http://www.st.com/stm32cube
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
aftaev
- Зачётный участник

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

Если бы мы так же рожали клиенту, то был бы аборт с проектом и с оплатойisx писал(а):Да бросьте. Это по-началу так страшно (я сам рожал месяцев 9 )
Попробуй его прилипендить и запустить Тачisx писал(а):С экранчиками ничего сказать не могу, сам не работал пока, не было необходимости.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Re: Подавление дребезга энкодера
Ну так я АВР-ки выгуливал, пока рожал с STMaftaev писал(а):Если бы мы так же рожали клиенту, то был бы аборт с проектом и с оплатой
Ну не знаю, мне такой переход оказался выгодным. Теперь я не думаю хотя бы о том, хватит ли мне внешних прерываний и таймеров для проекта....aftaev писал(а): да хоть на транзисторах МП42
У меня пока даже необходимости нет символьник цеплять, не то что тачaftaev писал(а):Попробуй его прилипендить и запустить Тач
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Подавление дребезга энкодера
Ну так никто в этом и не сомневается.isx писал(а):В даташите (не Ref. Manual!) есть таблица пинов (идет обычно после распиновки), и там есть колонка с указание функции по умолчанию.
Вопрос был в другом - почему на этом входе не срабатывает прерывание? Может быть я неправильно назвал обработчик прерывания?, может быть что-то напутал в настройке приоритетов?, может быть сбрасываю не тот флаг прерывания, а нужный продолжает висеть?, может быть то прерывание, которое я выбрал не работает именно с этой ногой?, может быть этот вход был LVTTL и сгорел от 5 В ?.. На какой странице нужно было искать ответ на мой вопрос?
Ага, сначала колонка с названиями ног, где данная нога фигурирует, как PB3, а потом оказывается есть вторая колонка, в которой все то же самое, кроме этого JTAG. Нет, я не спорю, все в общем-то просто... открыл мануал, нашел таблицу, нашел данные для своего корпуса, посмотрел какая функция у ноги по умолчанию после сброса...isx писал(а):В даташите (не Ref. Manual!) есть таблица пинов (идет обычно после распиновки), и там есть колонка с указание функции по умолчанию.
Просто нужно пол дня убить не понимая, почему прерывание на ноге PB3 не вызывается. А потом еще пол дня убить, чтобы понять, что отключить этот чертов JTAG я не могу, потому что возникает конфликт с другой периферией, которую уже переназначить на новую ногу нельзя.
Все это становится привычным и понятным со временем. Но я так и не пойму, почему бы ногу так и не назвать JTAG, раз она является ей по умолчанию?
Зачем создавать таблицу соответствия названия и выполняемой функции?
Это, конечно, все хорошо. Я так же поступаю.isx писал(а):Я использую заготовку:
Но как нормальный человек должен понять, где найти и отключить функцию системинит, вызываемую по умолчанию?
И почему после ее отключения перестает работать часть используемой периферии, и по другому начинает работать приоритезация прерываний?
А если я захочу кварц поставить? (это риторический вопрос).isx писал(а):Корректирую только PLLMULL по необходимости.
AVR-ки в этом плане настраивались намного, намного проще.
Собственно, чем я и занимаюсь.UAVpilot писал(а):Ну что тут можно сделать?.. Разве что только посочуствовать и посоветовать читать доки, ибо они - RuleZ!
Вместо того, чтобы писать программу - я вдумчиво с расстановкой изо дня в день читаю доки.
Приблуда классная, бесспорно, и я ей давно и с радостью пользуюсь. Многие вопросы распределения перефирийных устройств с ней решаются во много раз быстрее.UAVpilot писал(а):Там например можно вычитать про такую вот забавную приблуду: http://www.st.com/stm32cube
Да и тактирование сейчас намного проще настроить.
Только вот в последних версиях используются собственные библиотеки функций,
и генерирует эта приблуда не простой и понятный код, как раньше, а гору непонятных файлов, в которых использует незнакомые мне и компилятору названия функций.
А если я начну подключать ее библиотеки к своему проекту - я окончательно запутаюсь во всем этом безобразии-многообразии.
-
aftaev
- Зачётный участник

- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6194
- Откуда: Казахстан.
- Контактная информация:
Re: Подавление дребезга энкодера
У нас проекты больше связаны с пром. применением. Какой нибудь контроллер нужен чтобы таскать ось туды/сюды, иль какой нибудь хитрый таймер с температурой или заменить PLC тд.. Многие клиенты жаждят видеть экранчикisx писал(а):У меня пока даже необходимости нет символьник цеплять, не то что тач .
Ардуина с TFT экраном стоит около 15$ http://ru.aliexpress.com/item/Free-ship ... 03179.html
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Подавление дребезга энкодера
Если ты пользуешь CMSYS, то это тоже "собственная библиотека функций", только уже сильно устаревшая и от этого создающая много лишних проблем при использовании с RTOS и новых чипов. Куб использует библиотеки HAL, которые позволяют полностью абстрагироваться от распределения ножек, таймеров и прерываний и т.п. Это позволяет просто сменить чип например с stm32f1 на stm32f4 и всё будет работать. Вобщем это наше неизбежное будущее, такое-же, какими были Win95, WinXP, Win7.michael-yurov писал(а):Только вот в последних версиях используются собственные библиотеки функций,
На счёт незнакомых названий функций утверждение сильно сомнительное - те, которые знакомые тоже ведь по началу были незнакомые... )michael-yurov писал(а):и генерирует эта приблуда не простой и понятный код, как раньше, а гору непонятных файлов, в которых использует незнакомые мне и компилятору названия функций.
Так и будет, если не прочитаешь небольшое пособие по миграции своих приложений на HAL.michael-yurov писал(а):А если я начну подключать ее библиотеки к своему проекту - я окончательно запутаюсь во всем этом безобразии-многообразии.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Подавление дребезга энкодера
Это радует, это правильная штука.UAVpilot писал(а):Куб использует библиотеки HAL, которые позволяют полностью абстрагироваться от распределения ножек, таймеров и прерываний и т.п. Это позволяет просто сменить чип например с stm32f1 на stm32f4 и всё будет работать.
Не мог бы ткнуть меня носом?UAVpilot писал(а):Так и будет, если не прочитаешь небольшое пособие по миграции своих приложений на HAL.