Hallo zusammen,
ich möchte mit meinem Arduino folgendes Kameramodul ansteuern:
http://www.sparkfun.com/datasheets/Sensors/Imaging/TCM8230MD.pdf
Dazu verwende ich folgenden Code:
1 | #include <Wire.h>
|
2 |
|
3 | int incomingByte = 0;
|
4 |
|
5 | void setup()
|
6 | {
|
7 | Wire.begin(); // join i2c bus (address optional for master)
|
8 | Serial.begin(9600);
|
9 | Wire.beginTransmission(60); // transmit to device #4
|
10 | Wire.send(0x03); // sends one byte
|
11 | Wire.send(0x00); // sends one byte
|
12 | byte ret = Wire.endTransmission(); // stop transmitting
|
13 | Serial.write(ret);
|
14 | }
|
15 |
|
16 | void loop()
|
17 | {}
|
18 | }
|
Mit diesem Code bekomme ich immer eine 3, das heisst er kann die Daten
nicht senden, die Adresse funktioniert aber! Also habe ich mir mal die
i2cmaster library von Peter Fleury geholt und versucht mit folgendem
Code zu schreiben:
1 | #include <i2cmaster.h>
|
2 |
|
3 | void setup()
|
4 | {
|
5 | i2c_init();
|
6 | Serial.begin(9600);
|
7 | //digitalWrite(13,1);
|
8 | byte ret = i2c_start(120); // set device address and write mode
|
9 | Serial.write(ret);
|
10 | //digitalWrite(13,0);
|
11 | ret = i2c_write(3); // write address = 5
|
12 | Serial.write(ret);
|
13 | ret = i2c_rep_start(120);
|
14 | Serial.write(ret);
|
15 | ret = i2c_write(0x00); // write address = 5
|
16 | Serial.write(ret);
|
17 | ret = i2c_write(0x02); // write address = 5
|
18 | Serial.write(ret);
|
19 | ret = i2c_write(0x00); // write address = 5
|
20 | Serial.write(ret);
|
21 | i2c_stop();
|
22 | }
|
23 |
|
24 | void loop()
|
25 | {}
|
Das Ergebnis: "010111", d.h. die Funktionen i2c_start und i2c_rep_start
funktionieren, die funktion i2c_write allerdings nicht!
Hat jemand eine Vorstellung warum das so sein könnte? Ich kann das Gerät
addressieren aber nicht reinschreiben?!
Wäre super, wenn mir da jemand helfen könnte!
Danke und beste Grüße,
Max