Hallo
Weil ich dein Leiden mal beenden will, habe ich mich etwas über dein RNFRA informiert. Neben der Aufbauanleitung sind auch ein paar Beispielprogramme online verfügbar, unter anderem auch das Beispiel Nr. 5 (das die Basis für dein Programm war?):
Code:
'###################################################
'Testprogramm 5
'für
'RoboterNetz Standard-Roboter Board RBFRA 1.2
'
'Aufgabe:
'Testen der Schrittmotortreiber
'Dreht erst linken Schrittmotor in beide Richtungen
'und dann rechten Schrittmotor in beide richtungen
'
'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de
'###################################################
Declare Sub Ledein
Declare Sub Ledaus
Const Writepowerport_adr = &H72 'I2C Adr PCF 2
Const Readpowerport_adr = &H73 'I2C Adr PCF 2
Dim I2cdaten As Byte 'Datenbyte aus PCF8574
Dim I As Word
$regfile = "M32def.dat" 'Anweisung fehlt im Orginal !!!
$crystal = 8000000 'Quarzfrequenz
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1
I2cinit
'******** Diese 4 Befehle sind nur ab RNBFRA Version 1.2 (nicht in V 1.1)
' notwendig und bzw. möglich (erweiterte Energiesparfunktion und LED´s)
' Bei Board 1.1 bitte auskommentieren oder löschen
I2cstart
I2cwbyte &H74 'Schreibbefehl an PCF3 schicken
' Led´s ein ,Motorendstufen ein, Port-Peripherie ein, RBN-Bus Sleep Modus aus (also Peripherie aktiv)
I2cwbyte &B00000010 'Datenbyte an PCF3
I2cstop
'*********
Config Pind.6 = Output 'Schrittmotoren Ein/Aus
Config Pinc.5 = Output 'Schrittmotor Links Richtung
Config Pinc.3 = Output 'Schrittmotor Links Step
Config Pinc.4 = Output 'Schrittmotor Rechts Richtung
Config Pinc.2 = Output 'Schrittmotor Rechts Step
Ledaus
Portd.6 = 0 'Schrittmotoren erst mal ausschalten
Wait 2
Ledein
Portd.6 = 1 'Beide Schrittmotoren einschalten
'Linker Schrittmotor
Portc.5 = 0 'Richtung
Portc.3 = 0
I = 400 'Anzahl der Schritte die Motor bewegt werden soll
Do
Ledaus
Portc.3 = 0
Waitms 5
Portc.3 = 1
Ledein
Waitms 5
I = I - 1
Loop Until I < 1
Portc.5 = 1 'Andere Richtung
I = 400 'Anzahl der Schritte die Motor bewegt werden soll
Do
Ledaus
Portc.3 = 0
Waitms 5
Portc.3 = 1
Ledein
Waitms 5
I = I - 1
Loop Until I < 1
Wait 2
'Rechter Schrittmotor
Portc.4 = 0 'Richtung
I = 400 'Anzahl der Schritte die Motor bewegt werden soll
Do
Ledaus
Portc.2 = 0
Waitms 5
Portc.2 = 1
Ledein
Waitms 5
I = I - 1
Loop Until I < 1
Portc.4 = 1 'Andere Richtung
I = 400 'Anzahl der Schritte die Motor bewegt werden soll
Do
Ledaus
Portc.2 = 0
Waitms 5
Portc.2 = 1
Ledein
Waitms 5
I = I - 1
Loop Until I < 1
Portd.6 = 0 ' Schrittmotoren erst mal ausschalten
Ledaus
End
Sub Ledein()
I2cstart
I2cwbyte Writepowerport_adr 'Schreibbefehl an PCF schicken
I2cwbyte 15 'Datenbyte an PCF
I2cstop
End Sub
Sub Ledaus
I2cstart
I2cwbyte Writepowerport_adr 'Schreibbefehl an PCF schicken
I2cwbyte 0 'Datenbyte an PCF
I2cstop
End Sub
Ganz schön komplex für den Einstieg. Und durch den Hilfskontroller auch noch kompliziert. Und peinlicherweise auch noch nicht kompilierbar, weil im Beispiel tatsächlich die $regfile-Anweisung fehlt (ich habe sie allerdings eingefügt, das Programm läßt sich so fehlerfrei übersetzen). Das Programm initialisiert das Board, schaltet eine LED und steuert zwei angeschlossene Schrittmotoren an. In der Anleitung zu finden ab Seite 39.
Ok, was hast du? Das RNFRA-Board (als Bausatz?!), zwei Schrittmotoren, ein Spannungsmessgerät, die Strombegrenzung nach Anleitung eingestellt, Testprogramm übersetzt und auf RNFRA übertragen und ausgeführt, alles funktioniert?
Ich würde jetzt erstmal solange rumfummeln bis das alles funktioniert. Wenn es dir zu kompliziert erscheint, arbeite die Anleitung nochmals durch.
Was mir noch aufgefallen ist: Das Board heißt im Onlinekatalog in der Überschrift RNFRA, im Text RNBFRA und im Programmkopf des Beispiels RBFRA. Artikelbezeichnung ist BSRNFRA32. Lustig ;)
Viel Spaß und Erfolg
mic
Lesezeichen