![]() |
![]() |
![]() |
|
|||||||
| Home | PSP News | Chat | Spielhalle | Neueste Beiträge | Registrieren | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
![]() |
![]() |
|
|
LinkBack | Themen-Optionen |
|
|
|
|
#1 (permalink) |
Title: Moderator
Registriert seit: 27.06.2007 Wohnort: /home/tokyodrift Firmware: - Posts: 3.538 Marktplatz: 2 / 100%
|
Hey,
I'm going to write some stuff about my latest project here. According to the title it's about connecting a standard, unmodded PS/2 mouse to the PSP. I'll write in english and german since this is a german forum but I'll most likely use this thread to show my project to people all over the world (I know that nobody's interested in it). So let's go! Hey, ich werde hier ein bisschen über mein neuestes Projekt erzählen. Wie aus dem Titel ersichtlich geht es darum, eine unmodifizierte PS/2 Maus mit der PSP zu verbinden. Ich werde sowohl auf englisch alsauch auf deutsch schreiben da dies ein deutsches Forum ist, ich diesen thread aber wahrscheinlich nutzen werde um leuten von überall her mein Projekt zu zeigen (obwohl ich weiß dass es keinen interessiert). Also los gehts! 1. The Beginning I was often asked to connect some USB Hardware to the PSP by people. Of course this is not working because the PSP USB Port is not an USB host. Some time ago I was not able to think about hardware design and such stuff. This changed when I started messing around with microcontrollers - small processors with integrated stuff like RAM, flash, EEPROM and so on. I started learning RISC assembler - not for use with PSP but with ATMEL's 8bit AVR ATmega series. Then - not long ago someone asked me to connect a USB Mouse to PSP. First thing I thought was "not possible". But then I thought again and finally got an idea. I'll use the PSP's serial port. I'm able to send and recieve data using the ATmega's UART. Seemed like it would be very easy. Then the problems came. At first I started looking at the USB HID protocoll and I understood very soon that my skills are too less to implement a software usb host on the ATmega. I even doubt this is possible at all. Then I thought about the PS/2 protocoll and it was pretty simple to understand. It's just SPI. 1. Die Anfänge Ich wurde oft gebeten USB Hardware mit der PSP zu verbinden. Natürlich geht das nicht weil der PSP USB Port kein USB Host ist. Vor einiger Zeit konnte ich noch nicht einmal an eigene Hardware und sowas denken. Das hat sich geändert als ich angefangen hab mit Mikrocontrollern rumzubasteln - das sind kleine Prozessoren mit eingebauter peripherie wie RAM, Flash, EEPROM und so weiter. Ich habe angefangen RISC Assembler zu lernen - nicht für die PSP sondern für ATMELs 8bit AVR ATmega serie. Dann - nicht lange her - hat mich jemand gebeten eine USB Maus an die PSP zu bauen. Ich habe natürlich gleich wieder gedacht "unmöglich" aber nach ein bisschen mehr nachdenken hatte ich eine idee. Ich würde einfach den seriellen Port der PSP nutzen. Ich kann Daten senden und empfangen indem ich den UART des ATmegas nutze. Das hat ziemlich einfach ausgesehen. Dann haben die Probleme angefangen. Zuerst habe ich mir das USB HID Protokoll angeschaut und ziemlich schnell verstanden, dass ich zu wenig Skills habe einen Software USB Host auf dem ATmega zu implementieren. Ich bezweifle sogar dass das überhaupt geht. Dann habe ich über das PS/2 Protokoll nachgedacht und es sofort verstanden. Es ist nur SPI. 2. First Trys The first thing I did was disassembling a PS/2 Mouse. It was a pretty old one and that made me understand how it works. I pulled out the PS/2 cable and soldered 4 wires instead. That was only because I didn't want to cut the PS/2 cable. THIS WAS THE ONLY HARDWARE MOD I DID! I reassembled the mouse. The next thing I made was a breadboard with a ATmega8 on it. I connected a ISP Programmer, some LEDs and of course the mouse. I checked wether I get a signal from the mouse and I did! That was the first important thing to know. It basicly works. 2. Erste Versuche Das erste was ich gemacht habe war eine PS/2 Maus auseinanderbauen. Es war eine ziemlich alte Maus und deswegen habe ich ziemlich gut verstanden wie sie funktioniert. Ich habe das PS/2 Kabel abgesteckt und stattdessen 4 dünne Drähte angelötet weil ich das PS/2 Kabel nicht aufschneiden wollte. DAS WAR DIE EINZIGE HARDWAREMODIFIKATION DIE ICH VORGENOMMEN HABE! Ich habe die Maus wieder zusammengebaut. Das nächste was ich gemacht habe war eine Steckplatine mit einem ATmega8 drauf. Ich habe ein ISP Programmiergerät, einige LEDs und natürlich die Maus angeschlossen. Ich habe geprüft ob ich ein signal von der Maus erhalte und das hat funktioniert! Das war die erste sehr wichtige Sache die ich wissen musste. Es funktioniert grundsätzlich. 3. AVR Software Part 1 The next thing I had to do was writing the get_byte function. That sucked a bit. I didn't know how to use hardware SPI, so I made it in software. I finally received the 0xAA 0x00 bytes - the mouse is working and ready. Wrinting the send_byte function was a bit harder. I had to write a odd_parity function, too. That would make problems later but at that time I didn't know. I finally got that function working, too. I was able to initialize the mouse and receive the movement data. I quickly integrated hardware UART. The code was VERY bad at that moment but it seemed to work for the moment. 3. AVR Software Teil 1 Das nächste was ich machen musste war die get_byte funktion zu schreiben. Das hat ein bisschen genervt. Ich habe nicht gewusst wie ich das Hardware-SPI nutze und habe es deswegen in software gemacht. Ich habe nach einiger Arbeit endlich die 0xAA 0x00 Bytes empfangen - die Maus funktioniert und ist bereit. Die send_byte Funktion zu schreiben war ein bisschen schwieriger. Ich musste zB. auch eine odd_parity funktion schreiben müssen. Diese wird später noch Probleme machen aber das wusste ich zu diesem Zeitpunkt noch nicht. Ich hab die funktion aber letztendlich auch hinbekommen. .Ich konnte die Maus initialisieren und Bewegungsdaten empfangen. Ich habe schnell noch Hardware-UART integriert. Der Code war zu diesem Zeitpunkt SEHR schlecht aber es schien zu funktionieren. 4. Extending the Hard- and AVR-Software I did not have a PSP Remote Connector so I first tried to get it working with the PC. I connected a MAX232 and some other stuff for using the serial output with the PC. I took away the LEDs and just connected 3 - one for ERROR, one for WAITING FOR MOUSE and one is EVERYTHING'S OKAY. I disconnected the speaker as well. I found out that my odd_parity function is not working well - sometimes it calculated the parity bit wrong. That caused errors. I fixed the mistake and improved the rest of the code. I even made the Mouse hotpluggable - normally PS/2 is not! 4. Erweitern der Hard- und AVR-Software I hatte keine PSP Remote Stecker also habe ich als erstes versucht das ganze mit dem PC zu verbinden. Ich habe einen MAX232 und ein bisschen anderes Zeug angeschlossen um den seriellen Ausgang mit dem PC zu nutzen. Außerdem hab ich die LEDs und den Lautsprecher wegemacht und nurnoch 3 LEDs angeschlossen - eine für FEHLER, eine für WARTE AUF MAUS und eine für ALLES OK. Ich habe gemerkt dass meine odd_parity funktion nicht richtig funktioniert - manchmal berechnet es das parity bit falsch. Das hat Fehler verursacht. Ich hab den Fehler behoben und den Rest des Codes verbessert. Ich habe die Maus sogar hotpluggable gemacht - normalerweise kann PS/2 das nicht! 5. Writing PC Software I'll keep this short. I wrote a PC app using Microsoft Visual C#.net. It connects with the COM port, reads the input and moves the cursorr according to the input. There were not many problems about this. 5. Schreiben der PC Software Ich halte das hier kurz. Ich habe ein PC Programm mit Microsoft Visual C#.net geschrieben. Es verbindet sich mit dem COM Port, liest die eingaben und bewegt den Mauszeiger entsprechend der eingaben. Es gab dabei nicht viele Probleme. Geändert von TokyoDrift (30.04.2009 um 21:50 Uhr). |
|
![]() |
![]() |
| The Following 7 Users Say Thank You to TokyoDrift For This Useful Post: |
all.4.one (03.05.2009),
Bananenkönig (04.05.2009),
HDX2005 (02.05.2009),
philleb (17.08.2009),
PSP-Tobi (03.05.2009),
psycho-killer (01.05.2009),
Ultimate91 (02.05.2009)
|
| Sonstige Tipps (Registrierte User sehen diese Banner nicht!) |
|
|
|
|
|
|
#2 (permalink) |
Title: Moderator
Registriert seit: 27.06.2007 Wohnort: /home/tokyodrift Firmware: - Posts: 3.538 Marktplatz: 2 / 100%
|
6. Writing PSP Test App
I finally got a PSP Slim Remote and connected the ATmega8 to the PSP. I tried to get the serial stuff working on 3.xx / 4.xx / 5.xx. It didn't. I had to use Jeans SIO PRX. I first used the debugScreen. The app works pretty much the same like the PC app. 6. Schreiben des PSP Test Programm Ich habe endlich eine PSP Slim Remote bekommen und den ATmega8 mit der PSP verbunden. Ich habe versucht das serielle zeug unter 3.xx / 4.xx / 5.xx zum laufen zu bekommen aber es hat nicht funktioniert. Ich musste Jeans SIO PRX nutzen. Zuerst habe ich auch den debugScreen genutzt. Das Programm funktioniert ziemlich gleich wie das PC Programm. 7. Improving PSP Test App I improved some mouse stuff like scaling and sample rate and of course switched to the graphical screen. The cursor moves smoothly and fast. I can even get the scrolling wheel and the mouse buttons. I think the PSP Test App is finished as soon as the bugs are fixed (home not working + serial stopps at 7 to 8kb). 7. Verbessern des PSP Test Programms Ich habe ein bisschen Maus-Zeug verändert wie Scaling und Sample Rate und natürlich habe ich zum grafischen Bildschirm gewechselt. Der Mauszeiger bewegt sich schnell und flüssig. Ich kann sogar das Scrollrad und die Tasten abfragen. Ich denke das PSP Test Programm ist soweit fertig wenn die Bugs behoben sind (Home funktioniert nicht + serieller Übertragung stoppt bei 7 bis 8kb) 8. Hooking Now one of the last important things to reach my aim is done. I can hook into the sceCtrlReadBufferPositive function and change what it returns. I can change buttons now or simulate pressed buttons. One bad thing is that I can't change buttons in the XMB. If a button is pressed my patched function is called but it doesn't recognize my changes. Probably it uses a different function to get the input, too. The kernelmode-NIDs of the Ctrl module are not cracked yet. 8. Hooken Jetzt ist einer der letzten wichtigen dinge erledigt, die mich noch von meinem Ziel trennen. Ich kann mich in die sceCtrlReadBufferPositive Funktion hooken und das ändern, was die Funktion zurückgibt. Ich kann jetzt also Knöpfe tauschen oder gedrückte Knöpfe simulieren. Das schlechte ist dass ich die Buttons im XMB nicht tauschen kann. Meine gepatchte Funktion wird zwar aufgerufen aber die PSP erkennt nicht wenn ich etwas ändere. Wahrscheinlich nutzt das XMB zusätzlich noch eine andere Funktion um die Buttons abzufragen. Die Kernelmode-NIDs des Ctrl Moduls wurden ja noch nicht gecrackt. 9. Writing A Plugin The last major software thing is done now. I wrote a plugin that gets the input from the avr and simulate button presses from what it receives. I can play games now using the mouse. There are still some things I want to change, like having a config file that says what mouse action is what button and so on but it's done basicly now. 9. Ein Plugin Schreiben Die letzte große Software Sache ist erledigt. Ich habe ein Plugin geschrieben das die Eingaben vom AVR bekommt und an der PSP Buttons simuliert. Ich kann jetz Spiele mit der Maus spielen. Es sind immernoch ein paar Sachen da, die ich ändern will, wie zB dass es eine Konfigurationsdatei gibt in der steht welche Mausaktion welchem Button entspricht und so aber grundsätzlich ist es jetzt fertig. 10. Thinking About Some Hardware I routed a board. Well the real needed hardware is quite small but there is some extra stuff that has to get on the board, too. I'll use a MAX1674 to get the needed 5V from the 1.9V / 2.5V the PSP outputs. I routed the circuit board in SMD. There is no PS/2 Prt since I did neither found a SMD one nor one at all. If someone knows where to get them, PM me! Whatever, now you have to solder a PS/2 cable to the board and a PSP SIO cable. 10. Über Die Hardware Nachdenken Ich habe eine Platine geroutet. Die eigentlich benötigte Hardware ist recht klein aber es gibt ein paar Dinge die zusätzlich auf die Platine müssen. Ich werde zB einen MAX1674 nutzen um die benötigten 5V aus den 1.9V / 2.5V der PSP zu bekommen. Ich hab die Platine in SMD gerpoutet. Es ist keine PS/2 Buchse drauf weil ich weder eine in SMD noch überhaupt eine gefunden habe. Wenn jemand weiß wo es die gibt, schreib mich an! Jedenfalls muss man nun eben ein PS/2 Kabel und ein PSP SIO Kabel an die Platine löten. ![]() 11. Making a PCB Part1 I finally decided to produce the board in series. Well till I can do this it'll be a long way, but I started today. I never etched a PCB before so I've got to try around very much. I was trying to "print" the circiut to the board but I wasn't exactly succesfull. I can't be assed trying around more today. I got the circiut to the board but it's not exactly and some conducting paths are corruptet or even missing. I'm using 10mil paths btw. Well you can see the result on the picture. 11. Ein PCB Erstellen, Teil 1 Ich habe mich letztendlich dazu entschlossen in Serie zu gehen. Naja, bis dahin ist es noch ein langer weg aber ich habe heute angefangen. Ich habe zuvor noch nie ein PCB geätzt also muss ich ziemlich viel rumprobieren. Ich habe versucht das Layout auf die Platine zu "drucken" aber ich war nich wirklich erfolgreich. Ich hab aber keine Lust mehr heute noch mehr zu probieren. Ich hab das Layout zwar auf die Platine gebracht aber verschwommen und ein paar Leiterbahnen sind kaputt oder fehlen sogar ganz. Ich verwende übrigens 10mil Leiterbahnen. Naja, man kann das Resultat auf dem Bild sehen.
Spoiler:
12. Thinking About A Keyboard Some people asked me "Why don't you add keyboard support?". Well I saw this project as a challenge from the beginning and not adding keyboard support would be like giving up. So I'll do it. I bet with a guy I know, I sayed I can controll Coded Arms with keyboard and mouse on monday. I'm almost sure I'll make it. 12. Über Eine Tastatur Nachdenken Ein paar Leute haben mich gefragt "Warum baust du keinen Tastatur-Support ein?". Naja ich hab das Projekt eh von Anfang an als Herausforderung gesehen und wenn ich keinen Tastatur-Support einbauen würde wäre das ja wie aufgeben. Also werd ichs machen. I hab mit jemand den ich kenne gewettet dass ich Coded Arms bis Montag mit Maus und Tastatur spielen kann. Ich bin mir ziemlich sicher dass ich das schaffe 13. Preparing A Keyboard I disassembled a PS/2 keyboard and saw what I hoped to see. it was just a pretty small PCB connected to a button matrix. I did no real hardware modification again. The only thing I did was replacing the PS/2 cable with 4 wires. 13. Vorbereiten Der Tastatur Ich habe eine PS/2 Tastatur auseinandergebaut und gesehen was ich zu sehen hoffte. Es war ein ziemlich kleines PCB an das eine Button Matrix angeschlossen war. Ich habe wieder keine echte Hardware Modifikation vorgenommen. Das Einzige was ich gemacht habe war das PS/2 Kabel mit 4 dünnen Drähten ersetzen. 14. Rewriting The Software Okay, that was a pretty hard part. I do not want to use 2 or even more microcontroller, but get mouse and keyboard working at the same time. Since no multithreading is avaiable I had to make everything interrupt handled. Well, it works now but I have to get hotplugging working again. Have a look at the progress in the video. 14. Software Neu Schreiben Okay, das war ein ziemlich komplizierter Teil. Ich will nicht 2 oder sogar noch mehr Microcontroller nutzen aber Maus und Tastatur sollen gleichzeitig funktionieren. Weil kein Multithreading verfügbar ist musste ich alles interupt handled machen. Naja, es funktioniert jetzt aber ich muss hotplugging wieder einbauen. Schaut euch doch das Video an. 15. New Hardware I soldered my hardware to a proper board. I don't have every part for now, serial connection to PC and the 5V power from PSP SIO is still missing, will get the missing parts next week I hope. 15. Neue Hardware Ich habe meine Hardware jetz auf eine vernünftige Platine gelötet. Ich habe aber leider noch nicht alle Teile da, die serielle verbindung zum PC und die 5V aus dem PSP SIO Port fehlen noch, ich werde die übrigen Teile wohl hoffentlich nächste woche bekommen.
Spoiler:
Geändert von TokyoDrift (01.06.2009 um 01:28 Uhr). |
|
![]() |
![]() |
| The Following 16 Users Say Thank You to TokyoDrift For This Useful Post: |
all.4.one (03.05.2009),
Bananenkönig (04.05.2009),
Blake_MaX (01.05.2009),
hackerx (02.05.2009),
HDX2005 (02.05.2009),
horny 007 (03.05.2009),
philleb (17.08.2009),
PSP-Tobi (03.05.2009),
pspfreak3000 (01.05.2009),
psycho-killer (01.05.2009),
Revenger (02.05.2009),
Rooler-93 (17.06.2009),
sanjok1993 (03.05.2009),
Ultimate91 (02.05.2009),
Voolias (03.05.2009),
ZOD!@K (02.05.2009)
|
|
|
|
|
#4 (permalink) |
Title: PSP-Entdecker
Registriert seit: 24.06.2007 Wohnort: Midgard Firmware: 5.00 M33-4, Bruder genauso Alter: 17
Posts: 306 Marktplatz: 0 / 0%
|
td, kannst du mal was über die kosten bezüglich der benutzten hardware auskunft geben?
__________________
Für Tod, Satan und Vernichtung!
![]() |
|
![]() |
![]() |
|
|
|
|
#5 (permalink) |
Title: Moderator
Registriert seit: 27.06.2007 Wohnort: /home/tokyodrift Firmware: - Posts: 3.538 Marktplatz: 2 / 100%
|
naja...das teuerste war das PSP Remote kabel, da hab ich 10 euro gezahlt
was die maus kostet weiß ich nich, die lag bei mir im schrank der controller kostet 1,50€, die leds und wiederstände ein paar cent also ohne das kabel is das nich teuerer als 2,50€ gewesen... TD |
|
![]() |
![]() |
|
|
|
|
#6 (permalink) |
Title: PSP Noob
Registriert seit: 01.11.2007 Wohnort: 127.0.0.1 Firmware: 5.00M33-4 Phat Posts: 13 Marktplatz: 0 / 0%
|
Echt kewl was du da gemacht hast! Das mit den Kosten würd mich aber auch sehr interessieren.
Edit: Oh, war ich wohl zu langsam, thx ;D Edit2: Hast du vor ein Tutorial zu schreiben, wie ich als Nachwuchsnerd (der mit einem Lötkolben umgehen kann xD) nachbauen kann? |
|
![]() |
![]() |
|
|
|
|
#8 (permalink) | ||
Title: Moderator
Registriert seit: 27.06.2007 Wohnort: /home/tokyodrift Firmware: - Posts: 3.538 Marktplatz: 2 / 100%
|
Zitat:
ich kann bei gelegenheit nen sauberen schaltplan machen und den posten aber das sind nich 2 wiederstände aneinandergelötet, da ist ein kleiner prozessor drinn der die daten verarbeitet und den muss man auch programmieren, dafür braucht man ein programmiergerät außerdem muss man das auf ne platine machen Zitat:
brauch aber die ganzen bauteile dann noch in SMD TD |
||
|
![]() |
![]() |
| Sonstige Tipps (Registrierte User sehen diese Banner nicht!) |
|
|
|
|
|
|
#9 (permalink) |
Title: PSP-Lehrer
Registriert seit: 04.09.2008 Wohnort: Steiermark Firmware: PSP Fat > 6.20 [TimeMachine > 3.40OE-A; 500 M33- 3] Posts: 734 Marktplatz: 0 / 0%
|
Ich kapier nich wodurch die PSP weiß, welche Tasten welche Tasten sind (z.B.: normale Bewegung der Maus -> Joystick oder Dopperlklick -> X). Würd mich über ne antwort freuen.
__________________
![]() |
|
![]() |
![]() |
|
|
|
|
#10 (permalink) |
Title: PSP Grünschnabel
Registriert seit: 08.09.2008 Wohnort: Hamburg Firmware: 5.50 Gen-B2 (Full) Posts: 140 Marktplatz: 0 / 0%
|
WoW, nice work TD, ich frag mich wie man so etwas zustande brimgen kann. :O
Ich mein diese ganzen Verbindungen etc, woher weißt du das alles ? =/ Geändert von Voolias (03.05.2009 um 08:56 Uhr). |
|
![]() |
![]() |
| Tipps |
|
|
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Neue Mouse technologie ! BlueTracking | ~[Z0qq3r]~° | Computer & Internet | 8 | 22.10.2008 21:25 |
| Project 8 | evilcutz | Spiele | 2 | 24.07.2007 22:50 |
| Suche ne Gaming Mouse für Pc !! | matzinger1 | Suche | 5 | 02.06.2007 22:39 |
| [Verkaufe] Mouse | ~[Z0qq3r]~° | Biete | 10 | 28.05.2007 19:25 |
| XMB Project Beta v1 | P22 | Software & Homebrew | 3 | 04.05.2007 20:25 |