Jump to content

FreeJoy. OpenSource контроллер на STM32


Recommended Posts

Да, так и есть.

Скрытый текст

Вправо - передачи 5 и 6 (зажата вправо+ рычаг вверх5 или вниз6), вправо + экстремально вправо - передачи 7 и 8 (зажата вправо+ экстремально вправо+ рычаг вверх7 или вниз8)

PS: Купил гнёзда на 26 пинов, вот думаю подпаять все провода от микроконтроллера к ним.

Заодно будет удобно к ардуино леонардо подключать, распиновку сделаю ту же самую :)

Link to post
Share on other sites
2 часа назад, s60team сказал:

PS: Купил гнёзда на 26 пинов, вот думаю подпаять все провода от микроконтроллера к ним.

Заодно будет удобно к ардуино леонардо подключать, распиновку сделаю ту же самую :)

Ты с микриками своими определись. Если в крайнем правом положении у тебя нажимаются микрики вправо и экстремально вправо, то ничего не получится. Надо делать, что бы микрик вправо нажимался только в положении вправо. А в положении экстремально вправо микрик вправо отжимался.

Link to post
Share on other sites

Пока настроил: 6 передач. Опять вправо жмёшь, отключается вправо, а экстремально вправо работает.

Колхоз конечно, но и так сойдёт!

 

Я нашёл ещё модули на Али, которые хотелось бы увидеть в FreeJoy:

  • MCP23017    16 кнопок, i2c, до 8штук (128 кнопок) Особенно этот
  • MPR121        12 сенсорных кнопок, i2c, до 3штук (48 кнопок) и этот
  • CD7HC4067  16 кнопок, i2c, до 4штук (64 кнопки) может также использоваться как 16 Аналоговых входов или вывод 16 светодиодов
  • PCF8575       16 кнопок, i2c, до 8штук (128 кнопок)
Link to post
Share on other sites
1 час назад, s60team сказал:

Я нашёл ещё модули на Али

Все они подключатся по I2C протоколу, который является достаточно медленным. При подключении большого количества кнопок контроллер может начать тормозить. FreeJoy поддерживает подключение двух видов регистров по быстрому интерфейсу SPI. Подключение любого количества кнопок по которому (вплоть до максимального) не вызывает никаких проблем.

  • Confused 1
  • Sad 1
Link to post
Share on other sites
19 часов назад, Johnet сказал:

Все они подключатся по I2C протоколу, который является достаточно медленным.

Это в контексте данного контроллера или в принципе?

  • Upvote 1
Link to post
Share on other sites
3 минуты назад, 3BAG_Orion33 сказал:

Это в контексте данного контроллера или в принципе?

Впринципе. Оказалось, что i2c почти в два раза медленнее, чем SPI, но проще (2 провода вместо 4х).

Каждый день узнаю что-то новое 😀

Link to post
Share on other sites
3 часа назад, s60team сказал:

Впринципе. Оказалось, что i2c почти в два раза медленнее, чем SPI, но проще (2 провода вместо 4х).

Каждый день узнаю что-то новое 😀

Если не привязываться к проекту, то типовая частота тактирования I2C от 100КГц до 400КГц. SPI обычно работает на частотах от 1МГц и выше (10МГц не предел).

В нашем проекте SPI для датчиков примерно в 3 раза быстрее по частоте, чем I2C и ещё он требует меньше процессорного времени (у нас большая часть опроса датчиков идёт без участия процессора, через DMA). Конкретно сдвиговые регистры работают не через аппаратный SPI, а с помощью bit-bang по причине того, что линия данных сдвиговых регистров не отпускает шину и будет мешать другим SPI устройствам. Поэтому сдвиговые регистры у нас едят процессорное время и в целом получается, что примерно одно на другое выходит с I2C.

  • Thanks 1
  • Upvote 1
Link to post
Share on other sites
23 часа назад, s60team сказал:

Впринципе. Оказалось, что i2c почти в два раза медленнее, чем SPI, но проще (2 провода вместо 4х).

В наших проектах мы используем исключительно i2c, на которой сидят контроллеры PMIC, несколько расширителей i2c, которые работают как на вход, так и на выход, причем на вход без прерывания, а по регулярному опросу с частотой около 100Гц, через нее же управляются все аудио и видео кодеки, часы реального времени. И как-то ничего не тормозит. Правда, процессор там IMX6 😂 Кстати, i2c очень часто может работать и на 1МГц.

Если интерфейс реализован аппаратно, а не программно (через GPIO), то он практически не требует процессорного времени: обработка регистров происходит по прерыванию, а дальше контроллер интерфейса работает самостоятельно.

 

20 часов назад, WG_Magners сказал:

линия данных сдвиговых регистров не отпускает шину и будет мешать другим SPI устройствам.

Да, мы тоже сталкивались с таким поведением на одной микросхеме видеозахвата. Решение - использовать мультиплексор, управляемый сигналом CS#.

Программный, или как ты выразился, bit-bang я реализовывал на Atmega8, тогда для своего проекта я не заметил критичного потребления процессора.

Edited by 3BAG_Orion33
  • Like 1
  • Thanks 1
Link to post
Share on other sites
3 часа назад, 3BAG_Orion33 сказал:

Программный, или как ты выразился, bit-bang я реализовывал на Atmega8, тогда для своего проекта я не заметил критичного потребления процессора

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

На паре осей и десятке кнопочек контроллер естественно не напрягается, но если нагрузить по полной, то уже краежопить ресурсы приходится) 

Понятно, что тут оптимизация кода ещё имеет большое значение, но я уже начинаю думать, что некоторые функции надо выкидывать, чтоб немного подразгрузить контроллер.

 

P.S. Простой пример чем у нас можно загрузить контроллер: чтобы добиться такой работы АЦП как сейчас у нас почти вся периферия отрубается на время преобразования. Для одной оси делается несколько сэмплов и усредняется для увеличения итогового разрешения. А если таких осей у нас 8, то контроллер будет этим заниматься почти миллисекунду, если мне не изменяет память. А период полного цикла чтения и обработки осей + чтения кнопок без обработки у нас 2мс)

Edited by WG_Magners
  • Like 2
Link to post
Share on other sites
12 минут назад, 3BAG_Orion33 сказал:

Когда-то 100герцовые мышки считались верх мажорством) А это целых 10мс.

6 минут назад, WG_Magners сказал:

 

Ну так люди эволюционируют потихоньку - сейчас если на оси разрешение меньше 12 бит, то это не точность, а 20мс это уже критичная задержка))

Link to post
Share on other sites

Ещё один тип мёртвой зоны придумал. (Хотя, конечно, наверняка всё было придумано ещё до меня).

a) В обычном состоянии никакой мёртвой зоны нет.

b) Если нажата некая (выбранная в конфигураторе) кнопка (X), то ось "возвращается в центр". Скажем, если ось в диапазоне [0..1023], то логически возвращается 511 или 512, даже если физически ось совсем не там.

c) состояние b) продолжается, пока ось физически не окажется на существенном расстоянии от положения, в котором она была в момент нажатия кнопки X.

 

Идея - применить для DCS F/A-18. Чтобы включить автопилот, нужно, чтобы джойстик был точно в центре. Но мягкие кулачки у джойстика делают эту задачу проблематичной. Людям приходится настраивать мёртвую зону. Но мёртвая зона - это же зло.

С моим предложением вирпил ставит ручку в центр и жмёт на кнопку. Оси встают в центр. Заодно, возможно, на эту кнопку можно будет подвесить собственно включение автопилота. Если же понадобилось маневрировать, достаточно просто покачать ручкой, и этот автоцентр сам отключится.

Плюс светодиодик - чтобы видеть, работает ли эта фича, или отключилась.

Link to post
Share on other sites
4 минуты назад, vvm13ru сказал:

Ещё один тип мёртвой зоны придумал. (Хотя, конечно, наверняка всё было придумано ещё до меня).

Установку оси в центр по нажатию кнопки можно запросто сделать и сейчас. Только отпускать ось будет так же отпусканием логической кнопки

  • Upvote 1
Link to post
Share on other sites
14 часов назад, ZERgyt сказал:

Ну что как там продвигается починка прошивки для нормальной работы с mcp320* ?

Скоро. Очень)

  • Like 1
Link to post
Share on other sites
4 минуты назад, 3BAG_Orion33 сказал:

А как на счет ФФБ? 😊 Платки blue pill уже прошли таможню)

Для ФФБ гору другого надо, кроме платок )))

  • Upvote 1
Link to post
Share on other sites

Вот бы кто на BluePill протокол обмена c Logitech G25 сделал,

как Тут...

Там и обратная связь (Force-feed back), все кнопки, и драйвера подходят, и с игрушками проблем нет...

PS: Atmega8 уже заказал...

Link to post
Share on other sites
2 часа назад, s60team сказал:

Вот бы кто на BluePill протокол обмена c Logitech G25 сделал,

как Тут...

Там и обратная связь (Force-feed back), все кнопки, и драйвера подходят, и с игрушками проблем нет...

PS: Atmega8 уже заказал...

Есть как минимум 3 прошивки для рулей MMOC и VNM и еще одна для ардуино.

Edited by ZERgyt
  • Upvote 1
Link to post
Share on other sites
3 часа назад, s60team сказал:

Вот бы кто на BluePill протокол обмена c Logitech G25 сделал,

как Тут...

Там и обратная связь (Force-feed back), все кнопки, и драйвера подходят, и с игрушками проблем нет...

PS: Atmega8 уже заказал...

Вот здесь кури:

https://forum.simracing.su/forum/20-vsyo-dlya-simreysinga-ruli-sidenya-zhelezo-dlya-pk/

  • Thanks 1
Link to post
Share on other sites
5 часов назад, WG_Magners сказал:

Шиться можно через конфигуратор, но новый конфигуратор не увидит контроллер на старой прошивке и не сможет перевести его в режим загрузчика. То есть надо либо заливать прошивку через старый конфигуратор, либо переводить в режим загрузчика вручную переставив джампер BOOT1.

Исправил, теперь можете новым прошиться

  • Like 4
  • Thanks 1
Link to post
Share on other sites
15.02.2021 в 10:36, Johnet сказал:

Для ФФБ гору другого надо, кроме платок )))

Вся необходимая гора есть внутри МСФФ. Мне не хватает только платки с ШИМ)

11 часов назад, WG_Magners сказал:

Добавлена возможность управлять скважностью ШИМ с помощью оси

Собственно, вот оно! Кормилец наш!)))

Link to post
Share on other sites

@Reksotiv При назначении TLE5011CS назначается автоматически нога SPI SCK, SPI MOSI, а SPI GEN сам не хотит назначаться.

Link to post
Share on other sites
21 минуту назад, Johnet сказал:

@Reksotiv При назначении TLE5011CS назначается автоматически нога SPI SCK, SPI MOSI, а SPI GEN сам не хотит назначаться.

Это TLE5011 GEN? У меня назначается. Опиши подробно, что делаешь и какие ещё пины назначены.

Link to post
Share on other sites
4 минуты назад, Reksotiv сказал:

Опиши подробно, что делаешь и какие ещё пины назначены.

В пустой конфигурации назначаю B9 как на рисунке и вончо:

934224769_1.jpg.a445a7463aa10638f0373adf4f6b03ee.jpg

Разобралля! Это начинает происходить, если по ошибке на В6 назначишь TLE5011CS. После этого куда бы CS не назначал, GEN не хотит назначаться.

Link to post
Share on other sites
1 минуту назад, Johnet сказал:

В пустой конфигурации назначаю B9 как на рисунке и вончо:

Странно. Запустил конфигуратор и сразу выбираешь B9?

Скрытый текст

image.thumb.png.7937d45a58c25b084cc3a45b212c5583.png

 

Link to post
Share on other sites

Надо вообще, наверное, с B6 убрать возможность назначения TLE5011CS

GEN Ни для каких больше SPI устройств не нужен кроме TLE?

  • Like 1
Link to post
Share on other sites
8 минут назад, Johnet сказал:

Разобралля! Это начинает происходить, если по ошибке на В6 назначишь TLE5011CS. После этого куда бы CS не назначал, GEN не хотит назначаться.

Да есть такое. Я у себя даже пометку сделал когда-то давно, но так и не проверил) image.png.34089adb0ac6cb954ab3d6f0253223aa.png

  • Like 1
Link to post
Share on other sites
3 минуты назад, MYCYJIbMAHUH сказал:

Програмулина для ст-линка с регистрацией?Может без этого есть вариант скачать ?

 

Почту в личку скажите. 

Link to post
Share on other sites
16 минут назад, MYCYJIbMAHUH сказал:

Конфигуратор распаковал на диск С.Подключаю и запускаю ст-линк.Открыть файл.Где искать НЕХ?

 

15 часов назад, WG_Magners сказал:

 

Link to post
Share on other sites

Ручками вынес файл прошивки НЕХ на рабочий стол.

Архив конфигуратора распаковал на диск С,почему то ст-линк не смог автоматически найти место где файл прошивки НЕХ.

Может это только на моём кампутере.

Прошился.Праздник с танцами и бубном открыт!!!

Link to post
Share on other sites
58 минут назад, MYCYJIbMAHUH сказал:

почему то ст-линк не смог автоматически найти место где файл прошивки НЕХ.

Как бы и не должен )) Он по умолчанию лезет в мои документы и предлагает найти там.

Link to post
Share on other sites

Выделил день на фриджой.С утра запаял плату шильд с тремя регистрами.После обеда прошил плату.Кнопки и датчик  завести не смог.

Пойду кататься на ардуине.

 

  • Sad 1
Link to post
Share on other sites
3 часа назад, MYCYJIbMAHUH сказал:

Выделил день на фриджой.С утра запаял плату шильд с тремя регистрами.После обеда прошил плату.Кнопки и датчик  завести не смог.

Пойду кататься на ардуине.

 

Слушаййй, а ты имел жеж ввиду что вики, конфигруатор и прошивка Г? Ты ведь это сейчас сказать зашел или мне показалось? 🙃

  • Haha 2
  • Upvote 1
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...