Hallo!

Bastel grad an meinem ersten Roboter und bin ein totaler Bascomneuling. Möchte über einen PC + RN-Control 1.4 meinen Schrittmotor für die Lenkung steuern. Am PC läuft Labview. An der RN-Control hängt die standart L297/L298 Schaltung.
Portbeschaltung der RN-Control:

Portd.2 = CLOCK
Portd.3 = Direction
Portd.7 = Enable

Die Ports von Portc.0 bis einschließlich Portc.2 hab ich als Eingänge definiert. Sie sind mit meinem PC verbunden.
Das Board soll nun die oben genannten c-Ports in einer Endlosschleife abfragen, bis einer auf High gesetzt ist. Sollte das der Fall sein, muss das Unterprogramm Schrittmotor ausgeführt werden. Hier wird nun geprüft, wie die c-Ports geschaltet sind. Sie bleiben vom PC für eine Sekunde beschaltet, bevor alles wieder auf low gesetzt wird. Die Unterscheidung der Laufrichtung des Schrittmotors hängt von der Zusammensetzung der Low-High-Zustände der c-Ports ab. Je nachdem wie sie beschaltet sind wird im Schrittmotor-Unterprogramm ein entsprechendes weiteres Unterprogramm geöffnet.
Nun zu meinem Problem… es tut sich gar nichts am Motor. Meine Vermutung wäre, dass ich in einem Unterprogramm kein weiteres öffnen kann. Wäre echt dankbar, wenn mir hier jemand helfen würde.
So hier noch mein Quellcode:

Code:
Declare Sub Schrittmotor()                                  'Subs Ports und Variablen declarieren
Declare Sub Rechts0()
Declare Sub Rechts()
Declare Sub Links0()
Declare Sub Links()
Dim I As Integer
$regfile = "m16def.dat"
$crystal = 16000000
$baud = 9600

Config Pinc.0 = Input
Config Pinc.1 = Input
Config Pinc.2 = Input
Portc.0 = 0
Portc.0 = 0
Portc.0 = 0

Config Pind.2 = Output
Config Pind.3 = Output
Config Pind.7 = Output


Do                                                          'Endlosschleife
For I = 0 To 2
If Portc.i = 1 Then
Call Schrittmotor
Else
Waitms 20
End If
Next I
Loop
End

Sub Schrittmotor()                                          'Unterprogramm Schrittmotor
If Portc.0 = 1 And Portc.1 = 0 Then
   If Portc.2 = 0 Then
   Call Links0
   Else
   Call Links
   End If
   Else
   If Portc.0 = 0 And Portc.1 = 1 Then
      If Portc.2 = 0 Then
      Call Rechts0
      Else
      Call Rechts
      End If
   End If
End If
End Sub

Sub Links0()                                                'Unterprogramme, die je nach beschaltung der C-Ports ausgeführt werden
Portd.7 = 1
Portd.3 = 0
For I = 0 To 500
Portd.2 = 1
Waitms 5
Portd.2 = 0
Waitms 5
Next I
Portd.7 = 0
Portd.3 = 0
End Sub

Sub Links()
Portd.7 = 1
Portd.3 = 0
For I = 0 To 1000
Portd.2 = 1
Waitms 5
Portd.2 = 0
Waitms 5
Next I
Portd.7 = 0
Portd.3 = 0
End Sub

Sub Rechts0()
Portd.7 = 1
Portd.3 = 1
For I = 0 To 500
Portd.2 = 1
Waitms 5
Portd.2 = 0
Waitms 5
Next I
Portd.7 = 0
Portd.3 = 0
End Sub

Sub Rechts()
Portd.7 = 1
Portd.3 = 1
For I = 0 To 1000
Portd.2 = 1
Waitms 5
Portd.2 = 0
Waitms 5
Next I
Portd.7 = 0
Portd.3 = 0
End Sub
Neben bei noch, die Schrittmotorschaltung funktioniert wunderbar. Hab sie schon mit der RN-Control zum laufen bekommen.

Gruß