Создание собственной системы стабилизации

Razek
oleg70:

STM несколько питающих (VDD) и “земляных” ног, c каждой стороны

Да и на каждую пару желательно вешать кондеи

mahowik
rual:

Вию ещё долго на АВРе телепаться.

так и будет… хотя если учесть, сколько клонов вокруг (в том числе и на стм32), то вий уже давно переехал 😃
кстати, ради ознакомления, (опять 😃) советую посмотреть на проект от ziss_dm (от вия там давно ничего не осталось, еали кого пугает сам вий 😃)… там HAL реализован для AfroFlight32, STM32f3Discovery и ардуинки

rual:

Чем лучше СТМ:

читал пару обзорных статей по стм32… тут споров нет…

rual:

Мне 3 платы Ф3 обошлись с доставкой

тоже самое по сути… что то более 20 енотов за штуку вышло…

rual:

У меня времени на работе больше, чем дома

иногда так же, но начальник за спиной сидит и каждый раз когда открываю Notepad++, пописать че нить, то на стреме постоянно ))

rual:

1-летает

кстати, ты давно видео не выкладывал на ф3… если не пропустил, то было только видео первого подлета на ф3 и тогда коптер по горизонту вроде как гулял… сейчас стабильно все?

Razek:

Вообще это ты поделись тайными знаниями где ты время находишь на релизы собственных бранчей вия =)

вот на них пока все время и уходит, как “урванное” рабочее, так и свободное домашнее + еще дебильный саппорт дофига времени тянет… а по сути от “монетизации” хобби одни убытки получились, как моральные, так и материальные… писал в RC1 ветке как-то…

mahowik
DVE:

отладка и заливка одним кликом, IDE удобная, все гораздо приятнее получается

чет я уже потерялся во всех этих IDE… 😃
У кого работает/настроен полноценный дебаггер под stm32f3discovery/stm32f4discovery? т.е. под какую IDE и какой бубен для этого надо? 😃

rual
mahowik:

кстати, ты давно видео не выкладывал на ф3… если не пропустил, то было только видео первого подлета на ф3 и тогда коптер по горизонту вроде как гулял… сейчас стабильно все?

Да показать особо нечего, переделал корректор ИНС как у Тома Пикке, code.google.com/p/…/ahrs_simple_quaternion.c
неплохой алгоритм, вся математика алгебраически оптимизирована, можешь на АВР попробовать. Нужно подбирать коэффициенты. Счас горизонт лучше, но из-за наличия интегральной составляющей присутствует медленная раскачка.
Видио с отскоком от стен не делал, на работе в узком коридоре (когда все датчики “держаться” за стены) пролетел нормально, но снять было некому, пульт отпустить боялся:) а дома коридор широкий, после “отскока” от одной стены успевает разогнаться и не успевает затормозить у другой, поцарапал стены, поругался с женой:) Сделал вывод что нужен датчик скорости для граничения оной в межстенном пространстве. Гдето видел OpticFlow за 50 баксов и не могу вспонить где:( Вобщем кризис, пока голова не работает, работаю руками -собрал леталку для улицы, теперь у меня две штуки на Ф3. Буду ГПС прикручивать, нашел математику нужно проверять.

Geniok
mahowik:

серьезно, вопрос всем, где вы берете время? есть возможность прямо на работе ковыряться? (хехе… сейчас загадим Сергею темку! 😈)

Вечерком, после работы пару часов. Да и то бывает не каждый день. Ну и выходные изредка.

DVE
mahowik:

У кого работает/настроен полноценный дебаггер под stm32f3discovery/stm32f4discovery? т.е. под какую IDE и какой бубен для этого надо? 😃

Coocox работает с f4 из коробки, ничего допиливать не надо. С f3 не пробовал.

Geniok
oleg70:

Подскажите, кто знает, зачем у STM несколько питающих (VDD) и “земляных” ног, c каждой стороны ?
На AVR-e делал запитку с любых удобных, но не уверен что прав… Не могу нигде найти инфу по этому поводу.
(плату почти развел, а тут затык…)

Есть небольшая статья по этому поводу вот тут: easyelectronics.ru/podklyuchenie-mikrokontrollera-…

Там правда АВР, но сути особо не меняет.

mahowik:

чет я уже потерялся во всех этих IDE… 😃
У кого работает/настроен полноценный дебаггер под stm32f3discovery/stm32f4discovery? т.е. под какую IDE и какой бубен для этого надо? 😃

Нравится IAR в этом плане. Как писалка кода не очень, в основном использую или Notepad++ или VisualStudio+VisualAssist. Зато как отладчик полностью устраивает.

Все работает из коробки, новый проект создается за 2-3 минуты.

Просьба будт ко всем, может у кого завалялась библиотека для мат вычислений на АРМ? Что-то типа arm_math.h , arm_math.c
Желательно для камня Ф4, но если для других есть, отказываться не буду…

Заранее спасибо!

SergDoc
Geniok:

Что-то типа arm_math.h , arm_math.c
Желательно для камня Ф4, но если для других есть, отказываться не буду…

у меня только wirish_math из maple выдрано…
в библиотеках CMSIS точно есть arm_math.h если что тоже есть…

Народ мне тут на ухо нашептали, грамотные программеры меня поправя если что не так, по прерываниям, первое что надо сделать в прерывании - это запретить все прерывания, какие бы там они не были по иерархии - пускай ждут, второе прерывания должны быть только на те действия, которые не требуют отлагательств, ну типа мы падаем- пошли все нафиг со своими командами с радио, а прерывания типа пришли данные с акселя и срочно выполнять - то думаю ненадо - это и в “глобальном” модуле отследить один бит можно, чем тратить кучу тактов на выполнение прерывания, а потом ещё кучу тактов на возвращение?

arm_math.rar

mahowik
Geniok:

Просьба будт ко всем, может у кого завалялась библиотека для мат вычислений на АРМ? Что-то типа arm_math.h , arm_math.c
Желательно для камня Ф4, но если для других есть, отказываться не буду…

в этом архивчике с экзамплами www.st.com/web/en/catalog/tools/PF257904

или вот code.google.com/p/mwc-ng/source/…/arm_math.h

RaJa
mahowik:

чет я уже потерялся во всех этих IDE… 😃
У кого работает/настроен полноценный дебаггер под stm32f3discovery/stm32f4discovery? т.е. под какую IDE и какой бубен для этого надо? 😃

У меня вроде все работает по CooCox. Дебаггеров парочка - встроенный ST-LinkV2 и CooLinkEx

mahowik
RaJa:

У меня вроде все работает по CooCox

stm32f3discovery или stm32f4discovery?
CooCox поддерживает f4 из коробки (уже подтвердили выше)… если у вас получилось с stm32f3discovery, то расскажите плз. как… у меня не пашет…

Geniok
SergDoc:

у меня только wirish_math из maple выдрано…
в библиотеках CMSIS точно есть arm_math.h если что тоже есть…

Народ мне тут на ухо нашептали, грамотные программеры меня поправя если что не так, по прерываниям, первое что надо сделать в прерывании - это запретить все прерывания, какие бы там они не были по иерархии - пускай ждут, второе прерывания должны быть только на те действия, которые не требуют отлагательств, ну типа мы падаем- пошли все нафиг со своими командами с радио, а прерывания типа пришли данные с акселя и срочно выполнять - то думаю ненадо - это и в “глобальном” модуле отследить один бит можно, чем тратить кучу тактов на выполнение прерывания, а потом ещё кучу тактов на возвращение?

ну так по идее для того существует приоритет прерываний, чтобы их разделить на более важные менее.
Если я падаю, то не хотел бы терять управление стиками.
А опрос и обработка датчиков все равно идет не в прерываниях, а основном рабочем цикле. в прерывании просто ставим флаг, что новые данные пришли.

SergDoc
Geniok:

в прерывании просто ставим флаг, что новые данные пришли.

войти в прерывание (потратить такты) изменить бит, выйти из прерывания (потратить такты)?

Geniok:

Если я падаю, то не хотел бы терять управление стиками.

это я утрировано сказал…

Мне китайцы, что-то выслали на замену утеряных ИК датчиков, сегодня пойду забирать - посмотрю что…

Geniok
SergDoc:

войти в прерывание (потратить такты) изменить бит, выйти из прерывания (потратить такты)?

это я утрировано сказал…

Мне китайцы, что-то выслали на замену утеряных ИК датчиков, сегодня пойду забирать - посмотрю что…

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

Razek
rual:

нашел математику нужно проверять.

А поделитесь ссылкой на математику?

SergDoc

вот возмём простейший - ну да КУК - сидим курим в нопах, пока прерывания с радио не пришло, пришло - запустили основной цикл, а там и чтение гир и перерасчёт выходных шимов, вот чем нравятся аналоговые датчики - они всегда готовы…

если какое-либо прерывание выполняется, то надо обязательно запрещать остальные, придёт прерывание в прерывании, куда вернётся программа после? ей бабушка нашепчет? да билеберда получится, хорошо если в основной цикл, а скорей в прерывании и зациклится - шахид-коптер получится, камикадзе многороторный - только банзай кричать научить надо 😃

Geniok
SergDoc:

вот возмём простейший - ну да КУК - сидим курим в нопах, пока прерывания с радио не пришло, пришло - запустили основной цикл, а там и чтение гир и перерасчёт выходных шимов, вот чем нравятся аналоговые датчики - они всегда готовы…

если какое-либо прерывание выполняется, то надо обязательно запрещать остальные, придёт прерывание в прерывании, куда вернётся программа после? ей бабушка нашепчет? да билеберда получится, хорошо если в основной цикл, а скорей в прерывании и зациклится - шахид-коптер получится, камикадзе многороторный - только банзай кричать научить надо 😃

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

SergDoc
Geniok:

вернулся после в старое

а там каша (как это? - срыв стека) и по кругу из прерывания в прерывание, неважно какой приоритет, если мы сидим в прерывании - никаких прерываний - пускай ждут, а вот ежели пришли два одновременно тогда да - пропускаем старшее - младшее подождёт!
на вас никогда аппарат не бросался? на меня несколько раз уже покушался 😦

Geniok
SergDoc:

а там каша (как это? - срыв стека) и по кругу из прерывания в прерывание, неважно какой приоритет, если мы сидим в прерывании - никаких прерываний - пускай ждут, а вот ежели пришли два одновременно тогда да - пропускаем старшее - младшее подождёт!
на вас никогда аппарат не бросался? на меня несколько раз уже покушался 😦

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

RaJa
mahowik:

stm32f3discovery или stm32f4discovery?
CooCox поддерживает f4 из коробки (уже подтвердили выше)… если у вас получилось с stm32f3discovery, то расскажите плз. как… у меня не пашет…

Стучитесь в личку или в аську 260209301 - подскажу. Там все довольно просто, могу даже пример проекта скинуть на F4 или F103

Sir_Alex
SergDoc:

а там каша (как это? - срыв стека) и по кругу из прерывания в прерывание, неважно какой приоритет, если мы сидим в прерывании - никаких прерываний - пускай ждут, а вот ежели пришли два одновременно тогда да - пропускаем старшее - младшее подождёт!

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