I. Đồng hồ thời gian thực DS12887
I.4 Các thanh ghi điều khiển
• Thanh ghi A
- UIP (Update In Progess) có trạng thái có thể quan sát đợc. Khi UIP = 1, sự thay đổi cập nhật xảy ra, khi UIP = 0 sự thay đổi cập nhật không xảy ra cho đến hết khoảng thời gian 244às .Thông tin thời gian, lịch, báo thức trong RAM sẵn sàng cho truy cập khi UIP = 0. UIP chỉ đợc đọc và không bị ảnh hởng bởi Reset. Nếu bit SET (trong thanh ghi B) =1 sẽ ngăn không cho thay đổi và xoá trạng thái của bit UIP.
- DV0, DV1, DV2: 3 bit này đợc sử dụng để bật/tắt bộ dao động và reset sự đếm lùi.
DV2 DV1 DV0
0 1 0 Bật bộ dao động và cho phép đồng hồ thời gian thực giữ thời gian.
Sau thời gian 500ms mới có sự cập nhật. X 1 1 Cho phép bộ dao động nhng giữ sự kiện đếm
ngợc trong lúc reset
- RS3, RS2, RS1, RS0 : 4 bit này dùng để chọn 1 trong 13 tap của bộ chia 15 trạng thái, hoặc dùng để cấm bộ chia. Tap đợc chọn có thể đợc sử dụng để phát ra sóng vuông và/hoặc 1 ngắt định kỳ. Ngời dùng có thể làm theo 1 trong các cách sau:
1. Cho phép bằng bit PIE.
2. Cho phép đầu ra SQW bằng bit SQWE. 3. Cho phép cả 2 cùng thời gian và trị số. 4. Cho phép từng cái 1.
• Thanh ghi B
- SET: Khi bit SET = 0 chức năng thay đổi cập nhật hoạt động bình th- ờng, đếm từng giây 1. Khi SET = 1 chức năng thay đổi cập nhật bị cấm, chơng trình có thể cài đặt thời gian, lịch mà không cần có sự cập nhật xảy ra ở giữa quá trình cài đặt. Quá trình đọc cũng đợc thực thi tơng tự. Bit SET có thể đọc/ghi, nó không bị ảnh hởng bởi Reset hay các lệnh trong DS12887.
- PIE (Periodic Interrupt Enable): Bit cho phép ngắt định kỳ, bit này có thể đọc/ghi, nó cho phép PF (Periodic Interrupt Flag) trong thanh ghi C đặt chân IRQ xuống thấp. Khi PIE = 1, ngắt định kỳ đợc phát ra bởi mức thấp của
IRQ với các trị số đợc biểu thị bởi RS3 → RS0 của thanh ghi A. Khi PIE = 0, đầu ra IRQ sẽ bị khoá, nhng PF vẫn đợc set. PIE không bị ảnh hởng bởi các lệnh trong của DS12887, nhng nó sẽ bị xoá về 0 khi Reset.
- AIE (Alarm Interrupt Enable): bit này có thể đọc/ghi. Khi AIE = 1, cho phép AF (Alarm Flag) trong thanh ghi C xác định IRQ. Một ngắt cảnh báo xảy ra từng giây khi 3 bytes thời gian bằng 3 bytes cảnh báo với mã cảnh báo 11xx.xxxx. Khi AIE = 0, AF không khởi động tín hiệu IRQ. AIE bị xoá bởi reset, các lệnh trong DS12887 không làm ảnh hởng đến bit AIE.
- UIE (Update Ended Interrupt Enable): bit có thể đọc/ghi. Bit này cho phép UF (Update End Flag) trong thanh ghi C xác định IRQ. Khi chân RESET xuống thấp hoặc bit SET lên cao sẽ xoá bit UIE.
- SQWE (Square Wave Enable). Khi SQWE = 1, 1 tín hiệu sóng vuông với tần số đợc chọn bởi các bit RS 3 → RS 0, sẽ xuất hiện ở đầu ra SQW. Khi SQWE = 0 , SQW sẽ giữ ở mức thấp. Trạng thái của SQWE bị xoá bởi RESET, SQWE có thể đọc/ghi.
- DM (Dat Mode): bit này dùng để chọn thông tin về thời gian, lịch đợc định dạng là mã nhị phân hay mã BCD. DM đợc set bởi phần mềm và có thể đọc nếu cần. DM = 1: mã nhị phân , DM= 0 : mã BCD.
- 24/12 : bit điều khiển định dạng byte giờ. Khi bit này = 1 chế độ 24giờ, khi bit = 0 chế độ 12giờ. Bit này có thể đọc/ghi, và không bị ảnh hởng bởi
RESET.
- DSE (Daylight Saving Enable): bit có thể đọc/ghi. Bit này dùng để cho phép 2 cập nhật đặc biệt. Khi DSE đợc set = 1: vào Chủ nhật đầu tiên của tháng 4 khi thời gian tiến đến 1:59:59am đợc tăng lên thành 3:00:00am. Vào chủ nhật cuối cùng của tháng 10 khi thời gian tiến đến 1:59:59am thì đợc thay đổi thành
1:00:00am. Khi DSE = 0 sẽ không có sự thay đổi trên. Bit này không bị ảnh h- ởng bởi các lệnh trong hay RESET.
• Thanh ghi C
- IRQF (Interrupt Request Flag) sẽ đợc set lên 1 khi có 1 trong các sự kiện sau xảy ra:
PF = PIE = 1 AF = AIE = 1 UF = UIE = 1
IRQF = PF.PIE + AF.AIE + UF.UIE
Khi IRQF =1 thì IRQ = 0. Tất cả các bit cờ bị xoá khi thanh ghi C đợc đợc bởi phần mềm (chơng trình), hay khi RESET xuống thấp.
- PF (Periodic Interrupt Flag) là bit chỉ đọc, nó sẽ set =1 khi 1 cạnh đợc chọn trong Tap của bộ chia. PF đợc set =1 hoàn toàn độc lập với trạng thái của bit PIE. Khi PF = PIE = 1, tín hiệu IRQ tích cực và sẽ set bit IRQF. PF đợc xoá bởi RESET hay có sự đọc thông tin thanh ghi C của chơng trình.
- AF (Alarm Interrupt Flag): Khi AF = 1 sẽ cho biết rằng thời gian hiện tại đã bằng thời gian cảnh báo, nếu AIE cũng bằng = 1 thì chân IRQ sẽ xuống thấp và IRQF =1. AF đợc xoá bởi RESET hay có sự đọc thông tin thanh ghi C của chơng trình.
- UF (Update Ended Interrupt Flag) : bit này đợc set sau mỗi chu kỳ cập nhật. Khi UIE =1 thì UF = 1 làm cho IRQF = 1 → IRQ đợc chọn.
- Bit 0 → bit 3: không sử dụng. • Thanh ghi D
- VRT (Valid RAM and Time): bit này không cho phép ghi, và khi đọc thì phải luôn có giá trị 1. Nếu lúc nào cũng có giá trị 0, thì điều đó cho biết nguồn nuôi của RTC đã cạn, và kết quả dữ liệu của đồng hồ thời gian thực và RAM rất có thể không còn chính xác.
- Bit 0 → bit 6 : không sử dụng. Luôn có giá trị bằng 0 khi đọc, không cho phép ghi.