Gast
#2036520
Hallo :) Ich möchte einen Gamecube-Controller zu USB-Converter bauen, um den Controller am PC anschließen zu können. Dafür setze ich einen ATTiny45 ein. Dieser wird über einen Spannungsregler mit 3,3V versorgt. Das Protokoll habe ich von http://int03.co.uk/crema/hardware/gamecube/gc-control.htm Wie auf dem Bild zu sehen ist, funktioniert die Kommunikation, der linke teil stammt vom tiny, der rechte Teil ist die Antwort des Gamecube-controllers. Das Problem ist nur das einlesen der Werte. Dafür ist die ASM-Funktion ReadControllerByte zuständig. Wenn ich den Controller nicht anschließe, wird das Gerät korrekt als USB-Tastatur erkannt. Sobald ich aber den Controller anschließe, erkennt der PC das Gerät nicht mehr. Der Controller kann sich aber nicht aufgehängt haben, da er immernoch regelmäßig den Controller abfragt. Also muss in der Funktion der Fehler bei "ReadStart" liegen, denn diese Marke wird nur erreicht, wenn der Pin LOW ist (wenn der Controller diesen Pin runterzieht). Zum Protokoll: Bit 1 senden: 1µS LOW, 3µS HIGH Bit 0 senden: 3µS LOW, 1µS HIGH Die Funktion ReadControllerByte läuft zuerst in einer Warteschleife, bis der Controller den Pin auf LOW zieht. Danach wartet die Funktion 2µS (bei 16,5Mhz -> 33 Takte) und fragt dann den Pin ab. Beim 0-Bit sollte das eine 0 sein, beim 1-Bit eine 1. Der Code ist im wesentlichen von 1-Key-Keyboard abgeschrieben, nur an der Funktion buildReport und checkButtonChange habe ich etwas geändert Hoffe, ihr könnt mir da weiterhelfen :)
