jagdfalke
21.12.2005, 17:44
Hi,
ich will einen Schrittmotor ansteuern. Nach dem Bascombeispiel, das mit dem rnbfra mitgeliefert wurde, wird da I2C benutzt. Ich weiß dummerweise nicht wie ich das was ich da sehe in C umsetzen kann:
'################################################# ##
'Testprogramm 5
'fr
'RoboterNetz Standard-Roboter Board RBNFRA 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
$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�lich (erweiterte Energiesparfunktion und LEDs)
' Bei Board 1.1 bitte auskommentieren oder l�chen
I2cstart
I2cwbyte &H74 'Schreibbefehl an PCF3 schicken
' Leds 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
Ich steh mal wieder völlig ohne ansatz da :(
mfg
jagdfalke
ich will einen Schrittmotor ansteuern. Nach dem Bascombeispiel, das mit dem rnbfra mitgeliefert wurde, wird da I2C benutzt. Ich weiß dummerweise nicht wie ich das was ich da sehe in C umsetzen kann:
'################################################# ##
'Testprogramm 5
'fr
'RoboterNetz Standard-Roboter Board RBNFRA 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
$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�lich (erweiterte Energiesparfunktion und LEDs)
' Bei Board 1.1 bitte auskommentieren oder l�chen
I2cstart
I2cwbyte &H74 'Schreibbefehl an PCF3 schicken
' Leds 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
Ich steh mal wieder völlig ohne ansatz da :(
mfg
jagdfalke