Ansluta en gamepad till AVR
-
larsmeijer
- Inlägg: 46
- Blev medlem: 17 oktober 2009, 09:33:34
Ansluta en gamepad till AVR
Hej!
Behöver ansluta och läsa av en gamepad (helst från en PS2). till mitt ROV-projekt (finns i projektdelen). Någon som av gjort detta eller har lite nyttig info?
/ Lars
Behöver ansluta och läsa av en gamepad (helst från en PS2). till mitt ROV-projekt (finns i projektdelen). Någon som av gjort detta eller har lite nyttig info?
/ Lars
Re: Ansluta en gamepad till AVR
Jepp, jag använde en PS2 kontroller till Opportunity. Numera har jag en trådlös istället som funkar lika bra.
En sådan här kan vara lämpligt.

Har kod om du vill ha annars finns det ganska bra beskrivningar på nätet.
Edit: Äsch, jag sitter ju vid datorn med källkoden så jag kan lika gärna lägga upp den. Den hittas här. Det intressanta ligger i main.c och funktionerna init, ps_init samt ps_poll. Koden är inte speciellt genomarbetad och kan säker göras bättre men funkar för mig
I början av källfilen står det lite info om PS2 kontrollern.
En sådan här kan vara lämpligt.

Har kod om du vill ha annars finns det ganska bra beskrivningar på nätet.
Edit: Äsch, jag sitter ju vid datorn med källkoden så jag kan lika gärna lägga upp den. Den hittas här. Det intressanta ligger i main.c och funktionerna init, ps_init samt ps_poll. Koden är inte speciellt genomarbetad och kan säker göras bättre men funkar för mig
-
larsmeijer
- Inlägg: 46
- Blev medlem: 17 oktober 2009, 09:33:34
Re: Ansluta en gamepad till AVR
Aha tack. Cool robot! Är ingen kung på C men ska väl kunna bena iegnom koden.
-
larsmeijer
- Inlägg: 46
- Blev medlem: 17 oktober 2009, 09:33:34
Re: Ansluta en gamepad till AVR
Hmm undrar om jag ska lägga ner en massa tid på att sätta mig in det protokollet. Funderar på att gå förbi elektroniken och löda in sig direkt på knapparna / joystickarna. Det borde ju funka.
Re: Ansluta en gamepad till AVR
Du behöver inte kunna protokoll för att dra nytta av koden. Jag kan det inte 
Anropa ps_poll så får du automatiskt tillbaka en array med aktuella joystickvärden och knappvärden. Initieringen och kommunikationen ligger gömt i funktioner så det behöver du inte kunna, förstå eller ens titta på.
Det enda kravet är att din AVR har hårdvaru SPI vilket jag tror 99 % av alla AVR:er redan har plus att du behöver sätta dit några externa pull ups. Det känns att kommer ta mer tid att löda sig direkt mot knappar än att helt enkelt försöka få igång befintligt kod.
Anropa ps_poll så får du automatiskt tillbaka en array med aktuella joystickvärden och knappvärden. Initieringen och kommunikationen ligger gömt i funktioner så det behöver du inte kunna, förstå eller ens titta på.
Det enda kravet är att din AVR har hårdvaru SPI vilket jag tror 99 % av alla AVR:er redan har plus att du behöver sätta dit några externa pull ups. Det känns att kommer ta mer tid att löda sig direkt mot knappar än att helt enkelt försöka få igång befintligt kod.
-
larsmeijer
- Inlägg: 46
- Blev medlem: 17 oktober 2009, 09:33:34
Re: Ansluta en gamepad till AVR
Ja man kanske skulle ge det ett försök. Det är ju alltid kul när man får det att funka. SPI finns på Mega32 som jag ska använda.
Har jag förstått det rätt?
1 DATA = MISO (SPI Bus Master Input/Slave Output)
2 CMD = behöver ej anslutas
3 N/C (9V) = behöver ej anslutas
4 GND = jord
5 VCC = 5+
6 ATT = Ska denna dras mot jord?
7 CLK = SCK (SPI Bus Serial Clock)
8 N/C = behöver ej anslutas
9 ACK = Osäker på denna?
Hmm får klura vidare!
Har jag förstått det rätt?
1 DATA = MISO (SPI Bus Master Input/Slave Output)
2 CMD = behöver ej anslutas
3 N/C (9V) = behöver ej anslutas
4 GND = jord
5 VCC = 5+
6 ATT = Ska denna dras mot jord?
7 CLK = SCK (SPI Bus Serial Clock)
8 N/C = behöver ej anslutas
9 ACK = Osäker på denna?
Hmm får klura vidare!
-
larsmeijer
- Inlägg: 46
- Blev medlem: 17 oktober 2009, 09:33:34
Re: Ansluta en gamepad till AVR
Hittade lite ny info det kan nog lösa sig, ska testa i morgon
-
larsmeijer
- Inlägg: 46
- Blev medlem: 17 oktober 2009, 09:33:34
Re: Ansluta en gamepad till AVR
Har löst det nu, jag har fungerande kod i BASCOM om någon skulle behöva.
-
st0rfrasarn
- Inlägg: 6
- Blev medlem: 16 november 2009, 14:08:08
Re: Ansluta en gamepad till AVR
JonasJ:
Hej jag laddade ned koden till opportunity och ps2-rutinerna passar perfekt för mitt projekt, tack! MEN skulle du kunna presentera hur du anslutit kontrollen? Jag tror att jag fått det mesta rätt, men jag är osäker på ACK-tråden? Är den ens inkopplad?
Hej jag laddade ned koden till opportunity och ps2-rutinerna passar perfekt för mitt projekt, tack! MEN skulle du kunna presentera hur du anslutit kontrollen? Jag tror att jag fått det mesta rätt, men jag är osäker på ACK-tråden? Är den ens inkopplad?
Re: Ansluta en gamepad till AVR
Så här har jag kopplat in den till en mega48 (sittandes på en BabyOrangutan):
ACK (violett) - ej inkopplad
+7.5 V DC (grön) - ej inkopplad
+5 V DC (gul) - Kopplat till 5 V (såklart!
)
GND (svart/röd) - GND
Clock CLK (Vit) - PB5 SPI SCK
Attention ATT (Blå) - PC1
Command CMD (Orange) - PB3 SPI MOSI
Data DAT (Brun) - PB4 SI MISO
Glöm inte ett 1K pull-up motstånd på DAT signalen!


ACK (violett) - ej inkopplad
+7.5 V DC (grön) - ej inkopplad
+5 V DC (gul) - Kopplat till 5 V (såklart!
GND (svart/röd) - GND
Clock CLK (Vit) - PB5 SPI SCK
Attention ATT (Blå) - PC1
Command CMD (Orange) - PB3 SPI MOSI
Data DAT (Brun) - PB4 SI MISO
Glöm inte ett 1K pull-up motstånd på DAT signalen!


-
st0rfrasarn
- Inlägg: 6
- Blev medlem: 16 november 2009, 14:08:08
Re: Ansluta en gamepad till AVR
Okej tack! Alltså jag testar på en atmega32, och min PC1 är "SDA", heter din PC1 också SDA? I övrigt har jag kopplat exakt så, och min kommer aldrig ur while-loopen under ps_init().
hmm, har nog inte kopplat på +5V på pull-up resistorn...missförstod det. ska testa igen
hmm, har nog inte kopplat på +5V på pull-up resistorn...missförstod det. ska testa igen
Re: Ansluta en gamepad till AVR
Nej, PC1 är en vanlig digital utgång. Den används för att väcka gamepaden.
Utan pull-up funkar det inte. Jag har provat
Utan pull-up funkar det inte. Jag har provat
-
st0rfrasarn
- Inlägg: 6
- Blev medlem: 16 november 2009, 14:08:08
Re: Ansluta en gamepad till AVR
Okej. Har kopplat enligt bilden. Och fortfarande kommer jag inte ur while loopen i ps_init(). Jag gjorde printf på analog_flag, och den är 255! Har du nån aning om vad jag gör fel?
Pullup-resistorn kommer från +5v -> tråden mellan MISO-DATA
Pullup-resistorn kommer från +5v -> tråden mellan MISO-DATA
-
st0rfrasarn
- Inlägg: 6
- Blev medlem: 16 november 2009, 14:08:08
Re: Ansluta en gamepad till AVR
Jag är en idiot. Missade detta:
// Set output on SCK (CLOCK) and MOSI (COMMAND) pins for spi communication
DDRB |= _BV(SS) | _BV(COMMAND) | _BV(CLOCK);
När jag cut-n-pastade din kod in i mitt projekt, nu funkar det! sorry för allt trasslande och tack för hjälpen!
// Set output on SCK (CLOCK) and MOSI (COMMAND) pins for spi communication
DDRB |= _BV(SS) | _BV(COMMAND) | _BV(CLOCK);
När jag cut-n-pastade din kod in i mitt projekt, nu funkar det! sorry för allt trasslande och tack för hjälpen!
