1

Witam, przedstawiam projekt konwertera umożliwiającego podłączenie dowolnego(chyba :P) pada USB HID do Atari.
Na chwilę obecną sprawdzałem z dwoma padami różnych firm i wychodzi na to, że wszystko działa (w trakcie testów).

Każdy nowo podłączony pad musi przejść proces mapowania przycisków.
Potrzeba mapowania zostanie zasygnalizowana 3 mrugnięciami dwóch niebieskich diod LED, po czym trzeba poczekać na zaświecenie wszystkich ledów i przechodzimy proces dla przycisków: góra, dół, lewo, prawo, strzał, automatyczne strzelanie (każdorazowe naciśnięcie przycisku na padzie objawi się zgaśnięciem prawej diody (patrząc od wejścia USB)).
Pomyślne zakończenie mapowania zostanie zasygnalizowane 2 mrugnięciami diod LED.

Konwerter posiada pamięć mieszczącą maksymalnie 4 skonfigurowane pady.

Konwerter obsługuje funkcję autofire, która pozwala na wybór częstotliwości od 2Hz do 10Hz (skok 2Hz) poprzez cykliczne naciskanie przycisku przypisanego do funkcji autofire (istnieje możliwość szybkiego wyłączenia poprzez naciśnięcie przycisku przypisanego do funkcji fire).

Jedyny widoczny na zdjęciach przycisk służy do wyczyszczenia skonfigurowanych padów (trzeba przytrzymać podczas uruchamiania urządzenia, do momentu naprzemiennego mrugania ledami).

Sercem konwertera jest moduł SeeedStudio XIAO SAMD21, ze względu na gotową implementację hosta USB i wsparcie dla środowiska Arduino. Niestety moduł posiada wadliwy bootloader i lubi się czasem całkowicie zawiesić, dlatego wsad wgrany jest z pominięciem bootloadera, jako programator posłużyło mi RaspberryPI + openocd.

Obudowa została wydrukowana przy pomocy drukarki 3D. Pliki STL w załączniku.

Projekt jest mocno hobbystyczny dlatego jakoś specjalnie nie przykładałem wagi do kodu jak i wykonania samego konwertera (technologia THT na płytce uniwersalnej 3cm x 7cm, wszystko można polutować rozgrzanym żelazkiem :P) + chciałem się wyrobić w miarę rozsądnym czasie.

W załącznikach udostępniam kody, schemat, pliki 3D obudowy + skompilowany wsad.

Tranzystory NPN pewnie nie są potrzebne (obstawiam, że wystarczą odpowiednie rezystory) więc jak ktoś chce to może sobie to jeszcze bardziej zmniejszyć :).

Post's attachments

kod.zip 5.31 kb, liczba pobrań: 4 (od 2023-05-03) 

obudowa.zip 31.52 kb, liczba pobrań: 7 (od 2023-05-03) 

schemat.png 79.34 kb, liczba pobrań: 1 (od 2023-05-03) 

wsad.bin 44.13 kb, liczba pobrań: 3 (od 2023-05-03) 

zdj1.jpg 528.99 kb, liczba pobrań: 1 (od 2023-05-03) 

zdj2.jpg 800.57 kb, liczba pobrań: 1 (od 2023-05-03) 

zdj3.jpg 976.12 kb, liczba pobrań: 1 (od 2023-05-03) 

zdj4.jpg 405.1 kb, liczba pobrań: 1 (od 2023-05-03) 

zdj5.jpg 389.83 kb, liczba pobrań: 1 (od 2023-05-03) 

Tylko zalogowani mogą pobierać załączniki.

2

Rewelka!

Jak z ew. innymi platformami, ktore maja to samo 9-pinowe wejscie na pady - da sie stricte softem, trzymajac sie projektu?

3 Ostatnio edytowany przez w1941s (2023-05-03 23:10:34)

solo/ng napisał/a:

Rewelka!

Jak z ew. innymi platformami, ktore maja to samo 9-pinowe wejscie na pady - da sie stricte softem, trzymajac sie projektu?

Inne platformy powinny działać, jeżeli tylko wykrycie wciśnięcia jest aktywowane ściągnięciem do masy + zasilanie jest z tych samych pinów i nie przekracza 5v.
Samej podmiany wyjść można dokonać fizycznie na płytce lub w pliku gpiomapper.h odpowiednio skonfigurować stałe:
#define UP_BUTTON_PIN 3
#define DOWN_BUTTON_PIN 2
#define LEFT_BUTTON_PIN 1
#define RIGHT_BUTTON_PIN 0
#define FIRE_BUTTON_PIN 4

Jeszcze jedna rzecz, o której nie wspominałem a mianowicie jeśli ktoś nie ma raspberry pi to układ powinno się udać zaprogramować przy pomocy programatora ST-Link ;).

Jeżeli chcemy mieć skompilowany kod pod wersję bez bootloadera (tak jak wspominałem ten w xiao lubi się losowo zbrickować)
trzeba w pliku \AppData\Local\Arduino15\packages\Seeeduino\hardware\samd\{wersja}\boards.txt dla płytki
seeed_XIAO_m0.name=Seeeduino XIAO
podmienić wartości w parametrach:
seeed_XIAO_m0.upload.offset=0x0000
seeed_XIAO_m0.build.ldscript=linker_scripts/gcc/flash_without_bootloader.ld

PS. Warto zrobić kopię pliku boards.txt ;).

4

http://www.atari.org.pl/forum/viewtopic … 58&p=9
https://github.com/willyvmm/mouSTer

Projekt co prawda nie jest otwarty ale mozesz z niego nieco inspiracji zaczerpnąć ;)
Wlasnie przechodzi dość poważną przebudowę oprogramowania.

"tatusiu zobacz, narysowałam tobie takie same coś jak na twojej koszulce" 
https://github.com/willyvmm/mouSTer
jmp $e477

5 Ostatnio edytowany przez w1941s (2023-05-04 13:40:01)

Znam projekt, bardzo fajny ;), faktycznie można się inspirować, może kiedyś dodam obsługę myszy, zobaczymy, najbardziej zależało mi na padach i ten cel został osiągnięty. Może jakiś elektronik mi powie czy te tranzystory na schemacie są wgl. potrzebne czy nie wystarczyłoby dać rezystory 470ohm jak w fujinet? @Willy widze, że mouster nie używa żadnych tranzystorów na połączeniu z DB9 albo mnie wzrok myli ;P?