Kontroler Joystick Atmega8

Commodore,Atari,ZX Spectrum, konsole, itp...
Awatar użytkownika
piracz
Administrator
Posty: 87
Rejestracja: niedziela 12 sty 2020, 16:14

Kontroler Joystick Atmega8

Post autor: piracz »

Opisuję tu projekcik na AVR do samodzielnego montażu:
W przypadku niektórych projektów bardzo przydatny jest obwód umożliwiający podłączenie 12 przycisków (w tym 4 przycisków kierunkowych) do komputera za pomocą portu USB. Oto kilka przykładów:
Domowy kontroler w stylu Arcade i małe szafki zręcznościowe
Prosty kontroler (1 przewód na przycisk) na USB. Np .: Neo-Geo, Atari ...
Korzystając z odpowiedniego oprogramowania po stronie komputera, wejścia można wykorzystać do innych celów. Np .: Przełączniki, wyłączniki krańcowe, alarmy ... Czystsze rozwiązanie niż modyfikacja istniejącego kontrolera gier

W zależności od twoich umiejętności możesz zbudować obwód na płytce uniwersalnej za pomocą elementów przelotowych lub zbudować wersję do montażu powierzchniowego za pomocą mojej małej płytki drukowanej PCB2 .

Nie wymaga sterowników!
Zgadza się, ponieważ standard USB określa klasy urządzeń. Używam ludzkiego urządzenia wejściowego (HID), które pozwala mi powiedzieć komputerowi, że podłączone urządzenie USB jest joystickiem i ma 2 osie oraz 4 lub 8 przycisków. Kolejną miłą rzeczą jest to, że adapter powinien współpracować ze wszystkimi systemami operacyjnymi obsługującymi urządzenia HID. (Przetestowałem i działa przynajmniej na Win98, Win2K, WinXP i Linux)
usb_game12_schematic.png
usb_game12_schematic.png (10.84 KiB) Przejrzano 3723 razy
Ten projekt wykorzystuje mikrokontroler ATmega8 firmy Atmel. Ten mikrokontroler nie obsługuje USB w sprzęcie, więc użyłem tylko oprogramowania USB sterownika Objective Development . Sterownik ten pozwala mikrokontrolerowi AVR, np. ATmega8, na komunikowanie się przez USB z minimalnymi elementami zewnętrznymi. W rezultacie interfejs można łatwo i tanio zbudować
U2	Mikrokontroler Atmega8. ATMEGA8-16PC, ATMEGA8-16PI, ATMEGA8-16PJ lub ATMEGA8-16PU. Nie używaj ATMEGA8L- *, zegar 12 MHz byłby zbyt wysoki.<br />R1	Rezystor 1,5k. Zrobią to zwykłe oporniki z filmu węglowego 1/4 wata.<br />R2, R3	Rezystory 68 omów. Zrobią to zwykłe oporniki z filmu węglowego 1/4 wata.<br />D2, D3	Diody Zenera 3,6 V.<br />R4	Nie instaluj, już nie używasz.<br />D1	Nie instaluj, już nie używasz.<br />Y1	Kryształ 12 MHz.<br />C2, C3	Kondensatory 27 pf. Jeśli arkusz danych kryształu zaleca inną wartość, użyj jej zamiast tego.<br />C1	Kondensator 10uf. Zainstaluj go w pobliżu ATmega8.<br />JP1, JP2	Zworki. Możesz także użyć przełączników DIP, zwykłych przełączników lub mostków lutowniczych.<br />J2	6-pinowa listwa, odstęp 2,54 mm. Potrzebny do programowania ATmega8.
U2 Mikrokontroler Atmega8. ATMEGA8-16PC, ATMEGA8-16PI, ATMEGA8-16PJ lub ATMEGA8-16PU. Nie używaj ATMEGA8L- *, zegar 12 MHz byłby zbyt wysoki.
R1 Rezystor 1,5k. Zrobią to zwykłe oporniki z filmu węglowego 1/4 wata.
R2, R3 Rezystory 68 omów. Zrobią to zwykłe oporniki z filmu węglowego 1/4 wata.
D2, D3 Diody Zenera 3,6 V.
R4 Nie instaluj, już nie używasz.
D1 Nie instaluj, już nie używasz.
Y1 Kryształ 12 MHz.
C2, C3 Kondensatory 27 pf. Jeśli arkusz danych kryształu zaleca inną wartość, użyj jej zamiast tego.
C1 Kondensator 10uf. Zainstaluj go w pobliżu ATmega8.
JP1, JP2 Zworki. Możesz także użyć przełączników DIP, zwykłych przełączników lub mostków lutowniczych.
J2 6-pinowa listwa, odstęp 2,54 mm. Potrzebny do programowania ATmega8.
usb_game12_wiring_example.png (3.43 KiB) Przejrzano 3723 razy
Pliki: ftp://ftp.piracz.com.pl/pubilc/public/R ... tick%20A8/


Wiele mikrokontrolerów ma tak zwane „bajty bezpieczników”. W przypadku ATmega 8a istnieją dwa bajty: bajt wysoki i bajt niski. Te bajty służą do konfigurowania niektórych aspektów mikrokontrolera. Jakiego rodzaju zegara użyć? Kryształ? Rezonator? Wewnętrzny zegar RC? Zezwolić na programowanie przez ISP? Bardzo ważne jest, aby ustawić bezpieczniki na właściwe wartości. Zastosowanie niewłaściwych wartości może sprawić, że MCU nie będzie nadawać się do użytku.

Oto odpowiednie wartości bezpiecznika dla tego projektu:
wysoki bajt = 0xc9 , niski bajt = 0x9f

Film komentujemy na forum PCB powstało na nowo https://youtu.be/rwl1kVxSlDE
studi

Post autor: studi »

Czy jest dostępny kod źródłowy wsadu, bo jeśli tak, to można by zmienić część pinów z portu B na port D, tam jest sporo nieużywanych pinów, łatwiej by było projektować płytkę, bo linie SPI nie kolidowały by z liniami do manipulatora.

Na filmie robiłeś zasilanie AVR z 3.3V, czy nie należało by zastosować układu dopasowującego poziomy USB (+5V) do poziomów AVR, bo nie powinno się go sterować napięciami wyższymi od napięcia zasilania oraz czy R1 podciągający wejścia RX i TX do poziomu zasilania pozostaje na potencjale +5V z USB czy należało by go przepiąć do +3.3V?

No i jak wspominałeś na filmie, a w sumie tego nie zrobiłeś aż się prosi o rezystor na porcie RESET oraz o kondensatory odprzęgające 100n na VCC i AVCC, bo jeśli całość zasilana jest z USB to tam z +5V wychodzi sieczka jeśli chodzi o szarpnięcia zasilaniem i inne zakłócenia.
Awatar użytkownika
piracz
Administrator
Posty: 87
Rejestracja: niedziela 12 sty 2020, 16:14

Post autor: piracz »

Dobre uwagi, ten schemat na forum jest na dużą atmegę 8 PU działa bez stabilizatorów ka na filmie przerabiam to na małą 20AL i tak się nad tym zastanawiałem diody zenera na 3,3V nie na 3,6V i r1 za lm 1117 3,3V to tylko tyle ze zmian no można reset podciągnąć do vcc R 10K
Awatar użytkownika
BoloKonstruktor
Posty: 2
Rejestracja: środa 22 sty 2020, 10:13
Lokalizacja: Gorlice
Kontakt:

Post autor: BoloKonstruktor »

Źródło do tego sterownika jest dostępne na tej stronie: https://www.raphnet.net/electronique/us ... dex_en.php
W źródle jest wydzielony plik konfiguracyjny z definicjami pre-procesora więc łatwo można porty dostosować do projektowanej PCB.

[Poprawka]
Jednak nie ma tak dobrze. Z tego co na szybko przejrzałem to w pliku konfiguracyjnym w definicjach pre-procesora można ustawiać tylko porty do usb. Ale w plikach main.c i twelve.c można wejścia pozmieniać tylko niestety w kilku miejscach kodu więc, aż się prosi żeby dopisać konfiguracje wejść w definicjach pre-procesora, najlepiej w makrach.
Awatar użytkownika
piracz
Administrator
Posty: 87
Rejestracja: niedziela 12 sty 2020, 16:14

Post autor: piracz »

Schemat już poprawiony do pobrania w eagle na ftp. link w poście
Załączniki
joy.jpg
joy.jpg (114.83 KiB) Przejrzano 3690 razy
studi

Post autor: studi »

piracz pisze: wtorek 18 lut 2020, 06:55 Dobre uwagi, ten schemat na forum jest na dużą atmegę 8 PU działa bez stabilizatorów ka na filmie przerabiam to na małą 20AL i tak się nad tym zastanawiałem diody zenera na 3,3V nie na 3,6V i r1 za lm 1117 3,3V to tylko tyle ze zmian no można reset podciągnąć do vcc R 10K
ale to nie ma znaczenia, w górę wszystkie chodzą do 5.5V, różnica jest od dołu zasilania, że schodzą aż do 2.7V i w częstotliwościach maksymalnych pracy, więc aby nie zaciemniać można by wywalić ten stabilizator.

tak się zastanawiam także jakby płytkę zrobić w kształcie dongla wkładanego bezpośrednio do gniazda USB zawsze to kilka kabli mniej, można zrobić odpowiednio ukształtowany laminat ze stykami lub złącze lutowane (zrobienie laminatu w warunkach amatorskich trochę trudne w wycinaniu)
ODPOWIEDZ