www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RTC: Timekeeper Register


Autor: Sanja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Liebe Community,

ich versuche gerade meinen RTC (DS1337) mit meinem ATMega48 zu vernetzen 
und einzustellen. Endresultat soll sein, dass der RTC alle 24 h den µC 
via Interrupt aus dem Stromsparmodus holt.

Nun werd ich allerdings aus dem Datenblatt nicht so ganz schlau. Im 
Datenblatt ist das Timekeeper Register abgebildet. Dort zu sehen ist die 
Startadresse des Pointers und anschließend die Information, welche 
Funktion eine 8 Bit (0-7) lange Nachricht beinhaltet. Genau hier stehe 
ich auf dem Schlauch. Wenn ich an die Startadresse 0x07h eine Nachricht 
schicken möchte, wo Bit 7 adressiert wird, käme ich auf den Wert 0x0E 
(0x07h + 7). Damit würde ich dann aber an einer ganz anderen Stelle der 
Adress Map landen ?!

Autor: Sanja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keiner eine Idee?

Autor: R2D2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> wo Bit 7 adressiert wird, käme ich auf den Wert 0x0E
>> (0x07h + 7).

Nur so nebenbei, ich käme dann auf 0x87 (0x07 + 0x80)

Die Adresse und die Register sind getrennte Bytes und werden nicht 
addiert.

Der Ablauf ist folgender:
- I2C start
- write DS1337 (0xD0)
- write Adresse Alarmregister (0x07)
- write Wert Sek Register
- write Wert Min Register
- write Wert Std Register
- I2C stop

bei dem Werte schreiben wird das Adressregister automatisch erhöht.

Autor: Sanja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
argh sowas blödes.... das

R2D2 schrieb:
>>> wo Bit 7 adressiert wird, käme ich auf den Wert 0x0E
>>> (0x07h + 7).
>
> Nur so nebenbei, ich käme dann auf 0x87 (0x07 + 0x80)

Argh ich depp. Stimmt natürlich.

> Die Adresse und die Register sind getrennte Bytes und werden nicht
> addiert.

> Der Ablauf ist folgender:
> - I2C start
> - write DS1337 (0xD0)

Die Adresse 0xD0 hab ich bisher in allen Codebeispielen gesehen, ich seh 
aber nicht was das sein soll ? Dient das lediglich zur initialisierung ?

> - write Adresse Alarmregister (0x07)
> - write Wert Sek Register
> - write Wert Min Register
> - write Wert Std Register
> - I2C stop

Versteh ich das richtig: mit "write Adresse Alarmregister (0x07)" leg 
ich erstmal fest, in welchem Register ich mich gerade bewegen möchte. 
Die RTC weis nun ich das ich mich im 1. Alarmregister bewegen möchte. 
Dort geb ich dann die Alarmwerte ein (sek, min, std)? Weil laut Adress 
Map kommen in  07h nur die sek, in 08h die min und in 09h die std

> bei dem Werte schreiben wird das Adressregister automatisch erhöht.

d.h. wenn ich an z.B. 0x07h (Alarm 1 sek) bit 0 auf high setze wäre die 
Startadresse für Alarm 1 min nicht die 0x08h sonder 0x09h ?


Danke für deine Hilfe

Gruß Sanja

Autor: R2D2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Die Adresse 0xD0 hab ich bisher in allen Codebeispielen gesehen, ich seh
>> aber nicht was das sein soll ? Dient das lediglich zur initialisierung ?

Du hast das Datenblatt also doch nicht gelesen.
Siehe Seite 14 <Slave Address> + <R/W> Bit.
Binär zu Hex wirst du doch allein hinbekommen.

>> d.h. wenn ich an z.B. 0x07h (Alarm 1 sek) bit 0 auf high setze wäre die
>> Startadresse für Alarm 1 min nicht die 0x08h sonder 0x09h ?

Nein, wenn Adresse 07 gewählt ist, wird der folgende Wert (Sek) in 
Adresse 07 geschrieben. Folgen vor dem I2C stop noch weitere Werte, wird 
intern die Adresse erhöht und der nächste Wert in Adresse 08 (Min) und 
der nächste Wert in 09 (Std) geschrieben.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Die Adresse 0xD0 hab ich bisher in allen Codebeispielen gesehen, ich seh
>aber nicht was das sein soll ? Dient das lediglich zur initialisierung ?

Das ist die Adresse deiner RTC. Die Register werden mit der 
'Word-Address' adressiert. Lies die einfach mal das Datenblatt richtig 
durch.

MfG Spess

Autor: Sanja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah okay nun kann ich das auch einordnen. Danke für die Hilfe. Dann werd 
ich nun mal ein wenig rumprobieren :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.