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

Collapse
This topic is closed.
X
X
 
  • Giờ
  • Show
Clear All
new posts
  • hoangex
    Thành viên mới
    • Mar 2011
    • 16

    #1

    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 !!!!!
  • lengo90
    Thành viên tích cực
    • Nov 2010
    • 348

    #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

    • hoangex
      Thành viên mới
      • Mar 2011
      • 16

      #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

      • lengo90
        Thành viên tích cực
        • Nov 2010
        • 348

        #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

        • hoangex
          Thành viên mới
          • Mar 2011
          • 16

          #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

          • bocapchua
            Thành viên tích cực
            • Jul 2011
            • 314

            #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

            • hoangdai
              Thành viên tích cực
              • Nov 2005
              • 2720

              #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

              • voiconvuive
                Thành viên tích cực
                • May 2010
                • 723

                #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

                • lengo90
                  Thành viên tích cực
                  • Nov 2010
                  • 348

                  #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

                  • hoangex
                    Thành viên mới
                    • Mar 2011
                    • 16

                    #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

                    • nmhai
                      Thành viên tích cực
                      • Jul 2007
                      • 132

                      #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

                      • hoangex
                        Thành viên mới
                        • Mar 2011
                        • 16

                        #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

                        • chung1608
                          Thành viên tích cực
                          • Sep 2009
                          • 4160

                          #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

                          • hoangex
                            Thành viên mới
                            • Mar 2011
                            • 16

                            #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

                            • chung1608
                              Thành viên tích cực
                              • Sep 2009
                              • 4160

                              #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

                              There are no results that meet this criteria.

                              Đang tải...