Forum: Projekte & Code AVR PSOne Controller Klasse


von Robin G. (gawin)


Angehängte Dateien:

Lesenswert?

Hi leute,
hatte heute langeweile und nen alten PSOne Controller gefunden, den ich 
nicht mehr für ne PS brauch.
Also Stecker abgemacht und ab damit an meinen 
mini-experementier-roboter.

Es wird Digital und Analog(glaub der PSOne hat nur red) unterschieden.

Vier Datenkabel werden nur gebraucht die alle auf einem Port seien 
müssen,
dafür braucht man aber auch nur den Port angeben und nicht noch 
DDRx,PINx.

Weitere Infos findet Ihr in der Header datei.

Und wenn nen Fehler auftaucht, man sich was sparen oder verbessern 
könnte, bitte sagt bescheid! Interessiert mich und andere bestimmt auch 
;).

Jetzt aber viel Spaß damit.

Gruß Robin Gerhartz

von Niki Tesla (Gast)


Lesenswert?

Du programmierst AVRs in C++?
Entweder bist du sehr mutig oder kommst aus der Arduino-Ecke.
In beiden Fällen ist es Speicherplatzverschwendung.

: Wiederhergestellt durch Moderator
von Robin G. (gawin)


Lesenswert?

Achja welcher pin was ist könnte wohl auch hilfreich sein ^^.
        -------------------------------
 PIN 1->| o  o  o | o  o  o | o  o  o |
        \_____________________________/


1 = DATA
2 = CMD
3 = N/C (9 Volt fürs Rumble kommt später vllt)
4 = GND
5 = VCC
6 = ATT
7 = CLOCK
8 = N/C
9 = N/C (ACK braucht man nicht umbedingt,
         aber vllt arbeite ich da mal mit ISR)


Niki Tesla schrieb:
> Du programmierst AVRs in C++?

Ich glaub das thema is schon mehrfach durch, aber für dich gerne 
nochmal.
Ein overflow kann vorkommen ist mir aber noch nicht wirklich passiert, 
hab schon welchen gesehen den du echt nicht nutzen kannst, aber das is 
dann auch ekelhafter total aufgeblähter code gewesen.

die Klasse braucht bei mir mit UART ausgabe 1840byte auf nem atmega328p, 
ich find das geht.

von Vlad T. (vlad_tepesch)


Lesenswert?

Niki Tesla schrieb:
> Entweder bist du sehr mutig oder kommst aus der Arduino-Ecke.
> In beiden Fällen ist es Speicherplatzverschwendung.

du bist entweder ein Troll oder hast keine Ahnung.
Sag doch mal, welches der von ihm benutzten c++ Features Overhead 
erzeugen soll?

von Vlad T. (vlad_tepesch)


Lesenswert?

@gawin:
Hier ist was dich eventuell auch noch interessiert.
sollte wahrscheinlich leicht an deinen Controller anzupassen sein.
http://www.raphnet.net/electronique/4nes4snes/index_en.php

Und noch ein Tip:
Warum speicherst du die Bitpositionen und nicht die einmal im 
Konstruktor berechneten Bitmasken?

von Robin G. (gawin)


Lesenswert?

@Vlad Tepesch:
  Danke für die Tipps.

  Das mit dem Adapter sieht nicht schlecht aus, werd ich mir mal genauer
  ansehen, hab im Moment aber nur einen Controller und da is
  rumprobieren schwer ^^.

  Das mit den Bitmasken werd ich mal machen, hab ich noch gar nicht
  drüber nachgedacht gehabt.
  Da ich noch nicht so lange AVR C/C++ programmiere bin
  ich für alle Tipps dankbar ;).


Ich uploade heute Abend oder Morgen dann die überarbeitete version.

von Marwin (Gast)


Lesenswert?

Vlad Tepesch schrieb:

> du bist entweder ein Troll oder hast keine Ahnung.

Er ist wohl Beides.

von Robin G. (gawin)


Angehängte Dateien:

Lesenswert?

So hab das mit den Bitmasks geändert, PORT/DDR zugriffe reduziert und 
noch ein bisschen kommentiert.

Und wenn Ihr noch irgent welche befehle für den PSOne Controller kennt 
lasst es mich doch bitte wissen ;).

Gruß Robin

von Robin G. (gawin)


Angehängte Dateien:

Lesenswert?

Ich hab ne PS2 Commando liste gefunden und konnte es nicht lassen. Hab 
nochmal alles überarbeitet von den Namen bis zum auslesen.
Man kann jetzt auch sagen ob Digital oder Analog Modus und ob man über 
den Analog-knopf wechseln darf.

Als nächstes werde ich noch das Rumble feature einbauen.

Hoffe ich hab in der header datei genug erklärt, wenn nicht fragt 
einfach ;).

Gruß Robin

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.