Re: I2C Routinen Kategorie: I²C-Bus (von Epp - 1.03.2005 9:26) | ||
Als Antwort auf Re: I2C Routinen von André H. - 23.02.2005 23:44 | ||
| ||
Hallo André, ich habe die Funktion ausprobiert, hatte aber keinen Erfolg. Ich kann leider auch keine Logik hinter den Antworten des Motortreibers erkennen. Es scheint so, als ob es einen Unterschied macht, wie die Reihenfolge von Befehlen ist, d.h. es erscheinen Unterschiedliche Ergebnisse, selbst wenn ich genau das gleiche Programm nach einem CC2-Reset wieder laufen lasse... Ich werde das Thema erstmal hintenan stellen, da ich mich mit I2C-Programmierung und Atmel noch weniger auskenne als mit der CC2, in der Hoffnung, dass irgendwann mal eine Bugfreie Version erhältlich ist (Oder irgendwer einen schnellen Workaround gefunden hat). > Nach i2c.stop() darf normal keine Pause und auch kein Aufruf der Wartefunktion erfolgen. > Nach dem i2c.cstart() sollte normal auch keine Pause notwendig sein. Wenn die Pausen nicht eingehalten werden, so funktionieren zumindest einige Motorbefehle nicht mehr:-(? > Der Aufbau Deiner Funktion würde dann so aussehen: > //------------------------------------------- > function direction (byte motor, byte direct) returns int > //------------------------------------------- > { /* Motor Drehrichtung */ > if i2c.cstart(0x56) > { > i2c.write (10); waitI2C_Ready(); > i2c.write (04); waitI2C_Ready(); > i2c.write (motor); waitI2C_Ready(); > i2c.write (direct); waitI2C_Ready(); > i2c.write (0); waitI2C_Ready(); > i2c.stop(); > return -1; > } > i2c.stop(); > return 0; > } > > Die extra If-Abfrage dient dazu, zu erkennen, ob das I²C-Device angeschlossen > ist bzw. reagiert. > > Wenn die Zeitangaben von Frank korrekt sind, kannst Du aber auch mit den Sleeps > weiterarbeiten, jedoch sleep 1; angeben, da die Verarbeitung > eines Bytes unter einer 1ms dauern soll. Wenn die Pausen nur 1ms lang sein müssten wäre ich überglücklich! Aber damit alle Funktionen (reproduzierbar) funktionieren sind 100ms-Pausen nötig!! (Sehr nervig) Danke für Deine Mühe und beste Grü�e | ||
Antwort schreiben Antworten: |