I2C-Kommunikation schlägt fehl


hallo allerseits!

i²c ist ja eine schöne sache - echt klasse wär's, wenn es funktionieren würde. aber egal, ich anstelle, ich bekomme die kommunikation mit dem saa 1064 (7-segment-anzeigen-treiber für 4 ziffern mit i²c) nicht hin.

an den pull-up-widerständen kann's nicht liegen, denn die sind da, wo sie hin gehören (nein, darauf falle ich schnell nicht noch einmal herein!).

im datenblatt zum saa 1064 (siehe datenblatt) ist beschrieben, wie eine kommunikation ablaufen muss, aber ich bekomme das einfach nicht hin.

jede hilfe ist hochwillkommen!

gregor

ein foto des steckbretts gibt es hier
der momentan nicht funktionierende sketch:
code: [select]
#include <wire.h>

// saa 1064 test

// der saa 1064 ist ein vier-sieben-segment-anzeigen-treiber
// mit i2c



byte saa_addr=0x70; // adresse zum lesen


void setup()
{
  serial.begin(9600); // serielle schnittstelle initialisieren
  serial.println("[setup()] beginne ...");
  wire.begin(); // arduino ist master
}

void loop()
{
  serial.print  ("[loop()] saa_addr ist ");
  serial.println(saa_addr);
  serial.print  ("[loop()] beginne kommunikation ... ");
  serial.println("wire.begintransmission(saa_addr)");

  wire.begintransmission(saa_addr);
  //wire.write(saa_addr); // adresse
  //wire.endtransmission();
  
  //wire.begintransmission(saa_addr);
  wire.write(b00000000); // instruction byte (control register);
  wire.write(b01101111); // control byte: 7 = don't care
                         //               6 = add 12 ma segment output current
                         //               5 = add  6 ma segment output current
                         //               4 = add  3 ma segment output current
                         //               3 = segments switched on test
                         //               2 = digits 2+4 blanked/not blanked
                         //               1 = digits 1+3 blanked/not blanked
                         //               0 = 1 (dynamic mode [use digits 1,2,3,4])
  wire.write(0x11); // data digit 1
  wire.write(0x22); // data digit 2
  wire.write(0x33); // data digit 3
  wire.write(0x44); // data digit 4
  wire.endtransmission();

  serial.println();
  delay(1000);
}

a0 und a1 eingänge korrekt beschaltet damit die adresse stimmt?

das ist etwas seltsam. im pinout ist da pin 1 adr, aber dann gibt es im protokoll 2 adress-bits. dann müsste es doch auch zwei pins geben?

nachtrag. ah, ich sehe es wird mit der spannung bestimmt. das ist mal neues. low, sollte dann aber korrekt 0 sein.


Arduino Forum > International > Deutsch (Moderator: uwefed) > I2C-Kommunikation schlägt fehl


arduino

Comments