اطلاعیه

Collapse
No announcement yet.

دقیق نبودن ساعت DS1307

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #31
    پاسخ : دقیق نبودن ساعت DS1307

    کامپیوتر

    دیدگاه


      #32
      پاسخ : دقیق نبودن ساعت DS1307

      دوست عزیزم یه برنامه بنویس و توی اون 1307 رو هر دقیقه یکبار بخون و ثانیه رو با میکرو بساز به احتمال زیاد درست میشه.
      مگسی را کشتم /نه به این جرم که حیوان پلیدیست، بد، است/و نه چون نسبت سودش به ضرر یک به صد است/طفل معصوم به دور سر من می چرخید/به خیالش قندم/
      یا که چون اغذیه ی مشهورش، تا به آن حد، گَندَم/ای دو صد نور به قبرش بارد/مگس خوبی بود/من به این جرم که از یاد تو بیرونم کرد/مگسی را کشتم

      Some dance to remember, some dance to forget

      دیدگاه


        #33
        پاسخ : دقیق نبودن ساعت DS1307

        ببین ، اینو امتحان کن ببین چی میشه، اینو از یکی از دوستام گرفتم
        کد:
        $regfile = "m16def.dat"
        $crystal = 4000000
        
        Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1_
                , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
        Config Lcd = 16 * 2
        
        Config Portb = Input
        Portb = 255
        
        Config Sda = Portd.6
        Config Scl = Portd.5
        
        Const Ds1307w = &HD0
        Const Ds1307r = &HD1
        
        Config Clock = User
        Config Debounce = 5
        
        Dim T As Word , Avrt As Word , N As Byte
        Config Adc = Single , Prescaler = Auto , Reference = Avcc
        Start Adc
        
        
        Cls
        Cursor Off
        Locate 1 , 1 : Lcd "Clock & Temp"
        Locate 2 , 1 : Lcd "Marzieh Jandouni"
        Wait 2
        Cls
        
        I2cstart
        I2cwbyte Ds1307w
        I2cwbyte 0
        I2cwbyte _sec
        I2cstop
        
        Do
        
        Waitms 10
        Locate 1 , 1 : Lcd "Time:" ; Time$
        Locate 2 , 1 : Lcd "Temp:" ; Avrt ; "  'C"
        Gosub Setting
        Gosub Temp
        Loop
        
        Getdatetime:
         I2cstart
         I2cwbyte Ds1307w
         I2cwbyte 0
        
         I2cstart
         I2cwbyte Ds1307r
         I2crbyte _sec , Ack
         I2crbyte _min , Ack
         I2crbyte _hour , Nack
         I2cstop
         _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
        
        Return
        
        Settime:
         _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
         I2cstart
         I2cwbyte Ds1307w
         I2cwbyte 0
         I2cwbyte _sec
         I2cwbyte _min
         I2cwbyte _hour
         I2cstop
        
        Return
        
        Setting:
        
             Debounce Pinb.0 , 0 , _hour , Sub
             Debounce Pinb.1 , 0 , _min , Sub
              Debounce Pinb.2 , 0 , _sec , Sub
        Return
        
        _sec:
        
             Incr _sec
             If _sec > 59 Then _sec = 0
             _sec = Makebcd(_sec)
             I2cstart
             I2cwbyte Ds1307w
             I2cwbyte 0
             I2cwbyte _sec
             I2cstop
        
        
        Return
        
        _min:
        
             Incr _min
             If _min > 59 Then _min = 0
             _min = Makebcd(_min)
             I2cstart
             I2cwbyte Ds1307w
             I2cwbyte 1
             I2cwbyte _min
             I2cstop
        
        Return
        
        _hour:
        
             Incr _hour
             If _hour > 23 Then _hour = 0
             _hour = Makebcd(_hour)
             I2cstart
             I2cwbyte Ds1307w
             I2cwbyte 2
             I2cwbyte _hour
             I2cstop
        
        Return
        
        Temp:
        Avrt = 0
        For N = 0 To 10
        Incr N
        T = Getadc(0)
        Avrt = Avrt + T
        Waitus 10
        Next N
        Avrt = Avrt / 10
        Avrt = Avrt * 500
        Avrt = Avrt / 1023
        Return
        
        End

        دیدگاه


          #34
          پاسخ : دقیق نبودن ساعت DS1307

          نوشته اصلی توسط Nicolas1390
          کامپیوتر
          با یه مرجع دیگه امتحانش کن ببین نتیجه شده

          دیدگاه


            #35
            پاسخ : دقیق نبودن ساعت DS1307

            با سلام . همونطور که قبلا حدس زده بودم مشکل از خرابی قطعاتتون نیست . شما مقاومت های پول پ رو چند کیلو گذاشتین ؟ 4.7 کیلو یا نه ؟ برای sda و scl هر دوتا پول پ دارن ؟ اگه بازم مشکل بود ، پایه های میکرو رو به مقاموت 1 کیلو بده بعدش بده به 1307 . یعنی 2 تا مقومت سری بزار . مقاومت پول پ رو هم بکن حدود 8 کیلو اهم . بیشتر نشه از 8 کیلو . کمتر از 4.7 کیلو نشه . احتمال 80% مشکلت از تغذیه باشه . که با کاری که گفتم باید حل بشه . زمان خوندنت رو هم بزار 1.1 ثانیه به بالا .
            موفق و شاد باشید .
            if all men are the same
            then
            why do women take so long to choose one ?

            دیدگاه


              #36
              پاسخ : دقیق نبودن ساعت DS1307

              مرسی دوستان
              تغییرات را اعمال کردم باز هم مشکل پابرجاست !
              فقط مونده برنامه رو تغییر بدم
              برنامه ای که دوستمون قرار دادن رو تست نکردم اما سوالی از دوستان دارم
              چطور میتونم یک تایمر توی برنامه داشته باشم ؟ کلاک میکرو رو وقتی روی soft قرار میدم برنامه روی ال سی دی خطوط میخی نمایش میده ! کلاک را چجوری میشه توی حالت user را اندازی کرد ؟ میخوام فقط از ثانیه استفاده کنم ، یعنی کلاک میکرو رو تو حالت user راه اندازی کنم و ثانیه را از روی این کلاک نمایش بدم ، هم زمان که ثانیه به 59 رسید ، اطلاعات ساعت و تاریخ را از 1307 بخونم و ثانیه کلاک میکرو رو پدیت کنم . یا اینکه یک تایمر هم توی میکرو داشته باشم که از 0 تا 59 بتونه بشمره !

              دیدگاه


                #37
                پاسخ : دقیق نبودن ساعت DS1307

                سلام
                یعنی با دقیقه ای یک بار خوندنم مشکل حل نشد. امتحان کردی؟
                مگسی را کشتم /نه به این جرم که حیوان پلیدیست، بد، است/و نه چون نسبت سودش به ضرر یک به صد است/طفل معصوم به دور سر من می چرخید/به خیالش قندم/
                یا که چون اغذیه ی مشهورش، تا به آن حد، گَندَم/ای دو صد نور به قبرش بارد/مگس خوبی بود/من به این جرم که از یاد تو بیرونم کرد/مگسی را کشتم

                Some dance to remember, some dance to forget

                دیدگاه


                  #38
                  پاسخ : دقیق نبودن ساعت DS1307

                  نه نتونستم امتحان کنم ، آخه نتونستم از ساعت خود میکرو استفاده کنم ! توی پست قبل توضیح دادم ! اصلا وقتی config clock=soft را می نویسم همه چی به هم میریزه !
                  میخواستم ساعت خود میکرو و درست کنم و بعد هر یک دقیقه این ساعت را با ساعت 1307 هماهنگ کنم ، کرسیتال ساعت هم برای میکرو قرار دادم اما نتونستم ساعت خود میکرو رو راه بندازم !

                  دیدگاه


                    #39
                    پاسخ : دقیق نبودن ساعت DS1307

                    من با ساعت میکرو کار نکردم همین طوری با تاخیر درست کردم جوابم داد حالا برای شما یه پیشنهاد دارم البته فقط پیشنهاده، میتونید خروجی ثانیه ی 1307 رو به میکرو بدید بعد با اون ثانیه رو بسازید اینجوری میتونید حتی 10 دقیقه یکبار ساعت رو با 1307 اپ دیت کنید.
                    مگسی را کشتم /نه به این جرم که حیوان پلیدیست، بد، است/و نه چون نسبت سودش به ضرر یک به صد است/طفل معصوم به دور سر من می چرخید/به خیالش قندم/
                    یا که چون اغذیه ی مشهورش، تا به آن حد، گَندَم/ای دو صد نور به قبرش بارد/مگس خوبی بود/من به این جرم که از یاد تو بیرونم کرد/مگسی را کشتم

                    Some dance to remember, some dance to forget

                    دیدگاه


                      #40
                      پاسخ : دقیق نبودن ساعت DS1307

                      مرسی
                      هر 1 دقیقه یک بار اطلاعات را از 1307 میخونم اما باز هم به همون شکل هست ! هر 6 ساعت یک ثانیه جلو میزنه !
                      فکر کنم مشکل یک جای دیگست ! من توی مدار 2 آیسی دارم که i2c هستند ، یکی حافظه خارجی EEPROM یکی دیگه هم 1307 ، هر دو این آیسی های توی میکرو از یک پورت خاص برای sda و scl استفاده می کنن.
                      به دلایلی مجبورم که هر ثانیه اطلاعات را روی eeprom بنویسم و از اون بخونم ! از اونجایی که 1307 و eeprom هر 2 به یک پایه میکرو وصل هستن ، فکر کنم چون هر ثانیه دارم با eeprom کار می کنم ، توی کار 1307 هم خلال ایجاد میشه !
                      نظرتون چیه ؟ اگر مشکل از اینه باید چکار کرد ؟

                      دیدگاه


                        #41
                        پاسخ : دقیق نبودن ساعت DS1307

                        فکر نکنم اشکال از این باشه . بعدشم روی Epprom که نمیشه خیلی نوشت و پاک کرد!! اونم یک ثانیه یه بار!!!

                        دیدگاه


                          #42
                          پاسخ : دقیق نبودن ساعت DS1307

                          چند بایت بیشتر نمی نویسم
                          حالا اون کدهای مربوط به eeprom را برداشتم ببینم مشکل از اون بوده یا نه

                          دیدگاه


                            #43
                            پاسخ : دقیق نبودن ساعت DS1307

                            روی EEPROM ماکزیمم 10هزار بار میتونید بنویسید(هر ثانیه یک بار ==> کمتر از 3ساعت اون بایت ها از EEPROM غیر قابل اعتماد میشن!!)
                            با این احوال به نظرم مشکل از این نیست.


                            هر 6 ساعت یک ثانیه جلو میزنه !
                            این مورد با توضیحات زیر طبیعیه!!
                            دقت ساعت DS1307 بسیار وابسته به کریستالی که استفاده می کنید و شرایط دمایی هست، یک مدل کریستال ها توی بازار هست که کریستال نظامی میگن بهشون!
                            روی بدنشون نوشته 32768.000 یعنی فرکانس تولیدیشون تا یک هزارم هرتز دقت داره، اینا خیلی خوبن و در ماه کمتر از 6-7 ثانیه خطا دارند(در دمای حدود 30درجه)

                            از دقت خود کریستال بگذریم(که خیلی هم مهمه و میتونه تا 2-3دقیقه در ماه خطا ایجاد کنه!!)، فاکتور بعدی دما هست که خیلی هم مهمه و داخل دیتاشیت هم نمودار وابستگی خطا(PPM) به دما هست.
                            هرچی دما از 25درجه سانتیگراد بالاتر و یا پایین تر باشه، خطای مثبت ایجاد می کنه، یعنی ساعت جلو میفته، پس بعد از دقت کریستال عامل مهم بعدی دما هست، چک کنید ببینید کریستال ساعت توی مدار در مجاورت منبع گرما مثل رگولاتور قرار نگرفته باشه.

                            از همه اینا گذشته شما میتونید به سادگی دقت کریستالتون رو تست کنید:
                            اون رو به پایه TOSC1 , TOSC2 وصل کنید و با استفاده از تایمر2 یک برنامه ساده بنویسید که ساعت رو براتون بشماره و ببینید بعد از 12ساعت چقدر خطا ایجاد شده(بدیهیه که تغذیه در این مدت نباید قطع بشه)
                            اونچیزی که در دانشگاه یاد میگیرید، "الفبایی" هست برای نوشتن یک "رمان" !!

                            دیدگاه


                              #44
                              پاسخ : دقیق نبودن ساعت DS1307

                              .

                              دیدگاه


                                #45
                                پاسخ : دقیق نبودن ساعت DS1307

                                مرسی
                                اما آیسی و کریستال با باتری بدون هیچ مشکلی کار می کنن! توی 24 ساعت حتی 1 ثانیه هم جلو نمیزنه !
                                گرما که فکر نکنم ! اما سرما آره :mrgreen: اتاق واقعا سرده

                                دیدگاه

                                لطفا صبر کنید...
                                X