Ich versuche, DS1307 RTC mit der erwähnten MCU zu verbinden. Ich möchte einen lebenslangen Timer erstellen, der die Zeit anzeigt, in der dieses Projekt im Feld gearbeitet hat, und diesen Timer auf einem LCD anzeigen.
Ich bin neu bei Mikrocontrollern, aber die Verwendung von LCD- und I2C-Bibliotheken, die bereits im MikroC pro für PIC-Compiler integriert sind, wird mich hoffentlich vor Low-Level-Programmierung bewahren.
Wenn ich das richtig verstehe, wären die Schritte zum Schreiben oder Lesen von etwas aus der RTC:
1) I2C_Start();
2) I2C_Write(DS1307_Address);
3) I2C_Write(Register Address);
4) I2C_Write(Data to be written);
5) I2C_Stop();
und zum lesen:
1) I2C_Start();
2) I2C_Write(DS1307_Address);
3) I2C_Write(Register Address);
4) I2C_Repeated_Start();
5) I2C_Write(DS1307_Address);
6) I2C_Rd();
7) I2C_Stop();
Mein Problem ist, was wird das DS1307_Address
sein, wenn es das einzige Gerät im Bus ist?
Mein Ansatz wird sein, das BIT7 von 00h oder CH
Bit des DS1307 niedrig zu setzen, wenn das Gerät läuft, und es hoch zu setzen, kurz bevor es heruntergefahren wird. Ich möchte nicht, dass das RTC auch die Projekt-Auszeit zählt. Ist dieser Ansatz umsetzbar?
Mein Schaltplan ist wie folgt:
Laut Datenblatt Seite 12:
Das Slave-Adressbyte enthält die 7-Bit-DS1307-Adresse, die 1101000 ist, gefolgt vom Richtungsbit (R/W), das für einen Schreibvorgang 0 ist.
Die gesuchte Adresse lautet also 1101000 .
Eugen Sch.
brhans
Mohsin
Mohsin
Eugen Sch.
Mohsin
Mohsin
Eugen Sch.
I2C_Repeated_Start
Funktion. Schauen Sie sich die Beispiele auf dieser Seite anBenutzer59864
Mohsin
Eugen Sch.