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 ----
---- Schnapp ----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
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!







Zitieren

Lesezeichen