Thông báo

Collapse
No announcement yet.

DS1307 phải chạm tay mới chạy!!! help !!!

Collapse
This topic is closed.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • DS1307 phải chạm tay mới chạy!!! help !!!

    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 !!!!!

  • #2
    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

    Comment


    • #3
      Nguyên văn bởi lengo90 Xem bài viết
      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 ?

      Comment


      • #4
        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é

        Comment


        • #5
          Nguyên văn bởi lengo90 Xem bài viết
          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é
          Ok de mình thử, cám ơn bạn nhiều !!

          Comment


          • #6
            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
            EDA Engineer - Design on Demand
            Email:
            Web:

            Comment


            • #7
              Có khi chưa có trở treo Vcc.


              Add: 97 Quán Nam - Lê Chân - Hải Phòng.
              Tel: 031 518648 Phone: 0904 283 505

              Comment


              • #8
                bạn vẽ trên cùng board mạch hay nối bus qua ,thử gỡ chip ra nạp lại xem sao ,khởi tạo lại giá trị cho ds lun nha .

                nếu nối bus qua thì xoắn trực 2 dây sda và scl lại để chống nhiễu @@

                Comment


                • #9
                  Nguyên văn bởi hoangdai Xem bài viết
                  Có khi chưa có trở treo Vcc.
                  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

                  Comment


                  • #10
                    Nguyên văn bởi lengo90 Xem bài viết
                    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.

                    Comment


                    • #11
                      Chú có dùng PIN không vậy, sao lạ thế, hay là khi khởi động chú nạp lại giá trị time.

                      Comment


                      • #12
                        Nguyên văn bởi nmhai Xem bài viết
                        Chú có dùng PIN không vậy, sao lạ thế, hay là khi khởi động chú nạp lại giá trị time.
                        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 ????

                        Comment


                        • #13
                          Nguyên văn bởi hoangex Xem bài viết
                          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

                          Comment


                          • #14
                            Nguyên văn bởi chung1608 Xem bài viết

                            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 !!

                            Comment


                            • #15
                              Nguyên văn bởi hoangex Xem bài viết
                              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

                              Về tác giả

                              Collapse

                              hoangex Tìm hiểu thêm về hoangex

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X