Tôi có vấn đề này trong một dự án hiện tại.
Cách tôi xử lý là giữ giá trị trực tiếp của bộ đếm trong RAM. Tôi đã thêm một chút phần cứng để vi điều khiển có thể phát hiện ra rằng điện áp nguồn đầu vào thấp. Nếu vậy, nó dừng những gì nó đang làm, lưu giá trị bộ đếm trực tiếp trong EEPROM, sau đó chờ xem điện áp nguồn thô. Nếu nó đi lên, với một số độ trễ, thì vi cơ bản sẽ khởi động lại. Mặt khác, nếu nguồn điện tiếp tục giảm, micro cuối cùng sẽ bị dừng lại. Trong lần khởi động lại tiếp theo, giá trị bộ đếm được tải từ EEPROM, sau đó được sử dụng lại trong RAM cho đến khi tắt nguồn tiếp theo.
Sẽ không mất nhiều thời gian để viết một giá trị nhỏ vào EEPROM. Rất có thể hệ thống cung cấp năng lượng hiện tại của bạn có đủ bộ lưu trữ năng lượng để bạn có thể phát hiện điện áp xuống thấp và vẫn có đủ thời gian chạy được đảm bảo trước khi cấp nguồn cho vi mô xuống dưới ngưỡng ghi hoạt động hoặc EEPROM.
Trong trường hợp của tôi, phần cứng bổ sung duy nhất là một diode Schottky để ngăn chặn nguồn điện DC hút điện từ nguồn cục bộ trên đường xuống và hai điện trở làm bộ chia điện áp để micro có thể đọc điện áp đầu vào thô. Phần còn lại là phần sụn.
Điều quan trọng cần lưu ý là bạn nên xem điện áp trên đầu vào cho bất kỳ nguồn cung cấp cuối cùng nào cung cấp năng lượng cho micro, chứ không phải điện áp nguồn của micro. Vào thời điểm sau này xuống thấp, nó có thể là quá muộn. Hy vọng rằng có một phạm vi điện áp dưới mức tồi tệ nhất khi mọi thứ hoạt động chính xác, và trên mức cung cấp năng lượng của vi mô để đảm bảo điện áp quy định cho vi mô. Trong trường hợp của tôi, nguồn cung cấp của micro là một bộ điều chỉnh buck được cung cấp từ 48 V, do đó, có một phạm vi lớn dưới mức bình thường nhưng nơi mà micro vẫn có thể hoạt động đáng tin cậy.