-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Вопросы по коду #2
Comments
Magnetic resistors and axis calibration are not supported by the software now. Maybe this project will be helpful for you https://opensimhardware.wordpress.com/diy-контроллер-для-педалей-и-кнопок/ |
как это собрать под PlatfomIO? |
Код в этом репозитории собирается в IDE Keil uVusion v5 с компилятором MDK ARM v5. Сборка в других средах и с другими компиляторами потребует установления зависимостей и, вероятно, правок кода |
спасибо за ответ. я тут поковырялся. вобщем собирается все просто.
} только с кнопками чет пока не разобрался. мне на пины кнопок + питания подавать или -?? |
Кнопки подтянуты к питанию на контроллере, для нажатия надо соединить с землёй. Не работает возможно потому что в стандартной конфигурации кнопки выключены. Для включения надо в файле main.h задать параметр BUTTONS_NUM больше нуля |
все 12 кнопок включил. #define BUTTONS_NUM 12 замыкаю на - и ничего не происходит. в чем дело пока не понял |
А аналоговые оси работают? |
аналоговые оси незнаю как проверить. не разобрался пока. начал с кнопок. если подскажеш как проверить то проверю. вот смотри, в коде есть uint8_t data_ready = 0; но у нас изначалоно установлено 0 то мы в обработку кнопок то не попадем получается и ни какие данные не отправим. или я ошибаюсь? |
Флаг опроса выставляется в прерывании, в файле stm32f1xx_it.h. Попробую собрать в этой IDE и проверить, когда будет доступ к железу. Если у вас получится разобраться раньше, пожалуйста, отпишитесь |
для проверки сделал так перед if (data_ready != 0)....... GPIO_Poll(&buttons_state); кнопки стали реагировать на соединение с - вобщем buttons_state не менялась если тыкать на кнопки. тупо проводком на минус контачу. оси так пока и не проверил. интересный проект. буду дальше курить его. если что отпишусь |
https://youtu.be/5f3dsfdOFYA вот что хочу запилить. начало положено. и кстате да проблема в прерываниях была. как доделаю проект с сеговскими джостиками выложу сюда. еще раз спасибо за исходники. я хоть понял как делать ждостики на STM |
Для геймпада аналоговые оси можно просто выключить за ненадобностью, а дергаются они потому что в воздухе висят. |
Кстати, для вашей задачи (если это не спортивный интерес) есть красивое покупное решение. У меня два таких от NES есть, отлично работают |
да оси я вырубил. с прерываниями так и не разобрался. вопрос? интересует подробности что отправляют в report_data для кнопок осей и прочего. и кстате если работают прерывания. для чего в главном цикле идет проверка есть или нет прерывание. не проще ли отправку делать сразу в прерываниях? а цикл пусть в холостую крутится. хотелось бы узнать подробнее про джостики и как там что отправляется. |
да у меня как раз таки спортивный интерес |
Отправка данных происходит в основном цикле чтобы не держать контроллер в прерывании лишнее время. В данном проекте это пока не критично, но в общем случае так делать правильнее. Кроме того, если не знать точно, что делает функция отправки внутри прерывания, то могут возникнуть проблемы с атомарностью операций. В репорт записываются данные исходя из структуры дескриптора HID (он описывается в файле usbd_hid.c). Про дескрипторы и в принципе про HID можно подробнее почитать например здесь. В нашем случае дескриптор как раз меняется в зависимости от того, что выбрано в main.h |
Попробуйте в начале файла main.c добавить две строки:
Либо прописать USE_HAL_DRIVER, STM32F103xB в директивы препроцессора в настройках проекта Еще переменную data_ready желательно обозвать volatile: Возможно это решит проблему с прерываниями |
да точно volatile uint8_t data_ready = 0; |
Интересно, что мой оптимизатор не убивал эту переменную) в любом случае, спасибо, что помогли найти косяк. |
да можно закрывать |
The text was updated successfully, but these errors were encountered: