VII. VI ĐIỀU KHIỂN GIAO TIẾP VỚI REALTIME 12C887:
5. HOẠT ĐỘNG CỦA CÁC THANH GHI ĐIỀU KHIỂN:
DS12C887 có 4 thanh ghi điều khiển được sử dụng mọi lúc kể cả trong quá trình cập nhật. Thanh ghi A
BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
UIP DV2 DV1 DV0 RS3 RS2 RS1 RS0
UIP - Update In Progress (UIP) là bit cờ trạng thái có thể theo dõi được.
Khi bit UIP ở mức 1 thì cho phép quá trình cập nhật xảy ra ngay sau đó.
Khi bit UIP ở mức 0, quá trình cập nhật sẽ không xảy ra sau khoảng thời gian ít nhất là 244
μs. Những thông tin về thời gian, lịch, và báo giờ ở trong RAM có hiệu lực cho việc truy cập khi bit UIP ở mức 0.
Bit UIP là bit chỉ đọc và không bị ảnh hưởng của chân RESET. Khi ghi bit SET ở thanh ghi B lên 1 sẽ ngăn chặn mọi quá trình cập nhật và xoá của bit trạng thái UIP.
DV2, DV1, DV0 – 3 bit này được sử dụng để mở hoặc tắt bộ dao động và cài đặt lại quá trình
đếm xuống. Khi [DV2DV1 DV0] = [010] có chức năng duy nhất là bật bộ dao động lên và cho phép RTC đếm thời gian. Khi [DV2DV1 DV0] = [11×] sẽ cho phép dao động nhưng giữ quá trình đếm xuống ở mức reset. Quá trình cập nhật tiếp theo sẽ diễn ra sau 500ms khi kiểu 010 được ghi vào DV0, DV1 và DV2.
RS3, RS2, RS1, RS0 - 4 bit lựa chọn tốc độ dùng để chọn một trong 13 loại của bộ chia 15
trạng thái hoặc không cho phép xuất tín hiệu chia ra ngoài. Loại được lựa chọn có thể dùng để phát ra sóng vuông (chân SQW) và/hoặc ngắt theo chu kỳ. Người sử dụng có thể sử dụng 1 trong những cách sau :
Cho phép ngắt với bit PIE
Cho phép xuất ngõ ra chân SQW với bit SQWE
Cho phép cả hai hoạt động cùng một lúc và cùng một loại. Không kích hoạt cả 2
Bảng 7-10 liệt kê chu kỳ ngắt và tần số sóng vuông mà có thể chọn lựa với bit RS. Cả 4 bit đọc/ ghi đều không bị ảnh hưởng bởi chân RESET.
Thanh ghi B
MSB LSB
BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
SET PIE AIE UIE SQWE DM 24/12 DSE
SET – Khi bit SET ở mức 0, thông thường quá trình cập nhật bằng cách tăng giá trị đếm 1 lần
1 giây. Khi bit SET được ghi vào mức 1, mọi quá trình cập nhật đều bị cấm. Các chu kỳ đọc có thể thực thi ở cùng một kiểu. Bit SET là bit đọc/ghi và không chịu ảnh hưởng của reset hoặc các chức năng bên trong của DS12C887.
PIE – Periodic Interrupt Enable: Bit cho phép ngắt theo chu kỳ là bit đọc/ghi, bit này cho
phép bit cờ ngắt theo chu kỳ (PF) trong thanh ghi C để điều khiển chân IRQ xuống mức thấp. Khi bit PIE được đặt lên mức 1, chu kỳ ngắt được tạo ra bằng cách điều khiển chân IRQ
xuống mức thấp tuỳ thuộc vào tỉ lệ phân bố của bit RS3 ÷ RS0 ở thanh ghi A.
Khi bit PIE = 0 sẽ ngăn chặn tín hiệu ngõ ra IRQ khỏi việc điều khiển bằng ngắt theo chu kỳ nhưng bit cờ chu kỳ PF vẫn thiết lập tốc độ cho chu kỳ.
Bit PIE không chịu ảnh hưởng các hoạt động bên trong của DS12C887 nhưng bị xoá về 0 khi real-time bị reset.
AIE – Alarm Interrupt Enable: Bit cho phép ngắt báo giờ là bit cho phép đọc/ghi, khi bit
AIE bằng 1 sẽ cho phép bit cờ báo giờ (AF) ở thanh ghi C tạo tín hiệu ngắt IRQ.
Tín hiệu ngắt báo giờ xảy ra ở tất cả các giây khi cả 3 bytes báo giờ chứa mã báo giờ “don’t care” được thể hiện ở byte nhị phân như sau 11XXXXXX.
Các chức năng bên trong của DS12C887 không bị ảnh hưởng bởi bit AIE.
UIE – Update Ended Interrupt Enable: Bit cho phép kết thúc quá trình ngắt cập nhật là bit
đọc/ghi, bit này cho phép cờ kết thúc cập nhật UF ở thanh ghi C kích ngắt IRQ. Khi real-time bị reset hoặc chân SET ở mức 1 sẽ xóa bit UIE.
SQWE – Square Wave Enable: Khi bit SQWE được đặt lên mức 1, một tín hiệu sóng vuông có tần số được lựa chọn bởi các bit RS3 đến RS0 sẽ xuất ra chân SQW. Khi bit SQWE được đặt ở mức thấp, chân SQW sẽ được giữ ở mức thấp. SQWE là bit đọc/ghi và được xóa khi real-time bị RESET.
DM – Data Mode: Bit kiểu dữ liệu DM quy định khi nào thì thông tin lịch và thời gian định
dạng nhị phân hoặc BCD. Bit DM được đặt bởi chương trình để có định dạng thích hợp và có thể đọc khi được yêu cầu. Bit này không bị thay đổi bởi các hoạt động bên trong của real-time hoặc khi bị reset. Mức 1 của DM sẽ định dạng dữ liệu nhị phân còn mức 0 sẽ định dạng dữ liệu BCD.
24/12 – Bit điều khiển 24/12 xác định kiểu cho các byte giờ. Khi ở mức 1 thì nó chỉ thị chế độ
hiển thị 24 giờ, còn ở mức 0 thì chỉ thị chế độ hiển thị 12 giờ. Bit này là bit đọc ghi và không bị ảnh hưởng bởi hoạt động bên trong của real-time cũng như khi real-time bị reset.
DSE – Daylight Savings Enable: Bit cho phép nhớ công khai DSE là bit đọc\ghi.
Bit này cho phép 2 cập nhật đặc biệt khi DSE được đặt lên 1.
Vào Chủ Nhật đầu tiên của tháng 4, khi thời gian tăng đến giá trị 1:59:59 AM thì sẽ đổi thành 3:00:00 AM.
Vào Chủ Nhật cuối cùng của tháng 10, khi thời gian lần đầu tiên đạt đến 1:59:59 AM thì nó sẽ đổi thành 1:00:00 AM.
Chức năng đặc biệt này sẽ không được thực thi nếu bit DSE ở mức 0. Bit này không bị ảnh hưởng bởi các hoạt động bên trong của real-time cũng như khi bị reset.
Thanh ghi C
MSB LSB
BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
IRQF PF AF UF 0 0 0 0
IRQF – Interrupt Request Flag: Bit cờ yêu cầu ngắt được đặt lên 1 khi thoả một trong những
điều dưới đây:
PF = PIE = 1 AF = AIE = 1 UF = UIE = 1
Bất cứ lúc nào bit IRQF được đặt lên 1, chân IRQ được kéo về mức thấp. Tất cả các cờ bị xoá sau khi thanh ghi C được đọc bởi chương trình hoặc khi real-time bị reset.
PF – Periodic Interrupt Flag: Bit cờ ngắt theo chu kỳ là bit chỉ đọc, nếu bit này được đặt lên
mức 1 khi có 1 cạnh xung được phát hiện ở tín hiệu lựa chọn của bộ chia. Các bit RS3 đến RS0 thiết lập tốc độ cho chu kỳ. Cờ PF được đặt lên 1 không phụ thuộc vào trạng thái của bit PIE.
Khi cả PF và PIE đều ở mức 1, tín hiệu IRQ sẽ chuyển sang trạng thái tích cực và sẽ đặt bit IRQF lên mức 1. Bit PF sẽ bị xoá bởi reset real-time hoặc bởi lệnh đọc thanh ghi C.
AF – Alarm Interrupt Flag: nếu AF = 1 sẽ xác định thời gian hiện tại trùng với thời gian hẹn
giờ. Nếu bit AIE cũng ở mức 1, chân IRQ sẽ xuống mức thấp và bit IRQF sẽ bằng 1. Bit AF sẽ bị xoá bởi reset real-time hoặc bởi lệnh đọc thanh ghi C.
UF – Update Ended Interrupt Flag: Bit cờ ngắt kết thúc cập nhật được set sau mỗi chu kỳ cập
nhật. Khi bit UIE được set lên 1, mức 1 ở UF sẽ làm cho bit IRQF lên mức 1 sẽ kích IRQ báo ngắt. Bit UF sẽ bị xoá bởi reset real-time hoặc bởi lệnh đọc thanh ghi C.
Từ bit 3 đến bit 0- Đây là những bit không sử dụng của thanh ghi trạng thái C. Những bit này
luôn luôn ở mức 0 và không thể ghi. Thanh ghi D
MSB LSB
BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
VRT 0 0 0 0 0 0 0
VRT – Valid RAM and Time: Bit thời gian và RAM có hiệu lực cho biết tình trạng của pin
được kết nối chân VBAT. Bit này không cho phép ghi được và khi đọc luôn có giá trị bằng 1. Nếu khi đọc bit này ở mức 0 thì sẽ cho biết nguồn năng lượng lithium bên trong đã cạn và cả hai thông số thời gian thực và dữ liệu RAM đều có thể sai. Bit này không chịu ảnh hưởng bởi chân RESET.
BIT 6 ĐẾN BIT 0 – Những bit được đề cập ở trên của thanh ghi D không được sử dụng.
Chúng không ghi được và khi đọc thì luôn có giá trị bằng 0. 6. MẠCH GIAO TIẾP VI ĐIỀU KHIỂN VỚI REAL-TIME:
Mạch giao tiếp vi điều khiển với real-time DS12C887 như hình 7-42. Trong sơ đồ này vi điều khiển chỉ giao tiếp với 1 real-time với mục đích trình bày cách giao tiếp chứ trong thực tế thì vi điều khiển phải giao tiếp với nhiều thành phần khác thì hệ thống mới hoạt động ví dụ giao tiếp thêm led 7 đoạn hoặc LCD mới hiển thị được các thông số thời gian.
Hình 7-42. Giao tiếp vi điều khiển với Real-time.
Trong mạch điện hình 7-42, vi điều khiển giao tiếp với real-time theo kiểu bộ nhớ dữ liệu, vi điều khiển có 4 lệnh giao tiếp với bộ nhớ dữ liệu mở rộng bên ngoài:
• Lệnh đọc dữ liệu: “movx a,@dptr” (1)
• Lệnh xuất dữ liệu: “movx @dptr,a” (2)
• Lệnh đọc dữ liệu: “movx a,@Ri” (3)
• Lệnh xuất dữ liệu: “movx @Ri,a” (4)
Hai lệnh (1) và (2) thường được sử dụng khi dung lượng bộ nhớ mở rộng lớn hơn 256 byte, port 2 dùng để tải địa chỉ byte cao. Hai lệnh (3) và (4) được sử dụng khi dung lượng bộ nhớ nhỏ hơn hay bằng 256 byte, port 2 không dùng có thể điều khiển các thiết bị khác. Vậy trong trường hợp này nên dùng 2 lệnh (3) và (4).