Hallo
Ich hab jetzt mal eine vorabversion, ist noch nicht ganz Stabil und noch nicht vollsändig.
Das Tool Steuert mit dem RN-Control v1.4 übers I2C Kabel ein RN-Schrittmotorsteuerungsboard an, das RN-Controlboard wird über den RS232-port am Com-port1 des Pcs angeschlossen (Port auswahl gibt es bisher noch keine)
Bild
Bild hier
Tool
RN-SchrittmotorSteuerung.zip
AVR Code (RN-Control v1.4)
Code:
'===CHIP SETTINGS===
Declare Sub Abfrage() As Byte
$regfile = "m32def.dat"
$framesize = 64
$swstack = 64
$hwstack = 64
$crystal = 16000000 'Quarzfrequenz
$baud = 38400
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1
'===CHIP SETTINGS END===
Config Serialin = Buffered , Size = 20
Enable Interrupts
Dim Inputstring1 As Byte
Dim Inputstring2 As Byte
Dim Inputstring3 As Byte
Dim Inputstring4 As Byte
Const Inputstring5 = 0
Const I2crnmotorslaveadr = &H58 'I2C SlaveAdresse von RN-Schrittmotor Erweiterung
Const I2crnmotorsreadlaveadr = &H59 'I2C SlaveAdresse von RN-Schrittmotor Erweiterung
Dim I2cdaten(7) As Byte
Dim Schritte As Long
Dim Temp As Byte
Dim Ltemp As Long
Dim Umdrehungen As Single
Dim Fahrstrecke As Word
Dim Data_available As Byte
Dim Endschalter As Byte
Dim Motorstatus As Byte
Do
Data_available = Ischarwaiting()
If Data_available = 1 Then
Input "" , Inputstring1 , Inputstring2 , Inputstring3 , Inputstring4 ', Inputstring5
I2cdaten(1) = Inputstring1
I2cdaten(2) = Inputstring2
I2cdaten(3) = Inputstring3
I2cdaten(4) = Inputstring4
I2cdaten(5) = Inputstring5
I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
If Inputstring1 = 101 Then
If Inputstring2 = 1 Then
I2cstart
I2cwbyte I2crnmotorsreadlaveadr
I2crbyte Motorstatus , Nack
I2cstop
Print "Motorstatus_Motor1" ; Motorstatus
Else
I2cstart
I2cwbyte I2crnmotorsreadlaveadr
I2crbyte Motorstatus , Nack
I2cstop
Print "Motorstatus_Motor2" ; Motorstatus
End If
End If
End If
I2cdaten(1) = 102
I2cdaten(2) = 1
I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
I2cstart
I2cwbyte I2crnmotorsreadlaveadr
I2crbyte Temp , Ack
Schritte = Temp
I2crbyte Temp , Ack
Ltemp = Temp * 256
Schritte = Schritte + Ltemp
I2crbyte Temp , Ack
Ltemp = Temp * 65536
Schritte = Schritte + Ltemp
I2crbyte Temp , Nack
Ltemp = Temp * 16777216
Schritte = Schritte + Ltemp
I2cstop
Print "A" ; Schritte ' Motor 1
Waitms 10
I2cdaten(1) = 102
I2cdaten(2) = 2
I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
I2cstart
I2cwbyte I2crnmotorsreadlaveadr
I2crbyte Temp , Ack
Schritte = Temp
I2crbyte Temp , Ack
Ltemp = Temp * 256
Schritte = Schritte + Ltemp
I2crbyte Temp , Ack
Ltemp = Temp * 65536
Schritte = Schritte + Ltemp
I2crbyte Temp , Nack
Ltemp = Temp * 16777216
Schritte = Schritte + Ltemp
I2cstop
Print "B" ; Schritte ' Motor 2
Waitms 10
Loop
End
Tipps:
Bewegt die Regler nicht so schnell.
Sollte das Tool oder das Controlboard nicht reagieren Resetet beide Boards Manuell über den Tasten auf den Boards
Lesezeichen