Uhren IC 3231

tbegle
Benutzer
Avatar
Gender: n/a
Age: 64
Posts: 150
Registered: 01 / 2018
Subject:

Uhren IC 3231

 · 
Posted: 08.11.2019 - 18:09  ·  #1
Hallo Power User,

ich bin mit meinem Latein am Ende!
Seit Jahren habe ich das Uhren IC 3231 ohne Probleme eingesetzt! (Alibaba Platine komplett mit Batt ~80Cent) Super IC(hochgenau - Monate +-1 bis 2Sek)
Jetzt hätte ich die Sekunden benötigt! und musste feststellen dass da >59Sek ausgelesen werden!!
In meiner Hilflosigkeit hatte ich sogar ein weit eingebaut
Kann mir jemand helfen? (Anlage pdf der FW)
Gruss Toni
You must be logged in or your permissions are to low to see this Attachment(s).
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2078
Registered: 03 / 2003
Subject:

Re: Uhren IC 3231

 · 
Posted: 09.11.2019 - 18:27  ·  #2
Hallo Toni,

auch die Sekunden die du vom DS3231 liest sind BCD-codiert. D.h. wenn du 72 dezimal einliest ist das
%01001000 = 0100 Zehner und 1000 Einer = 48 Sekunden

59 Sekunden wäre %01011001

Und deine angezeigten 82 = %01010010 = 0101 Zehner und 0010 Einer = 52 Sekunden

Gruss
Harry
tbegle
Benutzer
Avatar
Gender: n/a
Age: 64
Posts: 150
Registered: 01 / 2018
Subject:

Re: Uhren IC 3231

 · 
Posted: 09.11.2019 - 21:46  ·  #3
Hallo Harry,,
danke für deine Antwort
Die Uhr läuft trotz der Sekunden (die ins Kraut schießen bis 90!!) über Monate genau auf die Sek genau - ich kann sie stellen + + +
ich hatte nun alle Varianten durch um die Sek zur Vernunft zu bringen - leider erfolglos! 57-58-59-65-..90 - 00......
kannst du mir einen Tipp (Programm Zeile) geben? wait?
Gruss
Toni
Gunter
Administrator
Avatar
Gender:
Location: Frankfurt Main / Germany
Posts: 1697
Registered: 02 / 2003
Subject:

Re: Uhren IC 3231

 · 
Posted: 10.11.2019 - 02:26  ·  #4
Hi,
kommt da wirklich 90(dezimal) ???
Oder ist nicht eher nach 89(dezimal) der Sprung auf 0 ???
Falls dem so ist, hat Harry recht:
du interpretierst einen BCD-codierten Wert als Dezimalzahl.
dezimal 89 ist
binär 0101 1001 und das wiederum ist als
BCD     5      9    also die erwarten 59 sek.
Wenn die Sekunden über #59 zählen würden, würden auch die Stunden/
Tage massiv daneben liegen.
Gunter
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

Re: Uhren IC 3231

 · 
Posted: 10.11.2019 - 16:54  ·  #5
Quote by tbegle

Hallo Power User,

ich bin mit meinem Latein am Ende!
Seit Jahren habe ich das Uhren IC 3231 ohne Probleme eingesetzt! (Alibaba Platine komplett mit Batt ~80Cent) Super IC(hochgenau - Monate +-1 bis 2Sek)
Jetzt hätte ich die Sekunden benötigt! und musste feststellen dass da >59Sek ausgelesen werden!!
In meiner Hilflosigkeit hatte ich sogar ein weit eingebaut
Kann mir jemand helfen? (Anlage pdf der FW)
Gruss Toni


Hallo Toni,

leider ist in Deinem Code nicht erkennbar, wie Du die gelesenen Sekunden
Code
TWIout(DS3231,$00); // Start Befehl
mdelay(10); // ??
TWIinp(DS3231,Secound);

Für die weiter Ausgabe umwandelst, wie bei über 90% der RTCs sind die Werte BCD-Kodiert.

Versuche mal folgendes in Deinem Code zum Test (ungetestet, aber so wandele ich es immer in allen meinen Uhren um):
Code
TWIout(DS3231,$00); // Start Befehl, setze Leseadresse auf 0x00
TWIinp(DS3231,Secound);
 // Maskierungen
   Secound   := Secound  AND %01111111; // nehme das BIT 7 raus und verwende nur 0..6
    // Testausgabe 
     Write(Serout,'Sekunden: '+ByteToHex(Secound)    ); // HEX Ausgabe als String zeigt bei einem BCD      Uhrenwert das Ganze richtig an
..


Du kannst Die BCD-Werte einfach mit ByteToHex() als String umwandel, da die Uhrenwerte in BCD nie im Low und High vom BCD über 9 gehen.

Achso, nur weil Du evtl. einen Dreher in der Umwandelung der gelesenen Sekunden-Werte hast, läuft die RTC intern natürlich trotzdem weiterhin richtig.

Und GANZ WICHTIG! Wenn Du das Task-System vom AVRco nutzt, musst Du während des lesens/schreibens immer lock() und am Ende unlock() machen, gerade wenn Du den TWI in einem anderen Task / Process nutzt. Denn dann funktioniert unter Umständen das Autoinc. vom RTC nicht mehr und Du liest Müll.

Gruß
Thorsten
You must be logged in or your permissions are to low to see this Attachment(s).
tbegle
Benutzer
Avatar
Gender: n/a
Age: 64
Posts: 150
Registered: 01 / 2018
Subject:

Re: Uhren IC 3231

 · 
Posted: 10.11.2019 - 21:43  ·  #6
Hallo Günter, Hallo Thorsten,

recht herzöichen Dank euch Beiden, ich werde mir eure Lösungsansätze demnächst zur Brust nehmen!
Günter du hast recht, bis 89 - das Verrückte(für mich war) die Uhren gehen super genau! (Alibaba 0,90€! mit Batt!)
BCD Wandlung mache ich öfters dass ich ales DEZ habe(EEprom,....)

Grüsse
Toni
tbegle
Benutzer
Avatar
Gender: n/a
Age: 64
Posts: 150
Registered: 01 / 2018
Subject:

Re: Uhren IC 3231

 · 
Posted: 23.12.2019 - 21:22  ·  #7
Ich danke euch allen die mir bei meiner Clock (Sekunden Fehler) so engagiert geholfen haben.
Wie von euch richtig diagnostiziert wurde die Sekunde falsch dekodiert! - ein blöder falscher Fehler

Leider muss ich bei meinem Programmer immer noch den Stecker abziehen(sehr zeitintensiv und gefählich für den Programmer) , ich vermute das der Reset im Programmer blockiert(nicht freigegeben) wird, denn Häckche per SW setzen brachte nichts.
Ich wünsche euch schöne Festtage und kommt gut ins neue Jahrzehnt

Gruss
Toni
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2078
Registered: 03 / 2003
Subject:

Re: Uhren IC 3231

 · 
Posted: 24.12.2019 - 12:16  ·  #8
Hallo Toni,

kannst du mal zeigen, wie der Reset bei dir beschaltet ist?

Gruss
Harry
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 14 · Cache Hits: 14   139   153 · Page-Gen-Time: 0.021857s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI