![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#11 |
Đệ tử 5 túi
Tham gia ngày: Jan 2008
Bài gửi: 96
: |
Khởi tạo ds1307
Xin cám ơn meishun nhiều nhé !
Mình hiểu cái bẫy DS của bạn thế này: Đặt lệnh ghi vào d/c 0x08 ngay trong hàm khởi tạo DS. Trong hàm Main() thì kiểm tra lại d/c 0x08 xem có còn duy trì giá trị đó không. Nếu không còn tức là các thông số thời giờ trong DS cũng đã sai, phải cho khởi tạo lại DS. Nếu còn thì bỏ qua bước khởi tạo. Đại khái code như thế này phải không meishun. READ_DS(); //Đọc ds1307, có đọc X = giá trị lưu tại 0x08 (0x08 chứa 0xff) if (X != 0xff) SET_DS(); //Nếu khác 0xff thì Khởi tạo DS1307, có ghi vào 0x08 giá trị 0xff --------------------------------------------------------------------- 22/7/2008 Mình đã cho chạy trên mạch, kết quả OK rồi. Riêng con DS chạy cũng ổn định mà. Có khi bạn thay con DS khác xem sao. Và mình đề nghị thêm: thay giá trị 0xff bằng 1 giá trị khác, 0x55 chẳng hạn. Bởi vì số 0xff đôi khi mạch bị nhiễu cũng ngẫu nhiên sinh ra sô 0xff (hoặc 0x00) nên dùng làm mốc theo dỏi thì không chắc lắm, còn số khác như 0x55 chẳng hạn, thì xác xuất do mạch phát sinh ngãu nhiên sẽ ít xảy ra -> chống hiễu tốt hơn ! thay đổi nội dung bởi: minhsondaklak, 04-08-2008 lúc 10:44 AM. Lý do: Làm rõ ý |
![]() |
![]() |
|
|