Создание собственной системы стабилизации
в 9250 компас прилеплен через жоп i2c
Если я правильно понял Datasheet:
Внутри 9250 есть i2c-мастер, доступный по SPI. Этот мастер может получить доступ к компасу по внутренней шине.
может по этому пути пойти отдельный HAL, эклипс (правда под виндой)…
Внутри 9250 есть i2c-мастер, доступный по SPI. Этот мастер может получить доступ к компасу по внутренней шине.
ну он как-бы сгружает в свои регистры данные с компаса, вопрос стоит ли игра свеч - частоты другие (у гироакселя) в отличии от 6000, да и если к 6050 подключали компас и байпасом и через регистры MPU, то к 6000 я как-то не встречал такого подключения…
может по этому пути пойти отдельный HAL
а я предлагал ! 😁
если серьезно, то малопродуктивный путь. Я уже писал, что вероятней всего новые режимы и более устойчивая ИНС будут “врастать” внутрь нутекса, игнорируя родные процедуры АПМ.
А если делать отдельный ХАЛ, то получим тот же АПМ2.5, но на 32-х битной платформе.
Внутри 9250 есть i2c-мастер, доступный по SPI. Этот мастер может получить доступ к компасу по внутренней шине.
ну он как-бы сгружает в свои регистры данные с компаса
это логично, ведь разработчики планировали использовать МПУ для полной обработки данных ИНС во внутреннем проце.
в отличии от 6000
а при чем тут 6000?
MPU-9250 == MPU-6500 + AK8963.
это логично, ведь разработчики планировали использовать МПУ для полной обработки данных ИНС во внутреннем проце.
так почему не сделать сразу как гироаксель???
а при чем тут 6000?
в 6500 корпус меньше и увеличена частота акселя с 1 кГц до 4кГц - больше сходу не вижу отличий…
и AK8963 имеет свой SPI - на кой его вешать на i2c?
новые режимы и более устойчивая ИНС будут “врастать” внутрь нутекса, игнорируя родные процедуры АПМ.
а вот дийдроносы так не считают - они всё хотят запихнуть в библиотеки AP - тот же EKF у них уже в библиотеках и доступен для коптеров, но не доступен верталётам и машинкам - самолёты незнаю…
у них какой-то раздрай - незнают в какую платформу удариться: то-ли пиксхавк то-ли под линукс прыгнуть… наттикс и пикс4 фирмварину запихнуть тоже в библиотеки хотят…а тут ещё маплепилот сбоку, вроде как под натиксом хотят тестить…
может по этому пути пойти отдельный HAL, эклипс (правда под виндой)…
HAL все равно надо делать свой, а вот будет ли он под NuttX или свой полностью - это вопрос.
Из этого всего, меня пугает сборка самого Нутекса и иже с ним. А так же то, что тут смесь трех бегемотов: NuttX, PX4Firmware, ArduCopter - каждый проект по отдельности достаточно сложные, что уж говорить про солянку из трех проектов.
Ну и казалось что вот оно светлое будущее, отладчик и все дела - а вот хрен вам, print_f - наше всё. )))
Ну и казалось что вот оно светлое будущее, отладчик и все дела - а вот хрен вам, print_f - наше всё. )))
Проект в IAR - там отладчик точно работает.
Все мучения с эклипсом на какой платформе происходят (Mac/Win/Linux)?
Пингвиндовс 😃 под виндой я эклипс настраивал но под маплепилот и аероквад…
и AK8963 имеет свой SPI - на кой его вешать на i2c?
Я про то, что в одном корпусе MPU-9250 живут MPU-6500 + AK8963 (без SPI)
я понимаю что они там живут - вопрос как? не пришлось бы костыли приделывать для работы?
imu то сделать не проблема, да и f4by зацепить для проверки тоже, spi свободный есть…
Все мучения с эклипсом на какой платформе происходят (Mac/Win/Linux)?
Ubuntu 13.10 64Bit
Как я уже писал, OpenOCD и GDB работают из командной строки. А вот когда запускаешь отладку из под Эклипса, запускается GDB, выполняются какие то команды (инициализируется), потом Эклипс выдает ошибку NullPointerException и все, все чего то ждут. При этом в консоли GDB, можно ввести команду “continue” и плата продолжает работу, стартует NuttX и дальше, но что толку - Эклипс не дает ничего сделать (разве что прибить GDB дает).
не, я эту картинку уже смотрел - ладно надо покупать и баловаться 😃
При этом в консоли GDB, можно ввести команду “continue” и плата продолжает работу, стартует NuttX и дальше, но что толку - Эклипс не дает ничего сделать (разве что прибить GDB дает).
defconfig менял? swd-onli? а то наттиксу подавай полный jtag…
я понимаю что они там живут - вопрос как? не пришлось бы костыли приделывать для работы? imu то сделать не проблема, да и f4by зацепить для проверки тоже, spi свободный есть…
Да накой он тебе сдался этот 9250?
Судя по схеме, компас просто распаян внутри корпуса и подключен к шине I2C - а шина сама выведена на улицу, а ее можно подключить к процу. Да и MPU можно легко настроить на забор данных компаса, а значения забирать уже по SPI через регистры.
Да и MPU можно легко настроить на забор данных компаса, а значения забирать уже по SPI через регистры.
вот этого и хочу 😃
миниатюризация и у меня два 405rgt6 без дела валяюццо…
defconfig менял? swd-onli? а то наттиксу подавай полный jtag…
Ты уже спрашивал, не менял я ничего. Я же говорю, если GDB запустить из консоли, то все работает, остановка, запуск, регистры посмотреть, где по коду остановка произошла (глубже я не копал, потому как не умею пользоваться GDB-)
вот этого и хочу
Посмотри код MultiWii там так и сделано.
ладно надо завязывать и делать релизную версию - сегодня АЦП проверю, если пойдёт выкину в гит - блин там с этими номерами портов каша начинается как и в маплепилоте ( типа АЦП от 100-го и до забора) и сцуко прописаны в нескольких местах…
2 Sir Alex
Проблема может быть в несовместимости версий GDB и плагина C/C++ GDB Hardware Debugger.
Стек трейс может есть при падении?
Стек трейс может есть при падении?
На экран не выдается, только ошибка NullPointerException.
А логи Eclipse я пока не искал. Вечером посмотрю.
Возможно что и не совместимость, у меня стоит самый свежий toolchain 4.7
в 6500 корпус меньше и увеличена частота акселя с 1 кГц до 4кГц - больше сходу не вижу отличий…
А я не вижу - принципиальной разницы… По ходу моих изысканий пришел к выводу, что все эти “частоты опроса” особо не нужны, так как, даже имея массив из данных (больше или меньше) отфильтровать их не получается … 😦
В последнем варианте своей ИНС, поставил частоту опроса аж 100 Гц (ради эксперимента) - работает не хуже и не лучше чем 1000 Гц… так и оставлю…
Производители похоже клепают эти чипы как “пазлы” , ничего не меняя в принципе, несомненное удобство только в том что тупо меньше корпусов размещать и паять…
Проблема может быть в несовместимости версий GDB и плагина C/C++ GDB Hardware Debugger. Стек трейс может есть при падении?
Стек в конце поста, судя по всему эклипс не может проинициализироваться, какие то пути не находит. Тут надо сделать одно отступление. Исходники которые поднимаются в проект - это Ардукоптер, а вот исходников NuttX и PX4Firmware в проекте нету.
Кроме того, для запуска GDB, указывается firmware.elf который генерируется после make и в проекте его как бы то же нет. Возможно что это все и сбивает с толку Эклипс.
java.lang.NullPointerException
at org.eclipse.cdt.debug.internal.core.model.CDebugTarget.getSourceLookupPath(CDebugTarget.java:1889)
at org.eclipse.cdt.debug.internal.core.model.CDebugTarget.getSourceLookupPath(CDebugTarget.java:1910)
at org.eclipse.cdt.debug.internal.core.model.CDebugTarget.getSourceLookupPath(CDebugTarget.java:1910)
at org.eclipse.cdt.debug.internal.core.model.CDebugTarget.setSourceLookupPath(CDebugTarget.java:1863)
at org.eclipse.cdt.debug.internal.core.model.CDebugTarget.initializeSourceLookupPath(CDebugTarget.java:385)
at org.eclipse.cdt.debug.internal.core.model.CDebugTarget.initialize(CDebugTarget.java:286)
at org.eclipse.cdt.debug.internal.core.model.CDebugTarget.<init>(CDebugTarget.java:279)
at org.eclipse.cdt.debug.core.CDIDebugModel$1.run(CDIDebugModel.java:127)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2326)
at org.eclipse.cdt.debug.core.CDIDebugModel.newDebugTarget(CDIDebugModel.java:132)
at org.eclipse.cdt.debug.core.CDIDebugModel.newDebugTarget(CDIDebugModel.java:230)
at org.eclipse.cdt.debug.gdbjtag.core.GDBJtagLaunchConfigurationDelegate.launch(GDBJtagLaunchConfigurationDelegate.java:70)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:855)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:704)
at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1047)
at org.eclipse.debug.internal.ui.DebugUIPlugin$7.run(DebugUIPlugin.java:1133)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
А вот лог работы GDB из под эклипса:
19-gdb-set confirm off
19^done
(gdb)
20-gdb-set width 0
20^done
(gdb)
21-gdb-set height 0
21^done
(gdb)
22-interpreter-exec console echo
22^done
(gdb)
23-gdb-show prompt
23^done,value="(gdb) "
(gdb)
24-gdb-set new-console on
24^error,msg="No symbol table is loaded. Use the \"file\" command."
(gdb)
25 symbol-file /home/sa/mpng/PX4Firmware/Build/px4fmu-v1_APM.build/firmware.elf
&"symbol-file /home/sa/mpng/PX4Firmware/Build/px4fmu-v1_APM.build/firmware.elf\n"
symbol-file /home/sa/mpng/PX4Firmware/Build/px4fmu-v1_APM.build/firmware.elf
25^done
(gdb)
26 target remote :3333
&"target remote :3333\n"
target remote :3333
=thread-group-started,id="i1",pid="42000"
=thread-created,id="1",group-id="i1"
~"0x00000000 in ?? ()\n"
0x00000000 in ?? ()
*stopped,frame={addr="0x00000000",func="??",args=[]},thread-id="1",stopped-threads="all"
26^done
(gdb)
27 info proc
&"info proc\n"
&"Undefined info command: \"proc\". Try \"help info\".\n"
27^error,msg="Undefined info command: \"proc\". Try \"help info\"."
(gdb)
28 info program
&"info program\n"
~"Debugging a target over a serial line.\n"
~"Program stopped at 0x0.\n"
~"Type \"info stack\" or \"info registers\" for more information.\n"
28^done
(gdb)
29 info threads
&"info threads\n"
~" Id Target Id Frame \n"
~"* 1 Remote target 0x00000000 in ?? ()\n"
29^done
(gdb)
30-stack-info-depth
30^done,depth="2"
(gdb)
31-stack-list-frames 0 2
31^done,stack=[frame={level="0",addr="0x00000000",func="??"},frame={level="1",addr="0x00000000",func="??"}]
(gdb)
32-data-list-changed-registers
32^done,changed-registers=["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25"]
(gdb)
33 info sharedlibrary
&"info sharedlibrary\n"
~"No shared libraries loaded at this time.\n"
33^done
(gdb)