Nguyên văn bởi binhminhdem
Xem bài viết
Cái này dễ mà, tui biết một số người dùng kiểu củ chuối là chạy lần đầu sẽ dùng lệnh set thời gian để set cho RTC, xong rồi bỏ (remove) lệnh đó đi và biên dịch lại rồi nạp lại cho chip.
Còn cách của tui thì trước khi set thời gian, MCU sẽ đọc một ô nhớ định sẵn (ví dụ ở địa chỉ 0x08) xem có đúng với giá trị đã ghi sẵn trước đó không (ví dụ 0xAA). Nếu KHÔNG tức là RTC đó chưa được set thời gian vậy thì bác sẽ gọi hàm set thời gian và ghi giá trị 0xAA vào ô nhớ 0x08. Nếu giá trị đọc được là 0xAA thì tức là RTC đã được set nên sẽ bỏ qua lệnh set thời gian này. Vậy thì kết quả chạy từ lần reset thứ 2 trở đi, RTC luôn chạy đúng theo thời gian thực. Nếu Pin backup cho RTC bị hết (run out) và mất nguồn thì thời gian của RTC bị reset và ô nhơ 0x08 cũng mất dữ liệu, vậy coi như RTC chưa được set thời gian. Cách này dùng để test là chủ yếu còn để triển khai ứng dụng thực tế thì làm cách khác đó là dùng một module set thời gian chạy độc lập khi cần thì cắm vào set thời gian xong thì rút ra.
Thân ái.
Comment