Sự cố mất điện DS1307


7

DS1307 có hai nguồn năng lượng: nguồn VCC chính và pin dự phòng. Cái sau sẽ cung cấp năng lượng cho DS1307 khi nguồn chính bị tắt để đồng hồ có thể tiếp tục tích tắc.

Tôi đang gặp vấn đề với RTC DS1307 khi nguồn điện chính đột ngột tắt và sau đó quay trở lại thời gian trên màn hình LCD chỉ bị đóng băng. Đôi khi khi điều đó xảy ra (tắt nguồn), RTC tiếp tục chạy (có vẻ như DS bị kẹt khi tắt nguồn chính).

Đây là mạch chính xác tôi đã sử dụng và pin cho 3.0V:

Sơ đồ

Mã tôi đã sử dụng chính xác trong bài đăng trên blog: DS1307 Đồng hồ thời gian thực làm việc .

Vấn đề có thể là gì?


1
Bạn có chắc chắn 100% rằng đó là DS1307 đang bị trục trặc? Bạn đã kết nối giao diện I2C độc lập với các dòng SCL và SDA và cố gắng truy vấn IC chưa? Câu hỏi của bạn cũng mâu thuẫn với chính nó: tại một thời điểm bạn nói rằng bộ phận giữ thời gian khi mất điện, sau đó trong ngoặc bạn nói "bị kẹt khi nguồn điện chính bị tắt" - nó có bị kẹt không?
Adam Lawrence

@Madmanguruman: còn gì nữa không? Tôi đã thử một ATmega khác và vấn đề vẫn xảy ra, tôi kết nối nó với arduino uno và với màn hình nối tiếp -RTClib ví dụ - nó gửi dữ liệu chính xác (thời gian) đến máy tính, tôi tắt nguồn, đôi khi nó giữ thời gian và đôi khi nó bị kẹt Tôi có thể nói đó là ngẫu nhiên không !!
một mình

Câu trả lời:


3

Sơ đồ là tốt. Chạy danh sách kiểm tra này:

  • Kiểm tra nguồn điện của bạn để biết sóng sạch, đặc biệt về thời gian kết nối và ngắt kết nối. Nếu nó tăng vọt hơn 1V, hãy thêm tụ 4,7uF. Nếu nó không khắc phục được sự cố, hãy thay đổi nguồn điện và gia hạn DS1307.

  • Kiểm tra khả năng hiện tại của pin 3V, không chỉ có điện áp, DS1307 cần 200uA phút.

  • Kiểm tra dơi 3V có đường dẫn không mong muốn xả nó. Đặc biệt nếu bạn đang sử dụng protoboard.

  • Kiểm tra các lệnh / phần mềm I2C.


cảm ơn sự giúp đỡ của bạn, tôi nhưng một 4.7uF song song với nguồn và nó giải quyết vấn đề cảm ơn vì sự giúp đỡ của bạn
một mình

2

Thông thường loại vấn đề này phát sinh do:

  1. Nguồn cung cấp không xử lý quá độ khi mất điện và khi nó được khôi phục.
  2. Tế bào xấu
  3. Đôi khi do lỗi phần mềm ...

cảm ơn bạn ... nhưng tôi đã kiểm tra nguồn điện và pin và không có vấn đề gì .... tôi đã giải quyết nó bằng một c4.7uf song song với bộ điều chỉnh 5v chính
một mình

1

Kiểm tra để đảm bảo rằng bạn đang đặt lại bus I2C đúng cách khi khởi động. Nếu bạn không thấy rằng khi chương trình của bạn bị khóa, dòng dữ liệu sẽ luôn ở mức thấp. Bạn có thể giải quyết vấn đề này bằng cách gửi xung đồng hồ từ bản gốc cho đến khi tất cả các thiết bị đã phát hành dòng dữ liệu.


cảm ơn bạn .... nhưng thiết lập lại bus I2C đúng cách .. tôi đã tìm ra giải pháp để thêm một 4.7uF song song với nguồn
một mình

1

Bạn có chắc chắn làm như được đề xuất trong bảng dữ liệu:

ĐỒNG HỒ VÀ LỊCH


Bit 7 của thanh ghi 0 là bit dừng đồng hồ (CH). Khi bit này được đặt thành 1, bộ dao động bị tắt. Khi bị xóa về 0, bộ tạo dao động được bật. Xin lưu ý rằng trạng thái bật nguồn ban đầu của tất cả các thanh ghi không được xác định. Do đó, điều quan trọng là phải kích hoạt bộ dao động (CH bit = 0) trong cấu hình ban đầu.


Nói cách khác, nếu bạn quên khởi tạo phần mềm để đặt lại bit CH, bộ tạo dao động sẽ không hoạt động (và giá trị bit là ngẫu nhiên khi bật nguồn)


1
cảm ơn câu trả lời của bạn, tôi đã thực hiện khởi tạo bit "CH" và tôi đã tìm thấy một giải pháp tốt bằng cách thêm 4.7uF song song với bộ điều chỉnh 5v (tại nguồn chính) và nó hoạt động tốt
một mình

Vui mừng bạn đã giải quyết nó.
Drazen Cika
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.