Pages: [1] 2   Go Down
Author Topic: I2C Kommunikation mittels Wire.h funktioniert nicht  (Read 3648 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi!

Ich besitze ein arduino nano board und habe versucht mittels Wire Library ein MIDAS Display  über i2C anzusteuern. Da sich das Display
nichteinmal konfigurieren und einschalten lässt habe ich mir dann mal mit dem Oszilloskop die zwei Pins  SDA und SCL (beim arduino nano board die pins 4 (SDA) und 5 (SCL))angesehn. Da tut sich jedoch gar nichts. Die zwei Pins liegen immer auf 5 V (verwende 1kOhm pull-ups auf die 5V Schiene).

Ich habe dann mal versucht die Pins mittels digitalWrite() auf low und high zu setzen und das funktioniert. Kann mir jemand sagen wo das Problem liegen könnte?

mfg
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21872
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich glaube da kann Dir schwerlich jemand weiterhelfen, weil es so wenige echte Hellseher oder Besitzer funktionierender Kristallkugeln gibt.  smiley-wink smiley-wink smiley-wink

Ich schätze mal da ist ein Fehler in Deinem Sketch. Bitte sende uns den.

Grüße Uwe
Logged

Offline Offline
God Member
*****
Karma: 10
Posts: 721
42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

42!

Her mit dem Sketch!
Logged


Meran/BZ/IT
Offline Offline
Full Member
***
Karma: 0
Posts: 184
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vielleicht eine blöde Frage, aber man weiß ja nie:

hast Du auch während einem I2C-Zugriff mit dem Oszilloskop gemessen?
Logged

Offline Offline
Full Member
***
Karma: 3
Posts: 138
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

und du verwendest analog 4&5 (und nicht digital 4&5)?
« Last Edit: April 07, 2012, 01:28:58 pm by thewknd » Logged

duemilanove / OSX & WIN
Arduino & Teensy: http://bit.ly/13rbdtQ

AREA COLOGNE
Offline Offline
Edison Member
*
Karma: 21
Posts: 1145
I am 1 of 10 who understands binary
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Weil die I2C Schnittstelle des AVR Auf den Pins hängt die bei Arduino Anlaog 4+5 Heissen :-)
Gruß
Daniel
Logged

So ist das Leben:
Manchmal bis du das Denkmal, manchmal die Taube!

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi!
Danke für die schnellen Meldungen!

@uwefed: Da hast du natürlich recht. Hier ist mein Sketch:

#include <Wire.h>

void setup()
{
  Serial.begin(9600);
  Wire.begin();
  Wire.beginTransmission(byte(0x7c));
  Wire.write(byte(0x00));
  Wire.write(byte(0x38));
  Wire.endTransmission();
  delay(2);
  Wire.beginTransmission(byte(0x7c));
  Wire.write(byte(0x00));
  Wire.write(byte(0x39));
  Wire.endTransmission();
  delay(2);
  //Wire.beginTransmission(byte(0x7c));
  Wire.write(byte(0x00));
  Wire.write(byte(0x14));
  //Wire.endTransmission();
  delay(2);
  //Wire.beginTransmission(byte(0x7c));
  Wire.write(byte(0x00));
  Wire.write(byte(0x79));
  //Wire.endTransmission();
  delay(2);
  //Wire.beginTransmission(byte(0x7c));
  Wire.write(byte(0x00));
  Wire.write(byte(0x50));
  //Wire.endTransmission();
  delay(2);
  //Wire.beginTransmission(byte(0x7c));
  Wire.write(byte(0x00));
  Wire.write(byte(0x6c));
  //Wire.endTransmission();
  delay(2);
  //Wire.beginTransmission(byte(0x7c));
  Wire.write(byte(0x00));
  Wire.write(byte(0x0c));
  //Wire.endTransmission();
  delay(2);
  //Wire.beginTransmission(byte(0x7c));
  Wire.write(byte(0x00));
  Wire.write(byte(0x01));
  Wire.endTransmission();
  delay(2);
 }

void loop()
{
  Wire.beginTransmission(byte(0x7c));
  Wire.write(byte(0x00));
  Wire.write(byte(0x08));
  Wire.endTransmission();
  Serial.println("Display aus");
  delay(100);
  Wire.beginTransmission(byte(0x7c));
  Wire.write(byte(0x00));
  Wire.write(byte(0x0C));
  Wire.endTransmission();
  Serial.println("Display ein");
  delay(100);
}

@spaceball: natürlich habe ich während eines Zugriffs gemessen smiley

@thewknd: ich verwende die digitalen Pins 4 und 5. Bei den Analogen Pins handelt es sich doch nur um Eingänge, soweit ich die Beschreibung verstanden habe.

@volvodani: sollten die I2C Pins wirklich auf den Analogen Pins 4 und 5 befinden wurde mein Problem gelöst smiley ich probiers gleich mal aus!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Und da ist auch schon das Signal!

Ein Dankeschön an euch alle! Und einen schönen Ostersonntag!

mfg
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 271
Posts: 21872
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

thewknd hat gewonnen:

Quote from: ihaveaquestion
@thewknd: ich verwende die digitalen Pins 4 und 5. Bei den Analogen Pins handelt es sich doch nur um Eingänge, soweit ich die Beschreibung verstanden habe.

Die I2C Schnittstelle ist auf den ANALOGEN Pin 4 und 5
Deshalb bringst Du die I2C Schnittstelle zum laufen.

Alle Pins des ATmega328 in DIL Gehäuße sind digitale Ein/Ausgänge. Einige Pins haben doppel bis 3-Fachfunktionen.
* Reset und Oszillator-Pin
* analoge Eingänge (Pin D14 bis D19 oder A0 bis A5)
* I2C Schnittstelle (Pin D18 und D19 oder A4 und A5)
* serielle Schnittstelle (Pin D0 und D1)
* SPI (pin D11, D12, D13 und ein zusätzliches Pin freier Wahl)
* externer Interrupt (Pin D2 und D3)

Der Atmega328 im SMD-Gehäuße hat 2 zusätzliche analoge eingänge D6 und D7 die NICHT als digitale Ein/Ausgänge funktionieren.

Grüße Uwe
« Last Edit: April 08, 2012, 01:43:58 pm by uwefed » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi Leute!
Ich habe nun die Pins richtig angeschlossen, doch beim display tut sich trotzdem nichts. Als Display verwende ich das MIDAS MCC0G21605C6W-SPTLYI. Der Programmcode den ich ausführe ist der den ich ein paar Posts weiter oben reingestellt habe.

Das Display hat 8 Anschluss-Pins:
1 VOUT.... laut Datenblatt bei 5 V VDD mit ebendiesen Pin kurzzuschließen
2 Cap1n... laut Datenblatt bei 5 V Versorgung: not connected
3 Cap1p... laut Datenblatt bei 5 V Versorgung: not connected
4 VDD... Verbunden mit 5 V Pin vom Arduino Nano ( Das Arduino Board wird über USB versorgt)
5 VSS... Verbunden mit GND Pin vom Arduino Nano
6 SDA... Verbunden mit Analog Pin 4
7 SCL... Verbunden mit Analog Pin 5
8 RST... Digital Pin 9

Weiters hat das Display für die Hintergrundbeleuchtung einen Anoden und Kathodenanschluss den ich bis jetzt nicht angeschlossen habe. Das Display müsste doch auch ohne Hintergrundbeleuchtung funktionieren?

Hat jemand eine Idee?

mfg

Logged

Offline Offline
Full Member
***
Karma: 3
Posts: 138
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

der Typ ist MCCOG21605C6W-SPTLYI

stimmt denn die Adresse, im Datenblatt steht 0111110, das ist 0x3E
Logged

duemilanove / OSX & WIN
Arduino & Teensy: http://bit.ly/13rbdtQ

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ja die Adresse ist 7 bit lang und soweit ich den I2C Bus verstanden wird das 8e bit als R/W bit gehandhabt. also 0 1 1 1 1 1 0 und dann 0... write oder 1 read. Deshalb komm ich dann auf 7C
Logged

Offline Offline
Full Member
***
Karma: 3
Posts: 138
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ja, aber das RW Bit kontrolliert die Wire Library selber. Je nachdem ob du vom I2C Bus liest oder darauf schreibst.
Logged

duemilanove / OSX & WIN
Arduino & Teensy: http://bit.ly/13rbdtQ

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok, dann probier ichs mal mit 3E aus


« Last Edit: April 17, 2012, 12:33:18 pm by ihaveaquestion » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

... kann leider auch nicht erkennen das sich das display einschaltet
Logged

Pages: [1] 2   Go Up
Jump to: