flybrain. передатчик + приемник + автопилот. powered by stm32
Даташит утверждает , что
Опыт использования есть? Сообщество этот бмр085 уже вдоль и поперек обсудило. Точность никакая. Докажите обратное.
В чем мое отличие от OpenRLS например?
Я тут подумал - чет не так. А при чем тут упоминание лрс в первом посте, если о километре идет разговор? Слон например там 25 км и прочие. Непонял чет.
Докажите обратное.
Вот это ни к чему! Нечего тут доказывать! На доказательства времени немеряно нужно. Да еще если и цель не доказательства поиметь, а иная, скрытая, то вообще глуповато будет выглядеть оправдывающийся! Кроме этого, Вы же не свой опыт используете, а осылаете к сообществу. Такие отсылки бесконечны.
Слон например там 25 км и прочие. Непонял чет.
Чай не баллистическую ракету строим.
😃 Человек же пояснил…
Нет.
Сергей, Не кормите тролля.
Цитата Сообщение от varvar Посмотреть сообщение такой дальнобойности, как у этой штуки Ну делай на RFM22. Она даст пару КМ в воздухе точно. Давно уже это проверено. Эта тема, кстати как-то вяло у автора продвигается. Но для меня это не близко. Опять народ на PPM тянят
чего то до меня не дошло - о какой теме речь? Если о заготовке - то она уже почти год отлетала, ну а что тема не поддержана - что поделаешь?
Второй вариант - на замену, как раз на RFM22B и планируется - уже пару дней, как модули пришли. Прочее еще подтягивается.
А где PPM? У меня все пакетами передается, с адресацией и контрольными суммами - как в школе учили 😃
Точность никакая. Докажите обратное.
Вот первая же работа этого самого сообщества утверждает, что, если решать уравнения для расчета высоты на основе floating point переменных то достигается точность измерений 2 дюйма.
wmrx00.sourceforge.net/Arduino/BMP085-Calcs.pdf
Исследования проводились в апреле 2011 года.
А где PPM? У меня все пакетами передается, с адресацией и контрольными суммами - как в школе учили
Сорри, я вторую ссылку открыл, а потом только первую смотреть стал. В новой теме вы уже вроде какна процессоре TI планируете.
Второй вариант - на замену, как раз на RFM22B и планируется
RFM22 даст вам 2-3 км в воздухе.
Делайте, посмотрим, что получится. TI меня смущает. Много раз пытался у них сэмплы выциганить. Нет, они не отказывают, только за пересылку чипов, которым цена $4 хотят $100 за доставку. Короче, тема трудно доставаемой TI элементной базы в России станет большой проблемой при повторении вашего устройства. Я еще в вашей теме почитаю, конструктивно покритикую 😃
По теме…
Плату спаял. Сегодня подключил SWD попробовал программировать 405й камень. Все ОК. Попробовал DSP библиотеку. Компиляется, запускается пошагово дебаггится, внутри кристала выполняется.
Из печального. Есть подозрение, что я запаял BMP085 неправильно спозиционировав. Пришлось пока отключить его на плате. В понедельник пойду опять фен просить и исправлять это дело.
Но все остальное вроде работает. Буду завтра гонять, проверять как все устройства на шине I2C откликаются и передают данные. Еще GPS не запаял. EB500 скорее всего буду паять того как BMP085 переверну, надеюсь она ласты не склеила, пока я не обнаружил, что она неправильно запитывается.
Ну завтра приступаю к программированию, буду проверять все ли на плате откликается из устройств и работает ли правильно. Думаю успею проверить аксель, компас, гироскоп и флешку. Если все ОК, то начну OSD рисовать на экране телевизора. Пожелаю себе удачи.
Замордовали чувака, исчез куда-то.
Или он осознал всю глубину глубин?
Возможно, Алекс, Вы уже это видели.
У ST есть демонстрационная платка очень похожая на Вашу:
www.st.com/internet/com/…/CD00286832.pdf
www.st.com/internet/com/…/CD00271225.pdf
На страничке поддержки: www.st.com/internet/evalboard/product/250367.jsp доступна среда разработки и все исходники в том числе и Кальман.
Удачи!
Замордовали чувака, исчез куда-то
Вы о чем? Кто исчез?
У ST есть демонстрационная платка очень похожая на Вашу
Да, видел. Частично от туда я код собираюсь подергать. Мне хочется 405-ю серию микроконтроллеров освоить. К тому же на этой плате не все стоит, что мне хочется иметь в наборе. но код от туда я безусловно надергаю.
Вот, что имеем на данный момент. Работает под отладчиком, моргает светодиодами. Печаль с BMP похоже подтверждается. Сегодня буду устранять. Попытался залить драйвер USB от 103 камней, сразу обломался. В 405 все по другому. Переписываю код от своего USB драйвера для 103 камня. Сделать это по любому придется, так уж лучше сразу.
Всё, пропал. Видемо афтора флаймозг отаковал.
Всё, пропал. Видемо афтора флаймозг отаковал.
Не лень такие посты писать?
Я работаю над проектом, но у меня есть еще основная работа как бы.
За это время сделал USB, наладил связь c PC. Пишу классы для работы с I2C. На одной шине 5 устройств и хочется , чтобы все работали независимо и не тормозили процессор. Здесь довольно много граблей в реализации. Все выходные отлавливал глюки в своем коде. Вчера вечером вроде пощло дело наконец, но надо еще тестить. Это не быстрый процесс. Гироскоп сейчас шлет данные с частотой 400Hz (в принципе позволяет 800Hz, но необходимость такой частоты пока для меня туманна), аксель выставил на 50Hz. Сейчас удалось добиться, чтобы опрос I2C по этим двум устройствам не занимал более 0,7% процессорного времени, еще 1,5% уходит на обработку USB прерываний. остальное пока в холостую вращается. Сейчас пытаюсь барометр подключить, там свои тараканы - он не умеет, например, работать в continuous mode…
Не лень такие посты писать?
Алекс, не будьте так жестоки!😦 На улице такой дубак!😵 Бедный, полумертвый тролль… Ему же много не надо. Он отогреется и уйдет. 😃
Я вон синичек тоже жалею… Подкидываю им семечек. А подзадержусь если, так они в окошко долбят, мол ты чё жаба, в теплом доме и полстакана семечек бедным синицам не найдешь?
Барометр вроде заработал. Высоту показывает правильно, значит ласты не склеил, когда я его неправильно запаял. Несколько быстрых тестов показывают, что изменение на 0,5м дает расчет по барометру в районе 40 см +/- еще 10см. Расчеты сделал полностью во float значениях. Повторные измерения через несколько минут в той же точке высоты, далеко уходят от предыдущих, где-то +/- 2м. Но если рассматривать значения в пределах нескольких секунд, то дрейф совсем не большой. Температура конечно никак не соответствует окружающей среде, оно меряет что-то там внутри у себя от балды, для того чтобы ввести коррекцию в полином расчета давления. Результаты конечно еще очень сырые и предварительные. Надо будет накапливать и усреднять, а может и фильтрануть каким-нибудь фильтром. Ну это потом, главное, что барометр работает и исправен и на коротких временных интервалах все правдоподобно, а далее математика покажет. Осталось вобщем-то компас только запустить. В ближайшее время займусь эти делом.
Вопрос к знатокам I2C.
Короче задрала проблема, когда slave закушивает шину и SDA давит в 0. Случается спонтанно. Иной раз минут через 5 после запуска, а иногда часами можно ждать и так не вылезает. Судя по логам внутрисхемного отладчика такое происходит, когда слэйв не распознал в цепочке чтения NACK флаг, либо STOP. Соответственно на следующей попытке запустить I2C транзакцию, микроконтроллер валится с ошибкой Ardbitration Lost. И далее уже ничего не помогает. Slave держит SDA в нуле и все тут, только питание пересбрасывать. Вопрос, какие предложения будут по борьбе с этим делом? Сейчас акромя сброса питания всех слэйв устройств вижу только один выход - переключить ножку SCL контроллера в режим выхода с открытым стоком и тактировать до тех пор пока слэйв не отпустит SDA. Как отпустит, слать STOP. Затем еще пару импульсов на SCL для профилактики и мониторинга SDA. Если SDA не уйдет в ноль, значит вроде как отпустило. Какие еще варианты?
задрала проблема, когда slave закушивает шину и SDA давит в 0. Случается спонтанно. Иной раз минут через 5 после запуска, а иногда часами можно ждать и так не вылезает.
С одним и тем-же слейвом вылазит или с любым? Скорость уменьшать не пробывали (если это возможно)?
Или аппаратно шаманить: подвеску менять или 100 Ом на вход проца?
вижу только один выход - переключить ножку SCL контроллера в режим выхода с открытым стоком и тактировать до тех пор пока слэйв не отпустит SDA.
Да. Или переходить к полностью программному формирования I2C. Сам всегда генерил И2Ц программно (не на STMке), поэтому подобных затыков никогда не видел.
С одним и тем-же слейвом вылазит или с любым?
Пока вроде только с гирой такая шняга. Аксель не выказывает такого поведения.
Скорость уменьшать не пробывали (если это возможно)?
Уменьшал до 100кГц. Проявляется существенно меньше. Ждать глюка приходится часами, но он все равно как-нибудь вылезет.
Подвеску не менял. Сейчас стоит 4,7кОм. Наверно попробую увеличить до 10к. Но слабо верится, что в этом проблема.
А 100ом резюк чем поможет? Только тау цепи поднимет, вообще все переглючится.
Есть у меня еще мысль, что где-то в коде START лезет, еще до того как STOP отработал. Буду пытаться локализовать через глобальный запрет прерываний и критические секции. Если таковой мой косяк имеет место, то я его отловлю.
Я, кстати на Меге32 строил синтезаторы частоты на TSA5511. Там I2C. Потеря арбитража вылезала и там иногда. Но там обращение происходит только по нажатой кнопке переключения частоты, а здесь 400 раз в секунду.
Ну ладно, погружаюсь дальше в отлавливание глюков. Пока все датчики не заработают как часы, двигаться дальше не буду.
Пока вроде только с гирой такая шняга.
Может быть конкретный экземпляр мудрит? Попробуйте исключить такие подозрения.
Вроде встречал на форуме людей победивших глюки в I2C для STM. Но кодом не поделились 😉) Если победите - не уподобляйтесь им !
победивших глюки в I2C для STM
Я не думаю, что это глюк STM. Это скорее всего мои тараканы. Вчера убрал все прерывания и тупо по сигналу готовности читал данные с гиры. После чтения давал гарантированную паузу в 10 млс чтобы уж точно состояние STOP было принято. Глюки вроде перестал ловить. Ждал несколько часов, но все в порядке. Так что, скорее всего это мои кривые ручки 😃
Ну пусть не глюк будет, пусть код неустойчивый… Теперь источник помех к линииям притыкать и смотреть - не зависнет ли рекомендовалось 😃
Ну пусть не глюк будет, пусть код неустойчивый…
Нет, это не наш стиль 😉
короче небольшой отчетец.
Падения шины I2C имеют место таки быть. Иногда может раза 2 в минуту глукнуть. А иногда час лежит в тесте и хоть ты тресни, все как часы работает. А самое поганое, что отладчиком отловить такое почти нереально. Запустишь и сидишь ждешь когда оно там разродится…
Сейчас в тестах я непрерывно опрашиваю гиру с частотой 400Hz, Аксель с частотой 50Hz, компас с частотой 15Hz, Давление с вычислением частоты примерно 25Hz, термометр пока даже не пробовал, он пока неактуален.
Выяснены интересные “квази” зависимости глюка I2C:
-
дома этот глюк происходит существенно реже, чем на компе на работе. Здесь я грешу только на питание через USB. Однако контроллер точно не пересбрасывается, и устройства тоже не пересбрасываются, это совершенно точно. Может какая-то помеха рушит I2C. Попробую приподнять и улучшить на плате что-нибудь на эту тему. Может вообще прямо реально запитаю от независимого аккумулятора
-
Сейчас все работает на частоте 400кГц. В STM можно регулировать Duty Cycle , это длительность high и low уровня на шине Ш2С. Можно отношение 1:2 поставить , а можно 9:16. Так вот если я ставлю 9:16 падения раз 5 чаще чем когда я ставлю 1:2. Причем я считал длительности в nsec, оно при любом раскладе в ДШ укладывается.
-
Чаще всего жопа наступает, когда я даю повторный рестарт для чтения байтов. И судя по всему устройство пропускает сигнал рестарта. пробовал STOP затем START , тогда оно пропускает STOP. Это я вообще понимать отказываюсь.
Короче без логического анализатора хрен поймешь, что там происходит. Когда будет не лень, подключу отдельную STMку на эту шину и запишу физику сигналов прямо в риал тайме.
Из хорошего. Я весь мозг сломал при написании алгоритма, как восстанавливать на лету зависшую I2C шину. Результат - вот уже лежит несколько часов, работает, пишет что 5 раз свалилось и восстанавливалось, но все продолжает работать. Гыыы…
Теперь я понимаю, почему
Вроде встречал на форуме людей победивших глюки в I2C для STM. Но кодом не поделились
Я этих людей теперь хорошо понимаю.
Короче результат полностью положительный, тьфу три раза… Теперь, пожалуй, пофиг на сбои I2C, Главное, что в результате имеем непрерывно работающие датчики и само восстанавливающуюся шину I2C в случае чего.
Из печального то, что изначально красивый структурированный по классам код, пока я искал лекарство против I2C, превратился, в кусок непотребного дерьма. Придется это дело на выходных все в порядок приводить и оптимизировать.
И еще, меня печалит странный сдвиг нуля в показаниях магнитометра. Реально оси отдают от +20 до -600 примерно, и где-то между этими показаниями прячется ноль. Никак такого не ожидал. У гиры и акселя такого не наблюдаю. И еще раз в пару секунд с магнитометра может проскакивает значение ну нереальное просто. Например X= -15325 вдруг ни с того ни с сего. Откуда такое на шкале в 2 Гауса? У этого прибора вся шкала от -1024 до + 1024 для 2ух гаусов. Такое ощущение, что магнитная перегрузка. Но в принципе радует то, что такие вещи не чаще 1 раза в сек, и они вообщем-то легко отбрасываются.
Например X= -15325 вдруг ни с того ни с сего. Откуда такое на шкале в 2 Гауса? У этого прибора вся шкала от -1024 до + 1024 для 2ух гаусов.
боюсь вмешиваться, не такой я и программист, но - 15325(10) это 1100010000100011(2), очень симметрично. и если разделить ее по центру (не скажу пополам) то в получится 100011(2) что равно 35(10). а какие другие значения обычно бывают?
принципе радует то, что такие вещи не чаще 1 раза в сек
не вижу повода радоваться в принципе, пока не ясна причина и как далеко она может иметь свое действие
а какие другие значения обычно бывают?
разные, главное, что они переваливают за мин-макс диапазон, и явно не достоверны в этот момент.
пока не ясна причина и как далеко она может иметь свое действие
да, пока не ясна, но это надо визуализацию вектора сделать, иначе там вообще ничего не понятно. Ноль далеко смещен и я не понимаю на вскидку, правильно оно кажет на север или нет. Но оно что-то кажет и примерно, если плату положить, засечь, потом покрутить и опять так же положить, то значения возвращаются к исходным. То есть, явно что-то примерно правильно работает.