hat jemand ein Program-Code um die Adressen auf dem I²C Bus "abzuklappern"?
Um festzustellen auf welcher Adresse ein Baustein Antwortet ...
Ärgere mich gerade mit einer RTC Clock rum, Single Chip DS1307 und habe das blöde Gefühl das das Lib nicht mit der Adresse klar kommt.
Das gleiche habe ich mit den Tiny RTC-Modul DS1307 wo 2 Stk. Problemlos ihren Dienst tun aber 3 Stk. nicht wollen, bzw. nicht erkannt werden.
Kann natürlich sein das die defekt sind aber es stutzt mich das ich den Chip mit Quarz nicht zum laufen bekomme. Der Bus ist in betrieb den das läuft ein LCD Problemlos.
Jeder I2C Slave braucht seine Adresse. Bei den meisten ICs kann die I2C Adresse durch 2-3 Eingänge in einem kleinen Bereich eingestellt werden. der DS1307 hat keine solche Eingänge. Darum kannst Du auch nur 1 DS1307 in einem I2C Bus beteiben (außerdem habe ich keine Ahnung zu was man mehr als 1 RTC braucht).
Grüße Uwe
MAC_GERMANY:
Wenn jemand eine eingebung für mich hätte währe ich sehr dankbar ....
Vielleicht ist in Deiner Schaltung mit den PullUp-Widerständen am I2C-Bus etwas nicht in Ordnung?
Ist das DS1307 IC das einzige I2C-Gerät am I2C-Bus?
Oder sind noch andere I2C-Geräte vorhanden und am I2C-Bus aktiv?
Wie lang sind die Leitungen ungefähr, mit denen das DS1307 IC angeschlossen ist?
Sind vielleicht zusätzliche PullUp-Widerstände vorhanden, die nicht in der Schaltung eingezeichnet sind?
Ist sonstige andere Hardware gleichzeitig am Arduino angeschlossen?
Wie hoch ist die Batteriespannung der von Dir angeschlossenen Pufferbatterie?
@Reinhard - Klasse, Danke - hatte ich nicht gefunden aber gesucht
@Uwe, klar kann ich nur einen betreiben es sind 5 gleiche aufbauten wovon 3 keine RTC Verbindung aufbauen aber das I²C LCD geht aber.
@Jurs - Mit und ohne Pull-UP geht es nicht. Was mich da Stutzig macht ist das ich das LCD betreibe ohne Widerstände.
Verbindung ist kurz >3cm. Spannung am BAT Eingang ist um die 3.5V muss aber auch ohne gehen.
Wenn ich es abfrage:
if (RTC.isrunning())
bekomme ich eine ein FALSE zurück, wie geschrieben einige gehen.
Werde es nachher nochmal aufbauen und schauen was da flattert.
Lt. Datenblatt werden Pullups gebraucht. Vielleicht hast Du die schon am I²C-Display und dort nur nicht bemerkt?
Falls es wirklich ohne geht, sollte Dich nicht stutzig machen, das drei nicht gehen, sondern das zwei gehen.
MAC_GERMANY:
Verbindung ist kurz >3cm.
Meinst Du wirklich größer 3cm oder soll das "kurz <3cm" heißen?
Interessant wäre Dein kompletter Aufbau und der Typ des Displays und I²C-Expanders am Display.
Eine Batteriespannung von 3,5V für ein DS1307 kann zuviel sein, da die Umschaltung auf Betteriebetrieb bei 1,25* Ubat erfolgt. Bei einer etwas niedrigen Betriebsspannung (unter 4,5V) ist die DS1307 ständig im Batteriebetrieb. Besser eine 3,0V Li Batterie verwenden.
Grüße Uwe
Hallo,
ich würde den I2C-Bus erst einmal richtig aufbauen. Dazu ist es zwingend
nötig, das PullUpWiederstände in der richtigen Größe zu installieren.
Die angeschlossenen Geräte werden über die PlusLeitung versorgt, gegen die
auch die Wiederstände geschaltet sind.
Bei mehr- als einem Slave ist es angeraten, KoppelKondensatoren zu verwenden.
Wenn man das dann richtig aufgebaut hat, dann hat man eine " Definition" für
I2C-Bus.
Dann wäre es nicht schlecht, zum probieren, die originale Arduino RTC-Lib zu
nutzen.
Dann würde ich alle RTC´s an einem Arduino betreiben, am dem schon eine
RTC funktioniert. Ohne I2c-Display- Ausgabe über seriell.
Gruß und Spaß dabei
Andreas
Da ich auch demnächst solch ein RTC I2C Modul in Betrieb nehmen möchte:
Könnte es hier evtl. zu Problemen führen, daß der I2C Bus auf der Arduinoseite mit 5V läuft, und die RTC ja nur mit 3V ?
Dann könnten doch kleine Tolaranzen zu Schwierigkeiten bei der Signalerkennung führen.
Bei einem SPI-Bus hatte ich mit einem SD-Kartenleser auch erst Erfolg, nachdem ich einfache Pegelwandler (Widerstandsnetzwerk, bzw. 74HCT244) einsetzte.
Genaugesagt Betriebsspannung von 4,5V bis 5,5V typich 5V.
Spannung der Bufferbattere 2V bis 3,5V typisch 3V
Wobei auf Batteriebetrieb bei Versorgungsspannung kleiner 1,25* Batteriespannung umgeschaltet wird.
Grüße Uwe
Wobei auf Batteriebetrieb bei Versorgungsspannung kleiner 1,25* Batteriespannung umgeschaltet wird.
Das wäre nicht so schlimm, aber es wird das I2C-Interface abgeschaltet. D.h. wenn die Batterie-Spannung etwas hoch ist (neue Batterie) und der Arduino z.B. über einen USB-Bus versorgt wird (die Spannung ist dann meist unter 5V), wirst Du keine Verbindung zum DS1307 hinkriegen. Versuche mal, den Arduino mit einem Netzteil zu betreiben, das löst die meisten Probleme mit der DS1307-Verbindung.