Forum: Mikrocontroller und Digitale Elektronik DS1302 Probleme mit Read/Write-Registern


von ATundT (Gast)


Lesenswert?

Hallo alle Zusammen,

ich habe heute meine DS1302-Breakoutboards bekommen. Mit einem 
Arduino-Sketch hab ich erstmal ausprobiert, ob die Module auch 
funktionieren. Beim Einarbeiten ins Datenblatt zwecks eigener 
Ansteuerung habe ich aber noch ein paar Probleme. In der Registertabelle 
(Table 3 im Maxim-Datasheet) stehen die Registeradressen. Ich verstehe 
nicht, wie die beiden linken Spalten ("Read" und "Write") gemeint sind. 
Gibt es für das gleiche Register also eine getrennte Read- und 
Writeadresse?

Wäre nett, wenn mir das jemand erläutern könnte :)

von Michael U. (amiga)


Lesenswert?

Hallo,

betrachte die Tabelle im Zusammenhang mit Figure 3.

Das Adress-/Commandbyte hat 8 Bit (logisch, ist ja ein Byte).

Die Bits 1-5 bilden die Adresse, Bit 0 entscheidet über Lesen oder 
Schreiben,
Bit 6 über Ram/Uhr Zugriff.

Tabelle 3 ist nur eine Darstellung für alle sinnvollen Kombinationen aus 
Adresse und Funktion, damit nicht alles nach Figure 3 selber zusammen 
gebastelt werden muß.

Will man die Sekunden lesen, muß Bit 7 = 1 sein, Bit 6 = 0 (/CH),
Bit 5-1 sind die eigentliche Registeradresse, also 00000, Bit 0 ist 1 
für Lesen. Macht zusammen also 1 0 00000 1 also 0x80.
Zum Schreiben der Sekunden bleibt Rgisteradresse, Bit 6 für die Funktion 
und Bit 7 mit "immer 1" gleich, Bit 0 muß 0 für Schreiben sein, 1 0 
00000 0 = 0x80.

Ich hoffe, ich habe jetzt richtig nachgeschaut, habe das Datenblatt zum 
ersten Mal angesehen...

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Michael U. schrieb:

> Will man die Sekunden lesen, muß Bit 7 = 1 sein, Bit 6 = 0 (/CH),
> Bit 5-1 sind die eigentliche Registeradresse, also 00000, Bit 0 ist 1
> für Lesen. Macht zusammen also 1 0 00000 1 also 0x80.

der Vollständigkeit halber: natürlich 0x81

von Karl H. (kbuchegg)


Lesenswert?

ATundT schrieb:

> Gibt es für das gleiche Register also eine getrennte Read- und
> Writeadresse?

Ja.
Das liegt daran, das die Übertragungsmethode SPI ist.
Bei SPI gibt es kein Schreiben oder Lesen in dem Sinne.
SPI ist ein Byteaustausch. Um dem Baustein mitzuteilen, was er mit dem 
2ten übertragenen Byte machen soll, bzw ob er beim Austausch des 2ten 
Bytes seinen gespeicherten Wert auf den Bus legen soll, wird eben im 
jweils ersten Byte codiert, ob das eine reine Leseoperation oder eine 
Schreiboperation sein soll.

Serial Peripheral Interface

: Bearbeitet durch User
von ATundT (Gast)


Lesenswert?

Hi,

ich danke euch für eure Mühen!
Habs verstanden. Jetzt muss ich das nur noch in sinvollen Code packen ;)

Danke!

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.