Создание собственной системы стабилизации
или куча проб и ошибок
Некоторые программеры, я смотрю, активно ратуют за т.н. “конечный автомат”, типа самодельного переключения задач в основном цикле программы, но че то не очень красивый код получается, а скажем тот же CoOs практически не имеет внятной документации из-за своей (как некоторым кажется) простоты…
Кстати, энтот CoOs я запустил за два дня, действительно работает,… НО вдруг аппаратное прерывание стало зависать, и найти причину не представляется возможным из-за этой “простоты”, которая как говорится хуже воровства… Пока я в раздумьях…
если интересно - могу выложить чот типа мелкой ОС, простой и понятной, требующей всего 1 таймер и основанной на сообщениях. Вызов функции + параметр для нее можно вызвать сообщением либо по таймеру, настройка - на лету (создание привязки/отвязки, привязка/удаление таймера и т.п.).
В итоге в главном цикле у нас остается единственный вызов функции - dispatchMessages
П.С. - не мое, с изиэлектроникс, я прост нашел то что мне больше всего понравилось и приконопатил к себе
для примера - сейчас делаю проектик… таймер на 1мс (мин.время), задачи (таймер) каждые: 1мс-опрос энкодера, 20мс-обработка кнопок, 200мс - вывод буфера на дисплей, 1000мс - опрос 3-х DS1822, по нажатию кнопок/энкодера - работа с меню, и т.д…
АЦП так и не работает 😦 надо рыть глубже…
чёт я неправильно делаю - надо сначала в натиксе убедиться, что оно работает, а потом править арду…
Вопрос к Александру (rual), Ваш новый разрабатываемый софт на базе RTOS ??
пока нет.
столкнулся с явной необходимостью реализации длительных циклов ожидания
у меня все процессы и функции проходные, т.е. вызов-проверка условий- вычисление - запоминаем состояние - выход. Полет по точкам пока только симулировал ))) В реале боязно…
Тоже планирую перейти на РТОС, ибо это удобно программировать, но пока не до того.
активно ратуют за т.н. “конечный автомат”
Наилучшее решение, и не важно под РТОС или без.
Наттикс сообщает, что на 13 входе АЦП 2.54В - что примерно равно батарейке в 3 секции (почему примерно - старая нелётная батарейка около 11 вольт - точно не смотрел) так что само АЦП работает-надо рыться в арду - везде где встретится 100 лапа - менять на 103…
везде где встретится 100 лапа - менять на 103…
Только не менять, а выносить в дефайн. Мало ли как схемотехника в дальнейшем поменяется.
что само АЦП работает-надо рыться в арду - везде где встретится 100 лапа - менять на 103…
Арда разве лапами оперирует? Надо искать ссылку на канал АЦП или память созначением АЦП
Арда разве лапами оперирует?
АЦП она считает начиная с 100(10 вход АЦП) и до забора (макс. 16) в PX4 как раз 100 лапа для батарейки - у нас получается 103…
На сайте кокоса есть описание всех функций CoOs. Крайний дринкеропилот использует именно ейо, до этого была фриртос, но ввиду проблем с задержкой прерываний я от нее отказался.
могу выложить чот типа мелкой ОС
Если можно, хотябы ссылочку на источник …
На сайте кокоса есть описание всех функций CoOs. Крайний дринкеропилот использует именно ейо, до этого была фриртос, но ввиду проблем с задержкой прерываний я от нее отказался.
тогда к Вам вопрос (может что подскажете…):
у меня всего одно прерывание по таймеру на IMU 100 Гц (приоритет поставил “0”), так вот при его включении вся ОС виснет, отключаю - работает без проблем…
Вроде, по документации на CoOs, прерывания не использующие функции самой ОС, никак не влияют на работу системы и должны тупо прерывать планировщик…(ды оно и логично, ведь планировщик - это всего лишь прерывание SysTick с низким приоритетом)… и никаких дополнительных действий по оформлению не требуют…
Больше, к сожалению в доках ничего не нашел… В чем у меня проблема ???
Если можно, хотябы ссылочку на источник …
пока не у компа - у тещи на выходные - скину ссылку на источник
easyelectronics.ru/organizaciya-drevovidnogo-menyu…
там он как раз используется для меню на дисплее…
все что требуется для переделки под себя - переписать код таймера под свой проц (в оригинале 100Гц, у меня 1кГц) и обозвать удобными для себя именами идентификаторы функций и идентификаторы таймеров (если нужны)
to oleg70 очень мало инфо. Какой проц, среда разработки, как именно назначено прерывание и самое главное - без ртос работает? Если проц стм32ф4 то там есть нюанс с фпу.
очень мало инфо
Вопрос снят… (после “танцев с бубном” 😃) все заработало… изменил в Os_Config.h параметр
CFG_STK_CHECKOUT_EN (???) , надеюсь что дальше “граблей” не будет… надежда умирает последней…
Поздравляю, коллега. А что за проект?
А что за проект?
пост #4005… , решил ставить на самолет FPV (крыло).
поглядел одним глазком в revo - с usb таже бяка что и у меня на прошлой плате (в vrbrain я так понял тоже) подтяжка на резюке - лапа B13 для детекта… если кому интересно - нада развернуть MPU на 180 градусов, переписать шимы (входа выхода) i2c поменять с 1-го на второй, первый и третий усарт переделать, телеметрию вроде можно на sd зафундулить, обрезать или на 3 spi отправить…
по делу - с ацп так и не добился толку - всё равно фигурирует 100 вместо 103…
пост #4005… , решил ставить на самолет FPV (крыло).
Ага, посмотрел, прикольно все в одном. А че за алго, среда?
Вот наглядный пример “собственной системы”
А че за алго, среда?
Free IMU на кватернионах (от Fabio), а остальное за год потихоньку сам накропал…(OSD,GPS), пришлось еще самому заново аппаратуру управления переделывать (на модулях DRF4431), все в КоКосе, теперь вот и CoOs вроде пошла…
Free IMU на кватернионах (от Fabio), а остальное за год потихоньку сам накропал…(OSD,GPS), пришлось еще самому заново аппаратуру управления переделывать (на модулях DRF4431), все в КоКосе, теперь вот и CoOs вроде пошла…
Молодца, че скажешь. Проц ф4?
Проц ф4
Да
развлекаюсь 😃
rcopen.com/blogs/83206/18515