Eigenschaften RTC M41T56

M41T56 ist ein Echtzeituhr-Chip, der ein Analogon zum beliebten DS1307 ist. Und obwohl selbst die Pinbelegung der Mikroschaltung gleich ist, weisen sie erhebliche Unterschiede auf, über die ich zu berichten versuchen werde.

Kurzbeschreibung


Ich werde nicht auf den Betrieb des IIC-Busses eingehen, ich stelle nur fest, dass beide Chips die Adresse 0xd0 haben. Um mit der Zeit zu arbeiten, enthält die Mikroschaltung sieben Kontoregister und ein Steuerregister. Kontoregister enthalten Zahlen im binären Dezimalformat, einige Bits haben jedoch eine besondere Bedeutung.

Register
xxx - Der Wert des Bits ist nicht definiert.
FunktionIndexBitsmögliche Werte
76543210
Sekunden0x00STDutzende von SekundenEinheiten von Sekunden0 - 59
Minuten0x01xxxDutzende MinutenEinheiten von Minuten0 - 59
Uhr0x02SebSBDutzende von StundenStunden Einheiten0 - 23
Tag0x03xxxxxxxxxxxxxxxWochentag1 - 7
Tag des Monats0x04xxxxxxDutzende von TagenEinheiten des Tages1 - (28 | 29 | 30 | 31)
Monat0x05xxxxxxxxxdesEinheiten des Monats1 - 12
Jahr0x06Dutzende von JahrenEinheiten des Jahres0 - 99
Steuerregister0x07OUTFTS.Korrekturbetrag- -

Bits
x - Nach dem Einschalten kann der Status des Bits beliebig sein.
ein bisschennach dem Zurücksetzendie Beschreibung
STxBeim Schreiben von 1 in dieses Bit stoppt der Generator
CEBxWenn das CEB-Bit (Century Enable Bit) gesetzt ist und ein neues Jahrhundert erreicht ist, ändert das CB-Bit (Century Bit) den Wert in das Gegenteil.
CBx
OUT1Wenn die Bits OUT (OUTput Level) und FT (Frequency Test) gleich Null sind, wird der FT / OUT-Pin auf Masse gedrückt. Bei FT = 1 beträgt der Ausgang FT / OUT 512 Hz und das OUT-Bit spielt keine Rolle.
FT0
S.xRTC-Hub-Kalibrierungsmarkierung.

Die Unterschiede beginnen in der Zuordnung der Bits 7, 6 und 5 des Taktregisters. Im M41T56 werden die Bits 7 und 6 verwendet, um den Übergang zum neuen Jahrhundert anzuzeigen, und die Bits 5 und 4 werden verwendet, um mehrere zehn Stunden zu zählen. Darüber hinaus ist das Zählen von Stunden nur im Modus 24 möglich, der AM / PM-Modus ist nicht verfügbar. In DS1307 wird Bit 7 nicht verwendet, eine Null in Bit 6 zeigt an, dass der Zählmodus 24 verwendet wird, und in diesem Fall enthalten die Bits 5 und 4 mehrere zehn Stunden. Wenn Bit 6 eins ist, wird Bit 5 zum AM / PM-Flag, und Bit 4 enthält mehrere zehn Stunden.

Signifikante Unterschiede bestehen im Steuerregister, das den Wortkorrekturstrich enthält.

Kurskorrektur


Mit M41T56 können Sie den Fehler des Quarzresonators im Bereich von -62 bis +124 ppm kompensieren, was eine Abweichung von nicht mehr als ± 5 Sekunden pro Monat ergibt. Für die Kompensation sind die sechs niedrigstwertigen Bits des Steuerregisters verantwortlich. Die Bits 4-0 enthalten eine vorzeichenlose Ganzzahl des Korrekturwerts, und Bit 5 legt die Korrekturrichtung fest. Wenn Bit 5 Null enthält, verlangsamt sich der Hub in Schritten von 2,034 ppm, andernfalls beschleunigt RTC in Schritten von 4,068 ppm. Dies ist unpraktisch, daher habe ich einige einfache Funktionen zum Konvertieren von ppm in Korrekturwörter und umgekehrt skizziert.

/*        . */ #define MASK_CALIBR ((1 << 4) | (1 << 3) | (1 << 2) | (1 << 1) | (1 << 0)) /*        . */ #define MASK_CALIBR_SIGN (1 << 5) /** *    . * @param caliber    RTC. * @return    ppm. */ int8_t caliber_to_ppm(uint8_t caliber) { int8_t result = caliber & MASK_CALIBR; result = (uint8_t) result * 2; if ((caliber & MASK_CALIBR_SIGN) != 0) { result = -result; } else { result = (uint8_t) result * 2; } return result; } /** *   . * @param ppm    ppm. * @return    RTC. */ uint8_t ppm_to_caliber(int8_t ppm) { uint8_t result; if (ppm < 0) { result = (uint8_t) (-ppm + 1) / 2; result |= MASK_CALIBR_SIGN; } else { result = (uint8_t) (ppm + 2) / 4; } return result; } 

Fehlererkennung


Weder DS1307 noch M41T56 können Generierungsfehler erkennen, sie garantieren jedoch, dass sich einige Bits beim Einschalten in einem bestimmten Zustand befinden. Wenn M41T56 im Steuerregister aktiviert ist, ist es 10xxxxxx. Um Programmabstürze zu verfolgen, können Sie den folgenden Algorithmus verwenden. Wenn beim Einschalten des Mikrocontrollers das RTC-Steuerregister 10xxxxxx enthält, liegt ein Stromausfall vor und es muss ein Wert in das Register geschrieben werden, dessen hohe Bits nicht gleich 10 sind. Am einfachsten ist es, das Korrekturwort mit den Bits 7 und 6 gleich Null zu schreiben.

Literatur


Source: https://habr.com/ru/post/de457796/


All Articles