Forum: Mikrocontroller und Digitale Elektronik I2C Probleme beim Daten schreiben


von Max D. (maxwell86)


Lesenswert?

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

von Max D. (maxwell86)


Lesenswert?

Jetzt habe ich das ganze noch mit einem Propeller-Mikrocontroller von 
Parallax probiert, auch hier das gleiche Problem:
Write(120) funktioniert
Write(03)  funktioniert nicht
Write(00)  funktioniert nicht!?

Wäre echt super, wenn Sich jemand etwas darunter vorstellen könnte!

Grüße,
Max

von Max D. (maxwell86)


Lesenswert?

Wäre es denn denkbar, dass das Element, das ich ansteuern will defekt 
ist und nur noch seine adresse bestätigen kann?! Das kann ich mir 
irgendwie nicht vorstellen, weshalb ich mir eigentlich sicher bin, dass 
der Fehler irgendwie in meinem Verständnis liegen muss!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.