Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Hallo Epp, > > > Dim I2cdaten(6) As Byte > > I2cdaten(1) = 10 'Kennung muss bei RN-Motor immer 10 sein > > I2cdaten(2) = 1 ' Befehlscode > > I2cdaten(3) = 241 '1 Parameter > > I2csend &H56, I2cdaten(1),5 'Befehl wird gesendet > > > > dadurch wird dann z.B. der maximal zulässige Motorstrom gesetzt. > > Mein CC2 Programm sieht wie folgt aus: > > > > i2c.start(86); //Hex56=Dec86 > > i2c.write(10); //Byte 1 Kennung > > i2c.write(10); //Byte 2 Befehlscode_Motorstrom setzen > > i2c.write(0); //Byte 3 Linker Motor > > i2c.write(100); //Byte 4 1 Ampere > > i2c.write(0); //Byte 5 Ungenutzt > > i2c.stop(); > > Was mitr hier als erstes auffällt, ist, daß Du zwar im Kommentar schreibst, daß Du den > Motorstrom setzt, jedoch ist "10" lt. Anleitung das Kommando für Motor einschalten. > Aber das wichtigste ist ersteinmal rauszufinden, ob die Schaltung überhaupt reagiert. > Dazu kannst Du einen Busscan machen: > <code> > thread main > {byte i; > hwcom.init(); > hwcom.setspeed(8); > hwcom.clr(); > hwcom.print("I2C-Scanprogramm"); > hwcom.ret(); > hwcom.ret(); > hwcom.print("Addr.\9Write\9Read"); > for i = 0 ... 254 step 2 > { > hwcom.num(i); > hwcom.tab(); > if i2c.cstart(i) > hwcom.print("OK"); > else > hwcom.print("n.c."); > i2c.stop(); > hwcom.tab(); > if i2c.cstart(i or 1) > hwcom.print("OK"); > else > hwcom.print("n.c."); > i2c.stop(); > hwcom.ret(); > } > quit 1; > }</code> > Über Hyperterminal kannst Du Dir dann anzeigen lassen, auf welchen Adressen > sich I²C-Bus-Bausteine befinden. > Wird an der Adresse für dein RN-Motor nichts gefunden, so ist dieses entweder falsch > angeschlossen oder funzt einfach nicht. > Falsch anschließen kann man eigentlich I²C-Bus-Hardware nicht: > SDA kommt an SDA, > SCL an SCL und > GND and GND (=bitte nicht vergessen) > > Extra Pull-Ups etc. benötigst Du kein kurzen Busleitungen nicht, da die CC2-Unit, > nicht das Appl.Board, breits Pull-Ups am Bus besitzt. > > Ist der Busscan erfolgreich, so kannst Du auch die Funktion <code>i2c.send()</code> > verwenden. Diese ist dann analog zu der BASCOM-Funktion. > Jedoch mußt Du bei einem Array dann Null-basierend arbeiten: > <code> > byte data[6]; > data[0]=10; > data[1]=10; > data[2]=0; > data[3]=100; > i2c.send(0x56, data, 5); > </code> > Dies steht jetzt für das Setzen der Strombegrenzung des linken Motors auf 1A. > Die Funktion gibt True zurück, wenn die Übertragung erfolgreich war, > und False, wenn nicht. > Mit <code>lcdext.zahl()</code> kannst Du Dir das z.B. auf ein externes Display > ausgeben lassen. > > MfG André H. > > PS: Benutze bitte das Code-Tag, wenn Du C2-Quellcode postest. > Ansonsten wird dieser u.U. nicht korrekt dargestellt und ist auch schlechter lesbar.