HOẠT ĐỘNG CỦA REAL-TIME CLOCK KHI CẤP NGUỒN HOẶC KHI MẤT ĐIỆN:

Một phần của tài liệu Giao tiếp ứng dụng vi điều khiển (Trang 56 - 58)

VII. VI ĐIỀU KHIỂN GIAO TIẾP VỚI REALTIME 12C887:

4.HOẠT ĐỘNG CỦA REAL-TIME CLOCK KHI CẤP NGUỒN HOẶC KHI MẤT ĐIỆN:

Chức năng của đồng hồ thời gian thực sẽ tiếp tục hoạt động và tất cả RAM, thời gian, lịch và thời gian báo giờ và những vùng nhớ sẽ không mất dữ liệu bất chấp điện áp ngõ vào VCC.

Khi điện áp VCC được cung cấp cho DS12C887 và đạt tới điện áp lớn hơn 4.25 volts, thiết bị có thể sử dụng được sau 200 ms, dao động được cung cấp, nó cho phép bộ dao động hoạt động và quá trình dao động không ảnh hưởng bởi chân RESET. Tiếp theo hệ thống đã đi vào ổn định sau khi nguồn được cung cấp.

Khi VCC rớt xuống dưới 4.25 volts, ngõ vào lựa chọn CS bị bắt buộc chuyển sang trạng thái không hoạt động bất chấp giá trị tại ngõ vào chân CS - khi đó DS12C887 được hoạt động ở chế độ chống ghi. Khi DS12C887 đang ở trạng thái chống ghi, mọi ngõ vào đều bị bỏ qua còn các ngõ ra đều ở trạng thái tổng trở cao.

Khi VCC rớt xuống điện áp khoảng 3 volts, điện áp VCC cung cấp bên ngoài được cắt đi và nguồn pin lithinium ở bên trong DS12C887 sẽ cung cấp nguồn cho Real Time Clock và bộ nhớ RAM.

Bản đồ địa chỉ của DS12C887 được trình bày ở hình 7-41.

Hình 7-41. Tổ chức bộ nhớ bên trong của Real-time DS12C887.

Bản đồ địa chỉ bao gồm 114 bytes RAM thông dụng, 14 bytes RAM bao gồm đồng hồ thời gian thực, lịch, dữ liệu báo giờ và 4 thanh ghi được sử dụng cho việc điều khiển và thông báo tình trạng. Tất cả 128 bytes có thể được ghi hoặc đọc trực tiếp trừ những trường hợp sau:

¾ Thanh ghi C and D là hai thanh ghi chỉ đọc. ¾ Bit thứ 7 của thanh ghi A là bit chỉ đọc. ¾ Bit cao của byte thứ 2 là bit chỉ đọc.

Các thông số về thời gian và lịch có được bằng cách đọc các bytes tương ứng. Thời gian, lịch và báo giờ được cài đặt hoặc khởi tạo bằng cách ghi giá trị bytes RAM thích hợp.

Nội dung của 10 byte chứa thời gian, lịch và báo giờ đều có thể định dạng 1 trong 2 dạng nhị phân (Binary) hoặc BCD (Binary Coded Decimal).

Trước khi ghi các dữ liệu vào các ô nhớ thời gian, lịch, và các thanh ghi báo giờ bên trong thì bit SET ở thanh ghi B phải được thiết lập ở mức logic 1 để ngăn chặn việc cập nhật có thể xảy ra trong quá trình truy xuất.

Ngoài ra để ghi lên 10 thanh ghi chỉ thời gian, lịch, và thanh ghi báo giờ ở một định dạng đã lựa chọn (BCD hay nhị phân) thì bit chọn kiểu dữ liệu (Data mode – DM) của thanh ghi B phải được đặt ở mức logic thích hợp.

Tất cả 10 bytes thời gian, lịch và báo giờ phải sử dụng cùng kiểu dữ liệu. Phải xoá bit SET trong thanh ghi B sau khi thực hiện xong việc cập nhật thời gian cho đồng hồ, lịch và hẹn giờ.

Mỗi lần khởi động, đồng hồ thời gian thực cập nhật tất cả các thay đổi ở một kiểu đã lựa chọn. Dữ liệu sẽ không thể thay đổi nếu không khởi động lại 10 bytes dữ liệu.

Bảng 7-11 trình bày định dạng nhị phân và BCD của cả thời gian , lịch, và báo giờ.

Dãy lựa chọn

Địa chỉ Chức năng Giá trị

thập phân Nhị phân BCD

0 Giây 0-59 00-3B 00-59

1 Giây hẹn 0-59 00-3B 00-59

2 Phút 0-59 00-3B 00-59

3 Phút hẹn 0-59 00-3B 00-59

Giờ: mode 12 giờ 1-12 01-0C AM, 81-8C PM 01-12 AM, 81-92 PM 4

Giờ: mode 24 giờ 0-23 00-17 00-23

Giờ hẹn: 12 giờ 1-12 01-0C AM, 81-8C PM 01-12 AM, 81-92 PM 5

Giờ hẹn: 24 giờ 0-23 00-17 00-23

6 Ngày của tuần, chủ nhật = 1 1-7 01-07 01-07

7 Ngày của tháng 1-31 01-1F 01-31

8 Tháng 1-12 01-0C 01-12

9 Năm 0-99 00-63 00-99

Bảng 7-11. Các định dạng của các thông số thời gian. (adsbygoogle = window.adsbygoogle || []).push({});

Bit lựa chọn kiểu 24/12 không thể thay đổi nếu không khởi động lại thanh ghi giờ. Khi định dạng 12 giờ được lựa chọn, bit cao của byte giờ xác định PM khi nó được đặt ở mức logic 1. Mỗi giây một lần, 11 byte được cập nhật và kiểm tra tình trạng báo giờ.

Nếu lệnh đọc dữ liệu thời gian và lịch diễn ra trong quá trình cập nhật, một vấn đề phát sinh là giờ, phút, giây, … có thể không chính xác. Xác xuất đọc không chính xác dữ liệu thời gian và lịch là rất thấp. Có vài phương pháp tránh sai số có thể xảy ra khi đọc thời gian và lịch được đề cập sau.

3 byte báo giờ có thể sử dụng bằng 2 cách:

Cách thứ nhất: khi thời gian báo giờ được ghi vào các thanh ghi giờ, phút, giây, tác động báo

giờ được bắt đầu tại thời gian chính xác trong ngày khi bit cho phép báo chuông được đặt ở mức cao.

Cách thứ hai: sử dụng để đặt trạng thái bất chấp vào một hoặc nhiều byte báo chuông. Mã

bất chấp là bất kỳ mã số hex nào nằm trong giá trị từ C0 đến FF. Hai bit MSB của những byte trên đặt vào trạng thái bất chấp khi ở mức logic 1. Báo giờ sẽ được sinh ra mỗi giờ khi bit bất chấp được đặt vào byte giờ. Tương tự, báo giờ sẽ sinh ra mỗi phút nếu mã bất chấp có ở các byte giờ và các byte phút. Nếu mã bất chấp có ở trong cả 3 byte báo giờ thì nó sẽ tạo ra tín hiệu ngắt mỗi giây.

Một phần của tài liệu Giao tiếp ứng dụng vi điều khiển (Trang 56 - 58)