Ansluta en gamepad till AVR

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
larsmeijer
Inlägg: 46
Blev medlem: 17 oktober 2009, 09:33:34

Ansluta en gamepad till AVR

Inlägg av larsmeijer »

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
Användarvisningsbild
JonasJ
Inlägg: 653
Blev medlem: 11 september 2007, 16:02:26
Ort: Kinna
Kontakt:

Re: Ansluta en gamepad till AVR

Inlägg av JonasJ »

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.

Bild

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.
larsmeijer
Inlägg: 46
Blev medlem: 17 oktober 2009, 09:33:34

Re: Ansluta en gamepad till AVR

Inlägg av larsmeijer »

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

Inlägg av larsmeijer »

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.
Användarvisningsbild
JonasJ
Inlägg: 653
Blev medlem: 11 september 2007, 16:02:26
Ort: Kinna
Kontakt:

Re: Ansluta en gamepad till AVR

Inlägg av JonasJ »

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.
larsmeijer
Inlägg: 46
Blev medlem: 17 oktober 2009, 09:33:34

Re: Ansluta en gamepad till AVR

Inlägg av larsmeijer »

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!
larsmeijer
Inlägg: 46
Blev medlem: 17 oktober 2009, 09:33:34

Re: Ansluta en gamepad till AVR

Inlägg av larsmeijer »

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

Inlägg av larsmeijer »

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

Inlägg av st0rfrasarn »

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?
Användarvisningsbild
JonasJ
Inlägg: 653
Blev medlem: 11 september 2007, 16:02:26
Ort: Kinna
Kontakt:

Re: Ansluta en gamepad till AVR

Inlägg av JonasJ »

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!

Bild

Bild
st0rfrasarn
Inlägg: 6
Blev medlem: 16 november 2009, 14:08:08

Re: Ansluta en gamepad till AVR

Inlägg av st0rfrasarn »

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
Användarvisningsbild
JonasJ
Inlägg: 653
Blev medlem: 11 september 2007, 16:02:26
Ort: Kinna
Kontakt:

Re: Ansluta en gamepad till AVR

Inlägg av JonasJ »

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 :vissla:
st0rfrasarn
Inlägg: 6
Blev medlem: 16 november 2009, 14:08:08

Re: Ansluta en gamepad till AVR

Inlägg av st0rfrasarn »

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
st0rfrasarn
Inlägg: 6
Blev medlem: 16 november 2009, 14:08:08

Re: Ansluta en gamepad till AVR

Inlägg av st0rfrasarn »

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!
Användarvisningsbild
JonasJ
Inlägg: 653
Blev medlem: 11 september 2007, 16:02:26
Ort: Kinna
Kontakt:

Re: Ansluta en gamepad till AVR

Inlägg av JonasJ »

Kul att du fick det att funka! Men glöm inte projekttråden! ;)
Skriv svar