Еще одна попытка управления джойстиком, или USB -> PPM конвертор с преферансом и гейшами.
Здравствуйте Сергей. Делаю свой проект на STM32F407-discovery. Поднял USB-HOST, поженил джойстик Logitech с платой, сделал PPM генератор. При подключении FR SKY модуля спалил ногу микроконтроллера по которой гнал PPM сигнал. С удивлением обнаружил на модуле, на входе PPM напряжение 3,3 вольта. У вас на схеме нога микроконтроллера на прямую идёт на PPM вход на модуле.
Подскажите пожалуйста - вы в программе какую то подтяжке на ноге делали ? Должно ли быть напряжение на PPM входе в/ч модуля ? Спасибо.
Здравствуйте Сергей. Делаю свой проект на STM32F407-discovery. Поднял USB-HOST, поженил джойстик Logitech с платой, сделал PPM генератор. При подключении FR SKY модуля спалил ногу микроконтроллера по которой гнал PPM сигнал. С удивлением обнаружил на модуле, на входе PPM напряжение 3,3 вольта. У вас на схеме нога микроконтроллера на прямую идёт на PPM вход на модуле.
Подскажите пожалуйста - вы в программе какую то подтяжке на ноге делали ? Должно ли быть напряжение на PPM входе в/ч модуля ? Спасибо.
В STMCubeMX показываеются ноги толератные к 3.3 и к 5 входным вольтам. Я пробовал к FrSky модулю, Taranis входу и к EzUHF RLS. Проблем не было.
Но вообще для PPM выхода
GPIO_InitStruct.Pull = GPIO_PULLUP;
github.com/Iezious/rcjoy/tree/master/RCJoy - тут лежит старая версия под 407, правда не под куб а CMSIS/
Что-то не могу разобраться с bin файлом при создании проекта. Когда заходишь в Sketch -> Settings, и указываешь путь в свободную папку, где должен быть проект, кнопку ОК не срабатывает, видимо нужен уже готовый bin файл. А где его взять?
- и опять разобрался, надо было делать это без нажатия Connect
Но bin файл в папке так и не появился. Есть только xml
Второй бин появится после компиляции файла настроек, если он пройдет проверку. Ео заливать лучше уже самой программой.
В STMCubeMX показываеются ноги толератные к 3.3 и к 5 входным вольтам. Я пробовал к FrSky модулю, Taranis входу и к EzUHF RLS. Проблем не было.
Но вообще для PPM выхода
GPIO_InitStruct.Pull = GPIO_PULLUP;
github.com/Iezious/rcjoy/tree/master/RCJoy - тут лежит старая версия под 407, правда не под куб а CMSIS/
Второй бин появится после компиляции файла настроек, если он пройдет проверку. Ео заливать лучше уже самой программой.
Здравствуйте, спасибо за ответ. Поменял ногу на на не подключённую к светодиоду на плате дискавери - и всё заработало. Видимо по токоотдаче нога не выдержала.
Обо всей истории по порядку:
Первый раз прошил, настроил триммеров, кнопок… Все классно, но один триммер почему-то в одну сторону давал 3х кратное значение, а в другую- все нормально. Позже Live data перестала работать (в блоке джойстика значения перестали бегать, и соответственно - в микшерах и триммерах). На газ поставил инвертор, он что-то тоже вырубился потом. Может все дело в том, что не выравнял значения с теми что во флеши уже были… пока не понятно. Обнаружил что моя версия ПО называется “RCJoy.P429.v.0.9.3.zip” - на конце цифра 3. А сейчас с Гитхаба качается то же, только на конце 2. Может я как-то раз поторопился и скачал тестовую версию?
Прошил сейчас свежескаченной, с двойкой на конце.
На этапе настройки джойстика выдает вот такую штуку:
Чего это он хочет?
версии не совместимые, программа и прошивка должны быть из одного пакета.
Говорит, что проблема с распознаванием джойстика - суммарное количество бит должно делиться на 8.
Вообще на гитхабе есть работающие файлы джойстиков, но пока не выложен код, который их поключает в программе. Можно только руками править xml файл.
И еще - после всех перемен схемы, после заливки, всегда надо проверять значения переменных. Я пока просто не придумал, как это сделать умно, поэтому все тупо,п поэтому могут не так работать тримеры, инверторы, мапперы и прочее. Всегда проверять, что записано в переменных. Сам иногда забываю и удивляюсь, почему тот или иной канал сдох 8-/.
Кроме того - все можно посмотреть в отладочной секции прямо на экране платы - ВМЕСТЕ с переменными. Открываем меню платы синей кнопкой, идем в дебаг, выбираем блок и видим все текущие вход, выход и коэфициенты (что кстати важно, в программе мы видим коэфициенты ДЕФОЛТНЫЕ, а на плате ТЕКУЩИЕ). Кстати, их прямо по месту можно править, если они неверные.
Сергей здравствуйте, а можете какое то видео полёта с джойстиком выложить. Или как ваша система на земле работает. Как рули на джойстик реагируют. Спасибо.
Сергей здравствуйте, а можете какое то видео полёта с джойстиком выложить. Или как ваша система на земле работает. Как рули на джойстик реагируют. Спасибо.
есть такое :
Правда тут старая плата и джойстик не фонтан. Полетных нет - все никак не дособеру коптер с камерой.
Вообще все это мелочи по сравнению с проделанной работой!) Для пользователя сделано все очень удобно, и возможности огромны. Приятно смотреть, когда на экране работают все кнопки и оси твоего джойстика x52, зная что можешь подключить их к любому каналу PPM.
версии не совместимые, программа и прошивка должны быть из одного пакета.
Странно, у меня с прошивкой v.0.9.3 - все капризничало, не хотела работать Live data, и GUI вылетала при каждой перезагрузке платы.
Когда прошил v.0.9.2 - все заработало чудесно, но только с GUI от от v.0.9.3, а в GUI от v.0.9.2 выдает вот эту самую ошибку с битами.
Чем эти версии вообще отличаются? Хотя, сам я вряд ли в этом разберусь, как и в правке xml файла.
Еще возможно баг обнаружил, а может в настройках что-то не так:
Когда делаю Increase в триммере по Aelerons, то значение на выходе увеличивается почему-то не на указанное, а на произвольное - от 5-ти до 10-ти кратного примерно. При этом, все другие триммеры работают нормально. В моем конфиге триммеры управляются с хатки, через блок Hat-Battons, плюс сделал ее отключаемой, поставил логические кнопки, которые включаются только при одном положении колеса родных флай-мод x52, т.е. подключил их к каналу “Buttons 1 28”. Причем, хатка выдает правильные значения. Пробовал и без хатки - на другие кнопки триммеры выводить - результат тот же. Т.е. похоже не в джойстике дело. Да, наверно это важно, это не сразу после первой загрузки конфигурации случилось, а только после последующих, когда стал обновлять уже.
Вроде все правильно.
Тут есть нюанс, который слабо прояснен - про значения.
Есть значения оси с джойстика, они могут быть любые. Например у Х52 рукоятка 10 бит и будет 0…1024, а газ 8 бит и будет 0…255.
Далее оси джойстика всегда конвертятся в значения типа “ось”. Ось всегда 0…1000, вне зависимости от размерности входящих осей - все ремапится на пространство 0…1000. Все инверторы, триммеры, мапперы и прочая математика делается над значением типа “ось” и всегда остается в диапазоне 0…1000.
Далее, в выходном блоке ППМ ось конвертится в ППМ сингал. По стандарту ППМ - это 1000-2000, но он настраивается в меню модели, можно подправить (например мультик хотел оси 920…2120 с центром 1520).
Поэтому в блоке джойстика - реальные значения, считанные с джойстика. В блоках 0…1000. В ППМ - выходной ППМ сигнал, в зависимости от настроек модели.
например мультик хотел оси 920…2120 с центром 1520
Да, как раз задавался этим вопросом, ну теперь все ясно, спасибо! У меня APM, там от 980 до 1900 - что-то вроде этого, значит настрою в меню модели, когда буду все собирать воедино.
Вот как бы триммер еще настроить чтоб корректно работал, про который выше писал - было б вообще идеально. Побольше бы мне знаний в программировании - полез бы в код. А так - могу только констатировать факт.
Настроил классную конфигурацию, собирался тут описать, но почему-то очередной раз проект отказался загружаться… Выдает ошибку “Unhandled exception occurred you application”, и так далее. Вот детали сообщения:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.************** Exception Text **************
System.ArgumentException: An item with the same key has already been added.
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at Tahorg.RCJoyGUI.Data.FRAMMapper.Register(IFRAMUser user)
at Tahorg.RCJoyGUI.ProgrammingPanels.ConstantDesignPanel.Initialized()
at Tahorg.RCJoyGUI.DesignPanel.LinkPanel(DraggableElement el, Boolean notMove)
at Tahorg.RCJoyGUI.DesignPanel.CreatePanel(XName panelName, XElement xElement)
at Tahorg.RCJoyGUI.DesignPanel.Deserialize(XElement data)
at Tahorg.RCJoyGUI.fmMain.LoadFile(String fname)
at Tahorg.RCJoyGUI.fmMain.openToolStripMenuItem_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
RCJoyGUI
Assembly Version: 0.1.5458.33761
Win32 Version: 0.1.*
CodeBase: file:///E:/Софт/Коптер/Джойстик/(03)Преф_и_Гейши_RCJoy.P429.v.0.9.3/RCJoyGUI.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml.Linq
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml.Linq/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.Linq.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.For example:
<configuration>
<system.windows.forms jitDebugging=“true” />
</configuration>When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
Откат системы не помог.
Самое интересное, что конфигурация залилась во флеш, и работает - на дисплее триммеры и переменные высвечиваются
файл конфигурации мне пошлите в личку
Оправил
Версия 0.93А - исправлена проблема с коннектом и зарузкой храгимых констант.
Все заработало, и файл стал загружаться, спасибо!
Правда сначала когда загрузил конфигурацию, считал не правильно, центр почему-то в PPM-Mapper -е соскочил на 1000 (вместо 1500, которые были сохранены на флеш), и не помогал сброс параметров в EEP Manager -е. Но когда зашел во второй раз в ГУИ, все начало считаться как надо!
Теперь созрел следующий вопрос: можно ли как-то копировать и вставлять модели (или фрагменты конфигурации)? Чтобы объединить, например, 2 разных проекта. Или просто чтобы с ноля не создавать конфиг новой модели, за основу брать уже созданную?
Теперь созрел следующий вопрос: можно ли как-то копировать и вставлять модели (или фрагменты конфигурации)? Чтобы объединить, например, 2 разных проекта. Или просто чтобы с ноля не создавать конфиг новой модели, за основу брать уже созданную?
Пока нет, не придумал как это сделать умно.
После подключения к плате с последней прошивкой и попытке включить Board->Live data ничего не происходит. И после этого при попытке законнектиться с платой появляется ошибка Communication error или Unable to connect.
При рестарте платы все работает ровно до вышеописанного момента.
Прошивку перезаливал 2 раза. Пробовал разные конвертеры FT232R и CP2102.
Последняя - это 0.93А, там как раз этот баг правился.
RCJoy.P429V093A.zip
Этот баг присутствует.
Видимо, не доправился…
Пробую воспроизвести - не выходит. У тестовой группы все работает. Может по ошибке не ту прошивку залили?
У меня на компьютере единственный файл прошивки. Название архива написал выше. Скачал с главной страницы вики на гитхабе.
Баг проявился не сразу. Не могу точно сказать какое действие к нему приводит, но теперь ошибка вылазит стабильно. Добавлял джой Thrustmaster HOTAS X, потом создал модель, настроил, но работало не правильно. Лайв дата в блоке джоя отображалась верно, а в остальных блоках - нет, как и на плате. Все делал по инструкции из вики на гитхабе. Попробовал сбросить значения переменных, в том числе и на плате, потом пробовал создать модель заново. Потом неожиданно перестала отображаться лайв дата и начала вылазить ошибка.
Если скажете как я могу помочь в поисках бага, с удовольствием помогу.