Еще одна попытка управления джойстиком, или USB -> PPM конвертор с преферансом и гейшами.

Tahorg
Grumman351:

Здравствуйте Сергей. Делаю свой проект на 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/

kak-dela007:

Что-то не могу разобраться с bin файлом при создании проекта. Когда заходишь в Sketch -> Settings, и указываешь путь в свободную папку, где должен быть проект, кнопку ОК не срабатывает, видимо нужен уже готовый bin файл. А где его взять?

  • и опять разобрался, надо было делать это без нажатия Connect
    Но bin файл в папке так и не появился. Есть только xml

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

Grumman351
Tahorg:

В STMCubeMX показываеются ноги толератные к 3.3 и к 5 входным вольтам. Я пробовал к FrSky модулю, Taranis входу и к EzUHF RLS. Проблем не было.

Но вообще для PPM выхода

GPIO_InitStruct.Pull = GPIO_PULLUP;

github.com/Iezious/rcjoy/tree/master/RCJoy - тут лежит старая версия под 407, правда не под куб а CMSIS/

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

Здравствуйте, спасибо за ответ. Поменял ногу на на не подключённую к светодиоду на плате дискавери - и всё заработало. Видимо по токоотдаче нога не выдержала.

kak-dela007

Обо всей истории по порядку:
Первый раз прошил, настроил триммеров, кнопок… Все классно, но один триммер почему-то в одну сторону давал 3х кратное значение, а в другую- все нормально. Позже Live data перестала работать (в блоке джойстика значения перестали бегать, и соответственно - в микшерах и триммерах). На газ поставил инвертор, он что-то тоже вырубился потом. Может все дело в том, что не выравнял значения с теми что во флеши уже были… пока не понятно. Обнаружил что моя версия ПО называется “RCJoy.P429.v.0.9.3.zip” - на конце цифра 3. А сейчас с Гитхаба качается то же, только на конце 2. Может я как-то раз поторопился и скачал тестовую версию?
Прошил сейчас свежескаченной, с двойкой на конце.
На этапе настройки джойстика выдает вот такую штуку:

Чего это он хочет?

Tahorg

версии не совместимые, программа и прошивка должны быть из одного пакета.

Говорит, что проблема с распознаванием джойстика - суммарное количество бит должно делиться на 8.

Вообще на гитхабе есть работающие файлы джойстиков, но пока не выложен код, который их поключает в программе. Можно только руками править xml файл.

И еще - после всех перемен схемы, после заливки, всегда надо проверять значения переменных. Я пока просто не придумал, как это сделать умно, поэтому все тупо,п поэтому могут не так работать тримеры, инверторы, мапперы и прочее. Всегда проверять, что записано в переменных. Сам иногда забываю и удивляюсь, почему тот или иной канал сдох 8-/.

Кроме того - все можно посмотреть в отладочной секции прямо на экране платы - ВМЕСТЕ с переменными. Открываем меню платы синей кнопкой, идем в дебаг, выбираем блок и видим все текущие вход, выход и коэфициенты (что кстати важно, в программе мы видим коэфициенты ДЕФОЛТНЫЕ, а на плате ТЕКУЩИЕ). Кстати, их прямо по месту можно править, если они неверные.

Grumman351

Сергей здравствуйте, а можете какое то видео полёта с джойстиком выложить. Или как ваша система на земле работает. Как рули на джойстик реагируют. Спасибо.

Tahorg
Grumman351:

Сергей здравствуйте, а можете какое то видео полёта с джойстиком выложить. Или как ваша система на земле работает. Как рули на джойстик реагируют. Спасибо.

есть такое :

Правда тут старая плата и джойстик не фонтан. Полетных нет - все никак не дособеру коптер с камерой.

kak-dela007

Вообще все это мелочи по сравнению с проделанной работой!) Для пользователя сделано все очень удобно, и возможности огромны. Приятно смотреть, когда на экране работают все кнопки и оси твоего джойстика x52, зная что можешь подключить их к любому каналу PPM.

Tahorg:

версии не совместимые, программа и прошивка должны быть из одного пакета.

Странно, у меня с прошивкой 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”. Причем, хатка выдает правильные значения. Пробовал и без хатки - на другие кнопки триммеры выводить - результат тот же. Т.е. похоже не в джойстике дело. Да, наверно это важно, это не сразу после первой загрузки конфигурации случилось, а только после последующих, когда стал обновлять уже.

Tahorg

Вроде все правильно.

Тут есть нюанс, который слабо прояснен - про значения.

Есть значения оси с джойстика, они могут быть любые. Например у Х52 рукоятка 10 бит и будет 0…1024, а газ 8 бит и будет 0…255.

Далее оси джойстика всегда конвертятся в значения типа “ось”. Ось всегда 0…1000, вне зависимости от размерности входящих осей - все ремапится на пространство 0…1000. Все инверторы, триммеры, мапперы и прочая математика делается над значением типа “ось” и всегда остается в диапазоне 0…1000.

Далее, в выходном блоке ППМ ось конвертится в ППМ сингал. По стандарту ППМ - это 1000-2000, но он настраивается в меню модели, можно подправить (например мультик хотел оси 920…2120 с центром 1520).

Поэтому в блоке джойстика - реальные значения, считанные с джойстика. В блоках 0…1000. В ППМ - выходной ППМ сигнал, в зависимости от настроек модели.

kak-dela007
Tahorg:

например мультик хотел оси 920…2120 с центром 1520

Да, как раз задавался этим вопросом, ну теперь все ясно, спасибо! У меня APM, там от 980 до 1900 - что-то вроде этого, значит настрою в меню модели, когда буду все собирать воедино.
Вот как бы триммер еще настроить чтоб корректно работал, про который выше писал - было б вообще идеально. Побольше бы мне знаний в программировании - полез бы в код. А так - могу только констатировать факт.

kak-dela007

Настроил классную конфигурацию, собирался тут описать, но почему-то очередной раз проект отказался загружаться… Выдает ошибку “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.

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

Tahorg

файл конфигурации мне пошлите в личку

kak-dela007

Все заработало, и файл стал загружаться, спасибо!
Правда сначала когда загрузил конфигурацию, считал не правильно, центр почему-то в PPM-Mapper -е соскочил на 1000 (вместо 1500, которые были сохранены на флеш), и не помогал сброс параметров в EEP Manager -е. Но когда зашел во второй раз в ГУИ, все начало считаться как надо!

Теперь созрел следующий вопрос: можно ли как-то копировать и вставлять модели (или фрагменты конфигурации)? Чтобы объединить, например, 2 разных проекта. Или просто чтобы с ноля не создавать конфиг новой модели, за основу брать уже созданную?

Tahorg
kak-dela007:

Теперь созрел следующий вопрос: можно ли как-то копировать и вставлять модели (или фрагменты конфигурации)? Чтобы объединить, например, 2 разных проекта. Или просто чтобы с ноля не создавать конфиг новой модели, за основу брать уже созданную?

Пока нет, не придумал как это сделать умно.

hax0r

После подключения к плате с последней прошивкой и попытке включить Board->Live data ничего не происходит. И после этого при попытке законнектиться с платой появляется ошибка Communication error или Unable to connect.
При рестарте платы все работает ровно до вышеописанного момента.
Прошивку перезаливал 2 раза. Пробовал разные конвертеры FT232R и CP2102.

Tahorg

Последняя - это 0.93А, там как раз этот баг правился.

hax0r

RCJoy.P429V093A.zip
Этот баг присутствует.
Видимо, не доправился…

Tahorg

Пробую воспроизвести - не выходит. У тестовой группы все работает. Может по ошибке не ту прошивку залили?

hax0r

У меня на компьютере единственный файл прошивки. Название архива написал выше. Скачал с главной страницы вики на гитхабе.
Баг проявился не сразу. Не могу точно сказать какое действие к нему приводит, но теперь ошибка вылазит стабильно. Добавлял джой Thrustmaster HOTAS X, потом создал модель, настроил, но работало не правильно. Лайв дата в блоке джоя отображалась верно, а в остальных блоках - нет, как и на плате. Все делал по инструкции из вики на гитхабе. Попробовал сбросить значения переменных, в том числе и на плате, потом пробовал создать модель заново. Потом неожиданно перестала отображаться лайв дата и начала вылазить ошибка.

Если скажете как я могу помочь в поисках бага, с удовольствием помогу.

Tahorg

Попробуйте локализовать проблему.

  1. Полностью новый проект, только джойстик и выход, 1 ось, проверить лайв. После перезагрузки тоже.
  2. Добавить преобразователи постепенно, чтоб понять на каком проблема.