Nếu đây là lần đầu tiên đến với Điện Tử Việt Nam, bạn có thể đọc phần Hỏi đáp bằng cách nhấn vào liên kết. Có thể bạn cần đăng kí trước khi có thể gửi bài . Để bắt đầu xem bài viết, chọn diễn đàn bạn muốn thăm dưới đây.
Hic! tình hình của mình là làm cái đồng hồ số bằng 89s52 với DS1307, làm chạy ngon lành được 2 ngày. Tới sáng nay thì nó lăn đùng ra đứng im không chạy nữa, khi chạm tay vào 1 chân của con thạch anh hoặc chân 1 ( hoặc 2) của DS1307 thì nó lại chạy tiếp, nhưng chạy ko chính xác ( 2s mới nhảy lên 1 số ). Mình đã thử đổi cả thạch anh lẫn DS1307 nhưng vẫn vậy. Các pro nào biết nguyên nhân chỉ giáo giúp !! hix cám ơn nhiều !!!!!
cái này khi lập trình bạn clr bít cuối cùng của thanh ghi giây đi nhé, tức là bạn cho bít cuối đó là 0 ấy, bit đó=0 là cho phép đồng hồ hoạt động, trước mình cũng bị như vậy
cái này khi lập trình bạn clr bít cuối cùng của thanh ghi giây đi nhé, tức là bạn cho bít cuối đó là 0 ấy, bit đó=0 là cho phép đồng hồ hoạt động, trước mình cũng bị như vậy
Bạn có thể nói rõ hơn tí được không? clear sau mỗi lần quét hay sau khi quét xong các led mới clear ?
chỉ làm 1 lần lúc bắt đầu khởi động thôi cho ở đầu chương trình, mà xoá về 0 xong rồi phải viết vào RTC đấy, thì nó mới có tác dụng, bạn đọc kỹ về datasheet con ds1307 đi nhé
chỉ làm 1 lần lúc bắt đầu khởi động thôi cho ở đầu chương trình, mà xoá về 0 xong rồi phải viết vào RTC đấy, thì nó mới có tác dụng, bạn đọc kỹ về datasheet con ds1307 đi nhé
Xem kỹ lại, khả năng là khi chạm tay vào SDA và SCL thì nó sẽ chạy tốt. Tự nghiên cứu thêm nếu gặp đúng trường hợp đó nhé, chịu khó suy nghĩ sẽ ra, heheee
bạn đấy nói chạy ngon lành được 2 ngày rồi, không có lý gì không có trở treo mà chạy đc 2 ngày giờ lại không chạy nữa, với lại con 8051 ngoài port0 ra thì các port khác giao tiếp với ds khỏi cần trở treo vẫn chạy như thường. nguyên nhân này là do khi mình để bản mạch trên 1 vật gì đó có điện trở trong khi mình đang chỉnh giờ nên vô tình khi write vào thanh ghi giây con ds1307 bít cuối cùng được setb lên 1 làm cho con ds ngưng hoạt động, ngày xưa mình hay cầm tay vào đó rồi chỉnh giờ thì bị như vậy, từ khi treo nó lên chỗ khô ráo thì không thấy bị nữa
chỉ làm 1 lần lúc bắt đầu khởi động thôi cho ở đầu chương trình, mà xoá về 0 xong rồi phải viết vào RTC đấy, thì nó mới có tác dụng, bạn đọc kỹ về datasheet con ds1307 đi nhé
Mình đã đưa sec = 0 và ghi vào RTC ở đầu hàm void như bạn hướng dẫn. Kết quả là nó chạy lại như bình thường, nhưng khi mất điện hoặc reset thì lại mất hết dữ liệu ngày giờ, phải chỉnh lại. Mình làm có gì sai không bạn.
Dĩ nhiên là có pin chứ pác, mấy pác kia chỉ là set lại giá trị sec = 0 thì chạy, vậy sau mỗi lần reset thì sec lại nạp lại giá trị 0 mất rùi ????
Bit CH của thanh ghi giây là bit cho phép DS hoạt động (khi được xóa về 0). Khi DS mới mua về thường nó là mức 1, khi bạn gắn vào mạch đã có pin rồi và lần đầu tiên ghi vào thanh ghi giây giá trị 00H thì DS sẽ chạy mãi cho tới khi bit CH bị set lên 1. Vì thế bạn chỉ cần xóa nó lần đầu tiên thôi, khi mất điện rồi có điện lại mà DS ko hoạt động thì có thể chip bị nhiễu hoặc chân thạch anh tiếp xúc ko tốt. Đường đồng chân thạch anh bạn nên giảm tối đa độ dài và phủ GND xung quanh là tốt nhất, trong hình, thạch anh của mình cho dán sát chân DS luôn và phủ GND xung quanh
Bit CH của thanh ghi giây là bit cho phép DS hoạt động (khi được xóa về 0). Khi DS mới mua về thường nó là mức 1, khi bạn gắn vào mạch đã có pin rồi và lần đầu tiên ghi vào thanh ghi giây giá trị 00H thì DS sẽ chạy mãi cho tới khi bit CH bị set lên 1. Vì thế bạn chỉ cần xóa nó lần đầu tiên thôi, khi mất điện rồi có điện lại mà DS ko hoạt động thì có thể chip bị nhiễu hoặc chân thạch anh tiếp xúc ko tốt. Đường đồng chân thạch anh bạn nên giảm tối đa độ dài và phủ GND xung quanh là tốt nhất, trong hình, thạch anh của mình cho dán sát chân DS luôn và phủ GND xung quanh
Dạ không phải chip không hoạt động đâu anh mà là nó trở lại trạng thái ban đầu sec = min = hour =0; em set cho thanh ghi giây bằng 0 ngay ở đầu hàm void, nên bị vậy. Set ở đó có đúng không anh ?, em mô phỏng trên proteus cũng bị vậy nên chắc không phải tại nhiễu. Không biết có làm sai gì không, Em mới tìm hiểu về VXL nên còn gà lắm !!
Dạ không phải chip không hoạt động đâu anh mà là nó trở lại trạng thái ban đầu sec = min = hour =0; em set cho thanh ghi giây bằng 0 ngay ở đầu hàm void, nên bị vậy. Set ở đó có đúng không anh ?, em mô phỏng trên proteus cũng bị vậy nên chắc không phải tại nhiễu. Không biết có làm sai gì không, Em mới tìm hiểu về VXL nên còn gà lắm !!
bạn nạp code có set thanh ghi giây vào mạch 1 lần nữa đi, rồi xóa cái đoạn code set thanh ghi đó đi (nghĩa là ko đụng gì tới con DS nữa chỉ vào phần quét led là mới đọc ra thôi ) sau đó nạp lại cho chip
Comment