Jump to content

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


Recommended Posts

3BAG_Orion33
1 час назад, l3VGV сказал:

в оригинальном f103c8 128к памяти

По даташиту 64. 128 у CB.

Edited by 3BAG_Orion33
  • Upvote 1
Link to comment
Share on other sites

3BAG_Orion33

Хотелось бы поддержку хотя бы GPIO Expander по I2C. На Алике такие модули есть...

Уж очень не хочется в РУД тащить кучу проводов...

Edited by 3BAG_Orion33
Link to comment
Share on other sites

3BAG_Orion33

А вообще было бы прикольно иметь систему модулей драйверов, чтобы самому можно было написать под нужный девайс. Ведь по сути типы строго детерминированы: интерфейс i2c или spi, задача либо читать оси, либо кнопки. 

  • Like 1
Link to comment
Share on other sites

25.02.2021 в 11:32, 3BAG_Orion33 сказал:

Логичное развитие, да. Только опять 90% кода перелопачивать 😂

 

24.02.2021 в 23:51, WG_Magners сказал:

Серьезный монстр получится из конфигуратора) Зато на контроллере никакого лишнего кода, да

 

WebUSB и WebHID вполне созрели. Если уже принято решение идти на подвиги, то!

Link to comment
Share on other sites

s60team

А реально ли сделать модульную систему?

Допустим выбираем галочками, что нам надо (•TLE501x  •AS5600 •CD4021) и жмакаем Записать в конфигураторе.

И выводить Объем доступного/занятого места на микроконтроллере?

  • Upvote 1
Link to comment
Share on other sites

3BAG_Orion33

Ну в теории С поддерживает динамические библиотеки. Если их хранить во флеш по определенному адресу, можно читать и исполнять. Но, честно говоря, не знаю, можно ли такое реализовать на МК.

Link to comment
Share on other sites

Ребяты, суперзадачи не ставите? Тут хотя бы ФФБ победить...

  • Like 1
  • Haha 1
Link to comment
Share on other sites

WG_Magners
3 часа назад, Johnet сказал:

Ребяты, суперзадачи не ставите? Тут хотя бы ФФБ победить...

Ну а что, опенсорс) я никому не могу запретить форкнуть проект и творить любую красоту

  • Like 1
Link to comment
Share on other sites

s60team

Появились проблемы с прошивкой 1.7: в 1.6 было всё ок, МК всегда определялся компом.

Теперь PB13 горит тускло, МК то видит, то нет.

Как можно откатиться до 1.6?

PS: в электронике и программировании я чайник. USB-TTL конвертер (CH340G) есть...

Link to comment
Share on other sites

4 часа назад, s60team сказал:

Теперь PB13 горит тускло, МК то видит, то нет.

А разъем USB сломать не мог? У меня такой контроллер валянтся.. 

  • Thanks 1
Link to comment
Share on other sites

Reksotiv
6 часов назад, s60team сказал:

МК то видит, то нет.

Как можно откатиться до 1.6?

Как самый первый раз прошил МК, так и прошей 1.6. Сомневаюсь, что это поможет. https://github.com/FreeJoy-Team/FreeJoyWiki/blob/master/rus/Прошивка-контроллера.md

  • Thanks 1
Link to comment
Share on other sites

s60team

USB разъемы проверил - ничего не шатается, дорожки не оторваны.

Две платы. Обе работали на 1.6, обновил через конфигуратор.

После прошивки (через конфигуратор) сразу не определяются. Иногда их видно, но хрен его знает от чего это зависит.

ST-Link v2 сгорел от статики, так что могу попробовать перепрошить через USB-TTL. Как сделаю - отпишусь.

Всем спасибо!

Link to comment
Share on other sites

Таблица мапинга выводов в таком виде устроит?

 

All.thumb.jpg.2639cec0a93466e187b03b52bcb96b1d.jpg

* Ошибку TLE MISO уже исправил )))

Может пожелания какие то есть.

 

  • Like 5
  • Thanks 1
Link to comment
Share on other sites

3BAG_Orion33

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

Link to comment
Share on other sites

5 минут назад, 3BAG_Orion33 сказал:

Я бы уникальные для пина функции переместил в ближний столбец к борде,

Функции сгруппированы по типам датчиков. Кнопки, аналоговые оси, сдвиговые регистры, SPI, LED, I2C и пр.

Link to comment
Share on other sites

3BAG_Orion33

Получается, энкодер в качестве оси может быть только один? Жаль...

Link to comment
Share on other sites

4 минуты назад, 3BAG_Orion33 сказал:

Получается, энкодер в качестве оси может быть только один? Жаль...

Энкодер в качестве оси может быть 8 штук. И можно подключить только один быстрый энкодер. 

Link to comment
Share on other sites

3BAG_Orion33

А чем быстрый отличается от обычного?

Link to comment
Share on other sites

WG_Magners
Posted (edited)
7 часов назад, s60team сказал:

USB разъемы проверил - ничего не шатается, дорожки не оторваны.

Две платы. Обе работали на 1.6, обновил через конфигуратор.

После прошивки (через конфигуратор) сразу не определяются. Иногда их видно, но хрен его знает от чего это зависит.

ST-Link v2 сгорел от статики, так что могу попробовать перепрошить через USB-TTL. Как сделаю - отпишусь.

Всем спасибо!

Джамперы на жёлтых пинах стоят?

UPD. Хотя не, не влияет, если прошился через конфигуратор. Там в есть в бутлоадере небольшой косяк, скоро поправлю. Но бутлоадер не перетирается при прошивке через конфигуратор, а в 1.6.х косяка не было

Edited by WG_Magners
  • Thanks 1
Link to comment
Share on other sites

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

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

Может попробовать только бутлоадер переписать из 1.6? Как тут https://github.com/FreeJoy-Team/FreeJoyWiki/blob/master/rus/Прошивка-CKS32.md

 

Link to comment
Share on other sites

s60team
2 часа назад, Johnet сказал:

Может попробовать только бутлоадер переписать из 1.6? Как тут https://github.com/FreeJoy-Team/FreeJoyWiki/blob/master/rus/Прошивка-CKS32.md

 

Пасиба, но к сожалению, ST-link сгорел, а новый с Али Экспрессовича будет идти долго...

Link to comment
Share on other sites

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

Может попробовать только бутлоадер переписать из 1.6? Как тут https://github.com/FreeJoy-Team/FreeJoyWiki/blob/master/rus/Прошивка-CKS32.md

 

Если 1.7 не шилась программатором, то бутлоадер там 1.6

Link to comment
Share on other sites

3BAG_Orion33

@WG_Magners

Можно рассчитывать на добавку I2C GPIO Expander или колхозить через SPI|shift_reg?
Кстати, энкодеры можно вешать только на порты или расширители тоже?

Link to comment
Share on other sites

1 час назад, 3BAG_Orion33 сказал:

энкодеры можно вешать только на порты или расширители тоже?

Энкодеры можно вешать напрямую к контроллеру любым способом (Через кнопку подключенную к земле или к напряжению или через матрицу кнопок), а так же через сдвиговые регистры. Это относится ко всем энкодерам кроме "быстрого".

Link to comment
Share on other sites

WG_Magners
1 час назад, 3BAG_Orion33 сказал:

@WG_Magners

Можно рассчитывать на добавку I2C GPIO Expander или колхозить через SPI|shift_reg?
Кстати, энкодеры можно вешать только на порты или расширители тоже?

В ближайшем будущем обещать точно не стану

Link to comment
Share on other sites

3BAG_Orion33
1 час назад, Johnet сказал:

а так же через сдвиговые регистры.

С какой частотой опрашиваются регистры? Есть ограничение на количество бит?

1 час назад, WG_Magners сказал:

В ближайшем будущем обещать точно не стану

ОК. А с PWM на осях будешь что-то делать, или реализовывать аппаратное разделение на половинки?

Link to comment
Share on other sites

Прочитал всю тему. Ужасно интересно, [s]но ничерта не понятно[/s]

Парни, причастные к действу, Вам респектище огромный!!! Мегакрутая тема!

 

Начал собирать девайс для односквадника. Появился вопрос: индикаторы на MAX7219 или 74HC595 можно как-нибудь прикрутить сюда?

Идея такая:

1. Кнопкой (энкодером) выставить на индикаторе число

2. Число из п. 1 по нажатию другой кнопки списывается

 

или что-то подобное...

 

(счетчик диполей и ЛТЦ для DCS хочу организовать) 😏

Link to comment
Share on other sites

7 минут назад, Milit сказал:

 

(счетчик диполей и ЛТЦ для DCS хочу организовать) 😏

А при циклическом выбросе как списывать? По таймеру? Или только по одному сбрасывать? 

Link to comment
Share on other sites

2 минуты назад, Johnet сказал:

А при циклическом выбросе как списывать? По таймеру? Или только по одному сбрасывать? 

Пока только в ручном режиме. Одно нажатие -1 на счетчике диполей (-2 ЛТЦ).

Иначе надо инфу из игры получать, а экспорт в ДКСе счас, НЯЗ, не работает.

Link to comment
Share on other sites

WG_Magners
6 часов назад, 3BAG_Orion33 сказал:

С какой частотой опрашиваются регистры? Есть ограничение на количество бит?

ОК. А с PWM на осях будешь что-то делать, или реализовывать аппаратное разделение на половинки?

Регистры с частотой 500Гц, в угоду опроса энкодеров. Для кнопок это частовато, для энкодеров редковато. Подумаю ещё что с этим сделать.

 

Если ШИМ тебе нужен для FFB, то я за эту тему конкретно возьмусь скоро. Как только ремонт и на работе жопа закончится)

1 час назад, Milit сказал:

Прочитал всю тему. Ужасно интересно, [s]но ничерта не понятно[/s]

Парни, причастные к действу, Вам респектище огромный!!! Мегакрутая тема!

 

Начал собирать девайс для односквадника. Появился вопрос: индикаторы на MAX7219 или 74HC595 можно как-нибудь прикрутить сюда?

Идея такая:

1. Кнопкой (энкодером) выставить на индикаторе число

2. Число из п. 1 по нажатию другой кнопки списывается

 

или что-то подобное...

 

(счетчик диполей и ЛТЦ для DCS хочу организовать) 😏

Пока FFB в первом приоритете, устройства вывода на потом. Разве что немного окультурю режимы светодиодов, но это не точно

Вроде ж можно в ммджое подключать семисегментники? Знатоки подскажут, может там такое можно организовать

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

3BAG_Orion33
2 часа назад, WG_Magners сказал:

Если ШИМ тебе нужен для FFB, то я за эту тему конкретно возьмусь скоро.

Мне ШИМ нужен только для центрировании ручки, ффб как таковой я везде отключаю.

Для центровки я не обновил в памяти схему, а потому неправильно сформулировал тебе просьбу, сорян... 🙃 

Поэтому попросил небольшую доработку в виде разделения на два логических Шима по половинке оси. Параллельно проработал схему на логических элементах, так что одно решение уже есть, за что тебе спасибо.

 

А вот подключения gpio по i2c нет... Сейчас мне видится только одно решение: вести кнопки в РУД через регистры, оси (думал перевести все на энкодеры, но нет, рыскание нужна аналоговая) - через i2c АЦП. Итого 4 сигнала + 2 питание. Их, вероятно, придется делать дифференциальными, то есть в сумме 10 проводников. Из готовых жгутов такое если только в видеокабелях hdmi или displayport найти можно, но ценник там больно алё.

Но если бы вдруг появился драйвер для gpio i2c, коих на Алике завались, то количество проводов сразу уменьшилось бы до 6. К тому же, это идеологически эстетичнее... И в качестве шнура подойдёт гигабитный сетевой кабель, что дешевле 🙂

Edited by 3BAG_Orion33
  • Upvote 2
Link to comment
Share on other sites

Zurabik
8 часов назад, 3BAG_Orion33 сказал:

... Сейчас мне видится только одно решение: вести кнопки в РУД через регистры, оси (думал перевести все на энкодеры, но нет, рыскание нужна аналоговая) - через i2c АЦП. Итого 4 сигнала + 2 питание. Их, вероятно, придется делать дифференциальными, то есть в сумме 10 проводников. Из готовых жгутов такое если только в видеокабелях hdmi или displayport найти можно, но ценник там больно алё.

Но если бы вдруг появился драйвер для gpio i2c, коих на Алике завались, то количество проводов сразу уменьшилось бы до 6. К тому же, это идеологически эстетичнее... И в качестве шнура подойдёт гигабитный сетевой кабель, что дешевле 🙂

Как вариант: можно в руд поставить отдельный контроллер (150 рублей) и протянуть туда USB.

Link to comment
Share on other sites

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

Вроде ж можно в ммджое подключать семисегментники? Знатоки подскажут, может там такое можно организовать

Да, подсказали, но там не совсем то, что нужно.

Там реализован импорт только из Тундры и Ил-2. Из ДКС - нет.

Поэтому придется углубленно изучать тему. Простейшим вариантом видится конвертнуть ММдой обратно в ардуину и научить ее показывать циферки по нужным событиям. Но городить в одном девайсе отдельный контроллер для индикатора - это же не комильфо! :russian_ru: 

Link to comment
Share on other sites

3BAG_Orion33
3 часа назад, Zurabik сказал:

Как вариант: можно в руд поставить отдельный контроллер (150 рублей) и протянуть туда USB.

Так или иначе придется программировать драйвер, чтобы основной контроллер умел общаться с РУД.

Иметь в системе два игровых контроллера тоже считаю не эстетичным решением)

Link to comment
Share on other sites

7 минут назад, 3BAG_Orion33 сказал:

Иметь в системе два игровых контроллера

 

Да нормально всё будет! Чай не 98й год, нонче все игры умеют в много контроллеров. Нет смысла себя ограничивать 8ю осями и одним девайсом. Педали у меня вообще 1 ось, а на РУСе - 3.

 

image.png.41bacc4f077eac73d1bd4c4204f35cfb.png

  • Like 2
Link to comment
Share on other sites

3BAG_Orion33

Я консерватор. Мне понятнее делать через профилирования шифтами на одном девайсе, который будет генерить клавиатурные коды для команд. Раньше для этих целей подружить шифт с одного девайса и кнопки с другого было весьма не тривиальной задачей.

Link to comment
Share on other sites

3BAG_Orion33
1 час назад, l3VGV сказал:

Нет смысла себя ограничивать 8ю осями

А может быть, ты и прав... Мне же еще под обзор министик нужен.

А так поставить USB хаб в РУСе и баста 🤫 И пространства для апгрейда немерено. 🙃

Edited by 3BAG_Orion33
Link to comment
Share on other sites

@WG_Magners Поизучал тут такой интересный вопрос как Position independent Code

 

Смысл в том, что можно собрать бинарник, который будет исполняться куда его не положи в памяти, хоть в ОЗУ, хоть во флеш. Главное перед тем как передават ему управление, настроить GOT, на нужные смещения для RAM и FLASH. Фактически, при некотором хакерстве, можно реализовать аналог динамической линковки. Тока самостоятельно, сначала получить от модуля список функций и их адреса, при каждом их вызове из основного кода настраивать индивидуальный GOT(который ясное дело должен жить в ОЗУ). Основной код компиляется и лункуется как обычно. Код основной программы который нужно вызывать из модулей, можно наверное прилинковать по абсолютным адресам, врятли нам актуально иметь бинарные модули переносимые между разными версиями основной программы.

 

Переписывать опятьже "всё", но зато вопрос нехватки места решится на корню. Ну и заодно можно встроить WebUSB и WebHID, чтобы перенести конфигуратор в веб.

Link to comment
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
 Share

×
×
  • Create New...