Fitur RTC M41T56

M41T56 adalah chip Real Time Clock, yang merupakan analog dari DS1307 yang populer. Dan meskipun pin pada sirkuit mikro adalah sama, mereka memiliki perbedaan yang signifikan, yang akan saya coba bicarakan.

Deskripsi singkat


Saya tidak akan memikirkan pengoperasian bus IIC, saya perhatikan hanya bahwa kedua chip memiliki alamat 0xd0. Untuk bekerja dengan waktu, sirkuit mikro berisi tujuh register hitung dan register kontrol. Register akun berisi angka dalam format desimal biner, namun beberapa bit memiliki arti khusus.

Daftar
Nilai xxx - bit tidak ditentukan.
fungsiindeksbitnilai yang mungkin
76543210
detik0x00STpuluhan detiksatuan detik0 - 59
menit0x01xxxpuluhan menitsatuan menit0 - 59
jam tangan0x02SebSBpuluhan jamunit jam0-23
hari0x03xxxxxxxxxxxxxxxhari dalam seminggu1 - 7
hari dalam sebulan0x04xxxxxxpuluhan hariunit hari ini1 - (28 | 29 | 30 | 31)
bulan0x05xxxxxxxxxdesunit bulan ini1 - 12
tahun0x06puluhan tahununit tahun ini0 - 99
daftar kontrol0x07KELUARFTSjumlah koreksi-

Bits
x - setelah diaktifkan, keadaan bit bisa apa saja.
sedikitsetelah resetdeskripsi
STxSaat menulis 1 untuk bit ini, generator berhenti
CEBxKetika bit CEB (Century Enable Bit) diatur, maka ketika abad baru tercapai, bit CB (Century Bit) akan mengubah nilai kebalikannya.
CBx
KELUAR1Ketika bit OUT (Level keluaran) dan FT (Uji Frekuensi) nol, pin FT / OUT ditekan ke ground. Dengan FT = 1, output FT / OUT adalah 512 Hz dan bit OUT tidak masalah.
FT0
SxTanda kalibrasi stroke RTC.

Perbedaannya dimulai pada penugasan bit 7, 6 dan 5 dari clock register. Dalam M41T56, bit 7 dan 6 digunakan untuk menunjukkan transisi ke abad baru, dan bit 5 dan 4 digunakan untuk menghitung puluhan jam. Selain itu, penghitungan jam hanya dimungkinkan dalam mode 24, mode AM / PM tidak tersedia. Dalam DS1307, bit 7 tidak digunakan, nol dalam bit 6 menunjukkan bahwa mode penghitungan 24 digunakan, dan dalam kasus ini, bit 5 dan 4 berisi puluhan jam. Jika bit 6 adalah satu, maka bit 5 menjadi bendera AM / PM, dan bit 4 berisi puluhan jam.

Perbedaan yang signifikan ada di register kontrol, yang berisi kata koreksi stroke.

Koreksi mata kuliah


M41T56 memungkinkan Anda untuk mengkompensasi kesalahan resonator kuarsa dalam kisaran -62 hingga +124 ppm, yang memberikan deviasi tidak lebih dari ± 5 detik per bulan. Untuk kompensasi bertanggung jawab enam bit paling tidak signifikan dari register kontrol. Bit 4-0 mengandung bilangan bulat yang tidak ditandatangani dari nilai koreksi, dan bit 5 menetapkan arah koreksi. Jika bit 5 mengandung nol, maka stroke melambat dalam langkah 2,034 ppm, jika tidak RTC mempercepat dalam langkah-langkah 4,068 ppm. Ini tidak nyaman, jadi saya membuat sketsa beberapa fungsi sederhana untuk mengkonversi dari ppm ke kata koreksi dan sebaliknya.

/*        . */ #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; } 

Deteksi kesalahan


Baik DS1307, tetapi M41T56 dapat mendeteksi kesalahan generasi, tetapi mereka menjamin bahwa ketika daya dihidupkan, beberapa bit akan berada dalam keadaan tertentu. M41T56 saat diaktifkan di register kontrol akan menjadi 10xxxxxx. Untuk melacak crash program, Anda dapat menggunakan algoritma berikut. Jika, ketika mikrokontroler dihidupkan, register kontrol RTC berisi 10xxxxxx, maka ada kegagalan daya dan nilai harus ditulis ke dalam register yang bit-bit tingginya tidak sama dengan 10. Yang paling sederhana adalah menulis kata koreksi dengan bit 7 dan 6 sama dengan nol.

Sastra


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


All Articles