Thông báo

Collapse
No announcement yet.

Ds1307

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Ds1307

    Chào các bác đã dùng con này. Em đang dùng DS1307 giao tiếp với mega88 để băm thời gian lên LED 7, không hiểu tại sao sau khi reset hoặc mất điện thì Giây nó lại nhảy về 0, giờ, phút... vẫn bình thương. Các khai báo biến cho h,m,s giống hệt nhau? Nhờ các bác giúp em. Thanks!
    Nỏ biết chữ mần răng ký được??!! Thôi nhé.

  • #2
    He he, em làm được rồi. Hóa ra bit CH hắn cùng một thanh ghi với bit giây. Em cứ tương một đống con 0 vào thanh ghi này thế là .... he he.
    Nỏ biết chữ mần răng ký được??!! Thôi nhé.

    Comment


    • #3
      Bác thangktvta có thể share mạch phần cứng + code cho anh em tham khảo đc ko?

      Comment


      • #4
        Nguyên văn bởi Arce Xem bài viết
        Bác thangktvta có thể share mạch phần cứng + code cho anh em tham khảo đc ko?
        Ok thôi, nhưng bác chờ em vài hôm nữa nhé, nhà em không có Net mà. Kể ra biết điện tử cũng hay thật, em làm được cái đồng hồ để bàn, hết gần 3 lit cả vỏ, đắt hơn nhiều so với hàng "Tàu liên doanh Trung Quốc" nhưng dù sao cũng là hàng Made in VietNam các bác nhẩy!
        Nỏ biết chữ mần răng ký được??!! Thôi nhé.

        Comment


        • #5
          Nguyên văn bởi thangktvta Xem bài viết
          Chào các bác đã dùng con này. Em đang dùng DS1307 giao tiếp với mega88 để băm thời gian lên LED 7, không hiểu tại sao sau khi reset hoặc mất điện thì Giây nó lại nhảy về 0, giờ, phút... vẫn bình thương. Các khai báo biến cho h,m,s giống hệt nhau? Nhờ các bác giúp em. Thanks!
          Nếu dùng CodeVision thì bạn xem lại vì mỗi lần restart con mega88 nó đều chạy đoạn chương trình init lại con ds1307, giây trở về 0 là đúng rồi !. Nếu mình đoán không lầm thì bạn chỉ cần thêm điều kiện hoặc chỉnh sửa một chút function init là OK ngay !

          Chúc thành công !

          NVT2
          Tín đồ AVR giáo.

          Comment


          • #6
            Nguyên văn bởi nvt2 Xem bài viết
            Nếu dùng CodeVision thì bạn xem lại vì mỗi lần restart con mega88 nó đều chạy đoạn chương trình init lại con ds1307, giây trở về 0 là đúng rồi !. Nếu mình đoán không lầm thì bạn chỉ cần thêm điều kiện hoặc chỉnh sửa một chút function init là OK ngay !

            Chúc thành công !

            NVT2
            Cách này đơn giản hơn bác này: Init một lần thôi, chạy xong xuôi rồi nạp lại phát nữa nhưng bỏ phần Init đi, thế là ok! Nhưng mà dạo này Hà Nội trời lạnh, hình như nó chạy nhanh hơn. bác NVT2 hình như trong Sài Gòn, trời nóng hơn có thấy nó chạy "chậm" hơn không bác? Hứt hứt??!!
            Nỏ biết chữ mần răng ký được??!! Thôi nhé.

            Comment


            • #7
              Mình cũng đang để cho con ds1307 chạy, được gần tuần rùi. Thấy nó chậm đi mấy phút. Hok bik do thạch anh hay nhiệt độ nữa. Thạch anh mình mua ngoài Nhật Tảo, hình trụ, nhỏ như cái nhang, hàng Trung Quốc, hok có số hiệu gì hết. Bác nào có kinh nghiệm làm cho con ds1307 chạy ổn định thì góp ý với. Thanks.

              Comment


              • #8
                Nguyên văn bởi gachoi Xem bài viết
                Mình cũng đang để cho con ds1307 chạy, được gần tuần rùi. Thấy nó chậm đi mấy phút. Hok bik do thạch anh hay nhiệt độ nữa. Thạch anh mình mua ngoài Nhật Tảo, hình trụ, nhỏ như cái nhang, hàng Trung Quốc, hok có số hiệu gì hết. Bác nào có kinh nghiệm làm cho con ds1307 chạy ổn định thì góp ý với. Thanks.
                Chạy 1 tuần mà sai đến mấy phút thì không ổn rồi bác ạ, của em chạy cả tháng mới lệch gần phút ( Gần đây thôi). Bác xem lại linh kiện cơ bản xem thế nào: DS1307, thạch anh, mạch.... rồi cách đi dây trên mạch in nữa. Thạch anh như bác tả thì đúng rồi, không biết là có phải đồ "dởm" k???!!! Trên mạch in bác nên để thạch anh càng gần IC càng tốt cho đỡ bị nhiễu. Bác cũng nên xem lại chương trình, như em nói mấy bài trên đấy, không để ý thì khi reset second sẽ bị nhảy về "0" => Nhiều lần mất điện đồng hồ sẽ bị chậm.!! Còn nhiều vấn đề nữa, bác cố gắng tìm nguyên nhân nhé!
                Nỏ biết chữ mần răng ký được??!! Thôi nhé.

                Comment


                • #9
                  ôi hay quá, các bác cho em xin cái code để em ngâm cứu làm một cái đồng hồ cho riêng mình tý nhỉ,có nhiều tài liệu các bác cứ táng vào hòm thư cho em thi càng tốt (email : vdgiap_nh@yahoo.com) để em đọc cho nó to đầu ra thêm tý nữa hihii.Hiện tại em đang sở hữu mấy con ATMega8 để không ở đó thấy lãng phí quá. Cám ơn các bác nhiều nha. Hy vọng mong muốn của em được các bác giúp đỡ.

                  Comment


                  • #10
                    cac a ơi,e viet 1 đoạn ctrinh đơn giản để test con 1307, tuy nhien nó ko chạy dc. mong mọi ng chỉ giúp

                    #asm

                    .equ __i2c_port=0x18

                    .equ __sda_bit=0

                    .equ __scl_bit=1

                    #endasm
                    #include <mega16.h>
                    #include <ds1307.h>
                    #include <delay.h>



                    void main(void) {
                    unsigned char h,m,s;
                    DDRA=0xff;
                    i2c_init();

                    i2c_start();
                    i2c_write(0xd0);
                    i2c_write(0);
                    i2c_write(0x7f);
                    i2c_stop();

                    rtc_init(0,0,0);


                    rtc_set_time(0,0,0);







                    while (1)
                    {
                    rtc_get_time(&h,&m,&s);
                    PORTA=s;
                    delay_ms(200);
                    };
                    }

                    Comment


                    • #11
                      bit CH e có xóa nó bằng cách ghi giá trị 0x7f hay 0x00 thì mạch vẫn im re luôn.

                      Comment


                      • #12
                        Nguyên văn bởi phong25_2 Xem bài viết
                        bit CH e có xóa nó bằng cách ghi giá trị 0x7f hay 0x00 thì mạch vẫn im re luôn.
                        Tôi xem qua ct chưa thấy có gì sai, chỉ nghi là phần cứng của bác có vấn đề thôi. Bác lưu ý các R treo cho đường SDA và SCL nhé! Nếu bác post cả sch thì tốt hơn!
                        Nỏ biết chữ mần răng ký được??!! Thôi nhé.

                        Comment


                        • #13
                          hehe, cai mach no chay tot roi, 2 điện trở kéo lên e cũng có mắc, nhưng nó sao sao ấy, giog như bị nhiễu, e gắn thêm 2 con 4k7 nữa là chạy ngon luôn, đây là ctrinh rất cơ bản, xin post lên cho các bạn muốn làm về 1307 tham khảo:

                          #asm
                          .equ __lcd_port=0x1B ;PORTA
                          .equ __i2c_port=0x18
                          .equ __sda_bit=0
                          .equ __scl_bit=1
                          #endasm
                          #include <mega16.h>
                          #include <ds1307.h>
                          #include <delay.h>
                          #include<lcd.h>

                          void main(void) {
                          unsigned char h,m,s,x,y;

                          i2c_init();
                          lcd_init(16);
                          rtc_init(0,0,0);

                          i2c_start();
                          i2c_write(0xd0);
                          i2c_write(0);
                          i2c_write(0);
                          i2c_stop();

                          rtc_set_time(0,0,0);
                          lcd_gotoxy(0,0);
                          lcd_putsf("REAL TIME CLOCK!");

                          while (1)
                          {
                          rtc_get_time(&h,&m,&s);
                          lcd_gotoxy(4,1);

                          x=h/10;
                          y=h%10;
                          lcd_putchar(x+0x30);
                          lcd_putchar(y+0x30);
                          lcd_putsf(":");

                          x=m/10;
                          y=m%10;
                          lcd_putchar(x+0x30);
                          lcd_putchar(y+0x30);
                          lcd_putsf(":");

                          x=s/10;
                          y=s%10;
                          lcd_putchar(x+0x30);
                          lcd_putchar(y+0x30);

                          delay_ms(200);
                          };
                          }

                          Comment


                          • #14
                            sao không tận dụng cái ram không mất nội dung của nó nhỉ? Lần đầu tiên chạy chương trình bạn khởi tạo cho nó và ghi một byte trong vùng nhớ này lên 0x01 chẳng hạn, từ sau nếu kiểm tra byte này mà thấy nó bằng 0x01 thì kô khởi tạo nữa, ngược lại thì đấy là lần đầu tiên bạn cho mạch chạy. ok không nhỉ?

                            Comment


                            • #15
                              bạn nói y như mình nghĩ luôn ,cai này mình viết chỉ để test con 1307,còn cái ghi vào eeprom thì để dùng cho cái reset vdk mà ko ảnh hưởng tới đồng hồ. à, cho mình hỏi cái này, sao mà con này dễ bị nhiễu wa, có cách nào khắc phục cái nhiễu này ko, chỉ cần lỡ tay chạm vào Xtal hay điện trở là nó hiện kí tự sai liền.

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X