Hm, ich versuche es nocheinmal anders zu erklären:
Folgendes will ich erreichen:
Mit dem vom RN (über Robotikhardware) vertriebenen I2C-PC Adapter und dem dazugehörigen i2c_beispiel Programm (ab jetzt P1 genannt) möchte ich z.b. einen Wert von 5 an das RNBFRA-Borad senden.
Dort soll auf dem MEGA32-Chip ein Programm laufen (ab jetzt P2 genannt) welches den Wert empfängt, und daraufhin einen Servo bis an den Anschalg dreht.
Das würde mir als Test erstmal ausreichen.
Jetzt zu meinem bisherigen Vorgehen:
Mein P2 sieht bisher so aus:
---- Schnipp ----
Code:
'###################################################
'Servo-Ansteuerung via I2C
'TEST
'###################################################
$regfile = "m32def.dat"
'#### Servo-Zeugs ####
Declare Sub Rnb_servob(byval Servonummer As Byte , Byval Position As Byte)
Dim Pos As Byte
'#### I2C-Zeugs ####
Const Writeport_adr = &H7E
Const Readport_adr = &H72
Dim T As Byte , X As Byte , Senddata As Byte
X = 0
Senddata = 5
Config Scl = Portc.0
Config Sda = Portc.1
'#### Sonstiges-Zeugs ####
Dim I As Byte
Dim J As Byte
I = 1
J = 1
$crystal = 8000000
$baud = 9600
Wiederhole:
For I = 1 To 255
'Servo 1 dreht sich zur Kontrolle staendig hin und her
Pos = 1
Call Rnb_servob(1 , Pos)
Wait 1
Pos = 255
Call Rnb_servob(1 , Pos)
Wait 1
Print " "
Print " "
I2creceive Writeport_adr , X
Print "I2c WRITEPORT gelesen, Wert:"
Print X
'Servo 2 soll bei X gleich 3 reagieren
If X = 3 Then
Pos = 127
Call Rnb_servob(2 , Pos)
Wait 1
Pos = 20
Call Rnb_servob(2 , Pos)
Wait 1
Pos = 235
Call Rnb_servob(2 , Pos)
Wait 1
Pos = 127
Call Rnb_servob(2 , Pos)
Wait 1
End If
'Servo 3 soll bei X gleich 5 reagieren
If X = 5 Then
Pos = 255
Call Rnb_servob(3 , Pos)
Wait 50000
Pos = 0
Call Rnb_servob(3 , Pos)
Wait 50000
X = 0
End If
Next I
Goto Wiedehole
Sub Rnb_servob(byval Servonummer As Byte , Byval Position As Byte)
Open "comd.7:9600,8,n,1" For Output As #2
Print #2 , "#s" ; Chr(servonummer) ; Chr(position)
Close #2
End Sub
End
---- Schnapp ----
Jetzt sende ich über P1 an die SlaveID 126 (=Hex7E) den Wert 5
Allerdings komme ich so nicht weiter.
Habe ich vielleicht einen fatalen Denkfehler im Programm, oder verstehe ich was am I2C-Bus nicht richtig?
Ich wäre für "DIE" Lösung natürlich dankbar 
Vielen Dank im Voraus!
Lesezeichen