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