Eigenschaften RTC M41T56

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

Kurzbeschreibung


Ich werde nicht auf die Arbeit 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 Kontenregister und ein Steuerregister. Die Kontenregister 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
Sekunden0x00STZehn SekundenEinheiten von Sekunden0 - 59
Minuten0x01xxxZehn MinutenEinheiten von Minuten0 - 59
Uhr0x02SebSBDutzende von StundenEinheiten von Stunden0 - 23
Tag0x03xxxxxxxxxxxxxxxWochentag1 - 7
Tag des Monats0x04xxxxxxDutzende von TagenEinheiten des Tages1 - (28 | 29 | 30 | 31)
Monat0x05xxxxxxxxxdesEinheiten des Monats1 - 12
Jahr0x06Zehn JahreEinheiten des Jahres0 - 99
Kontrollregister0x07OUTFTSKorrekturbetrag-

Bits
x - Nach dem Einschalten kann der Zustand des Bits beliebig sein.
ein bisschennach dem Zurücksetzendie Beschreibung
STxBeim Schreiben von 1 auf 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 den entgegengesetzten Wert.
CBx
OUT1Wenn die Bits OUT (Ausgangspegel) und FT (Frequenztest) gleich Null sind, wird der FT / OUT-Pin auf Masse gedrückt. Bei FT = 1 beträgt der FT / OUT-Pin 512 Hz und das OUT-Bit spielt keine Rolle.
FT0
SxRTC-Hubkalibrierungsmarke.

Die Unterschiede beginnen bei der Belegung 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 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 zehn Stunden. Wenn Bit 6 eins ist, wird Bit 5 zum AM / PM-Flag, und Bit 4 enthält zehn Stunden.

Wesentliche Unterschiede bestehen im Steuerregister, das das Wort Korrekturstrich enthält.

Kurskorrektur


Mit dem 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 niederwertigsten 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, weshalb ich einige einfache Funktionen für die Konvertierung von ppm in Korrekturwort und umgekehrt skizziert habe.

/* Маска для получения только значения калибровки без знака. */
#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. M41T56 ist bei Aktivierung im Steuerregister 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 High-Bits ungleich 10 sind. Am einfachsten ist es, das Korrekturwort mit den Bits 7 und 6 gleich Null zu schreiben.

Literatur



Jetzt auch beliebt: