Hallo,
Ich habe versucht den 16 Bit Schieberegister von einem Snes Controller aus zu lesen.
Unter RN-Wissen steht auch eine Anleitung dazu aber ich komme da nicht weiter.
hier erstmal der Link: www.rn-wissen.de/index.php/SNES_Controller
ich habe versucht das mit Waitus zu realiesiren aber irgendwie liest der so nichts aus ...
kann mir da jemand weiter helfen ?
Code:$regfile = "m32def.dat" 'für mega 32 $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 16000000 'Quarzfrequenz $baud = 9600 'für RS232 ' Um das Register auszulesen muss der SNES Controller zunächst initialisiert werden: Config Portc.0 = Output 'Clock Config Portc.1 = Output 'Latch Config Portc.2 = Input 'Data Portc.2 = 0 'Pullup Widerstand ein Portc.0 = 1 Portc.1 = 0 ' Tasten auf dem Controller Dim Rauf As Integer Dim Runter As Integer Dim Links As Integer Dim Rechts As Integer Dim Go As Integer Dim Sel As Integer Dim A As Integer Dim B As Integer Dim Y As Integer Dim X As Integer Dim L As Integer Dim R As Integer Dim I As Integer ' --------------------------------------------------------- ' --------------------- Hauptprogramm --------------------- ' --------------------------------------------------------- Do ' Die Datenübertragung muss initialisiert werden. ' Dieser Schritt muss bei jedem Auslesen des Registers durchgeführt werden. Portc.1 = 1 Waitus 12 Portc.1 = 0 ' Nun können die 16 Bit des Registers wie folgt ausgelesen werden ' (folgendes also 16 Mal wiederholen) For I = 0 To 15 Waitus 6 Portc.0 = 0 If I = 0 Then Print Portc.2 Elseif I = 1 Then Print Portc.2 Elseif I = 2 Then Print Portc.2 Elseif I = 3 Then Print Portc.2 Elseif I = 4 Then Print Portc.2 Elseif I = 5 Then Print Portc.2 Elseif I = 6 Then Print Portc.2 Elseif I = 7 Then Print Portc.2 Elseif I = 8 Then Print Portc.2 Elseif I = 9 Then Print Portc.2 Elseif I = 10 Then Print Portc.2 Elseif I = 11 Then Print Portc.2 Elseif I = 12 Then Print Portc.2 End If Waitus 6 Portc.0 = 1 Next I ' --------------------------------------------------------- ' ------------------ Hauptprogramm Ende ------------------- ' --------------------------------------------------------- Print "Ende" Wait 1 Loop End
Also, ohne mich groß in den SNES-Controller eingedacht zu haben, fällt mir schon mal ein "klassischer" Fehler auf:
Du konfigurierst C.2 als Input, schreibst dann aber "Print PORTC.2". Ich nehme ja mal an, dass Du den Eingangspegel an C.2 meinst - diese müssen aber über die PIN-Register abgefragt werden (also Print PINC.2). Mit PORTC.2 beeinflusst Du den PullUp-Widerstand, der aktiviert wird, wenn PORTC.2 1 ist (und nicht 0).
Darüber hinaus fällt mir auf, dass Du in der langen "Elseif"-Schleife für alle I-Werte genau das gleiche machst, nämlich Print PORTC.2. Mal davon abgesehen, dass wahrscheinlich PINC.2 gemeint sein dürfte, könntest Du das Ganze wesentlich einfacher haben:
Code:Portc.1 = 1 Waitus 12 Portc.1 = 0 For I = 0 To 15 Waitus 6 Portc.0 = 0 Print PINC.2 Waitus 6 Portc.0 = 1 Next I' --------------------------------------------------------- ------------------ Hauptprogramm Ende ------------- --------------------------------------------------------- Print "Ende" Wait 1 Loop End
Lesezeichen