اطلاعیه

Collapse
No announcement yet.

تایمر باds1307

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

    #16
    پاسخ : تایمر باds1307

    سلام
    مهندس واقعا ممنونم .خیلی زحمت کشیدید (یه تحلیل و تفسیر کوچولو
    شما 3 تا شمارنده رو بکار انداختید

    کد:
    Time_cunter_1 = Time_cunter_1 + 1
    Time_cunter_2 = Time_cunter_2 + 1
    Time_cunter_3 = Time_cunter_3 + 1
    و هر کدوم از شمارنده ها رو بعد از پایان شمارش بصورت مستقل صفر میکنید

    کد:
    If Time_cunter_1 = On_1_time_sec Then
      Led_out_1 = 1
    Elseif Time_cunter_1 = On_1_off_sum Then
      Led_out_1 = 0
      Time_cunter_1 = 0
    End If
    
    
    
    If Time_cunter_2 = On_2_time_sec Then
      Led_out_2 = 1
    Elseif Time_cunter_2 = On_2_off_sum Then
      Led_out_2 = 0
      Time_cunter_2 = 0
    End If
    
    
    If Time_cunter_3 = On_3_time_sec Then
      Led_out_3 = 1
    Elseif Time_cunter_3 = On_3_off_sum Then
      Led_out_3 = 0
      Time_cunter_3 = 0
    End If
    ولی فک نکنم که ds1307 این امکان رو داشته باشه که بتوان 3 شمارنده مستقل رو کنترل کرد و بعد از پایان شمارش مقدار رو صفر کرد . بدون اینکه مابقی خروجی ها رو تحت اشعاع قرار بده اینجا رو ببینید :

    کد:
    Seco = 0
    Seco = Makebcd(seco)
         I2cstart                      ' Generate start code
         I2cwbyte Ds1307w                  ' send address
         I2cwbyte 0                     ' starting address in 1307
         I2cwbyte Seco
         I2cstop
    Mine = 0
    Mine = Makebcd(mine)
         I2cstart                      ' Generate start code
         I2cwbyte Ds1307w                  ' send address
         I2cwbyte 1                     ' starting address in 1307
         I2cwbyte Mine
         I2cstop
    
    Hour = 0
    Hour = Makebcd(hour)
         I2cstart                      ' Generate start code
         I2cwbyte Ds1307w                  ' send address
         I2cwbyte 2                     ' starting address in 1307
         I2cwbyte Hour
         I2cstop
    این قسمت برنامه DS1307 هست که قسمت ثانیه و دقیقه و ساعت رو صفر میکنه

    و این قسمت رو من به برنامه تایمر اضافه کردم ولی روی یک خروجی مشکلی نداره ولی روی 2 تا خروجی جواب نمیده و مشکلش هم اینکه تا خروجی 2 رو غیر فعال نکنه خروجی 1 رو فعال نمیکنه :

    کد:
    Action:
    
    If Hour = Hour2 And Mine = Mine2 And Seco = Seco2 Then   ' ON FAN 1
    Set Portd.4
    Elseif Hour = Hour4 And Mine = Mine4 And Seco = Seco4 Then
    Reset Portd.4
    End If
    
    If Hour = Hour22 And Mine = Mine22 And Seco = Seco22 Then  ' ON FAN 2
    Set Portd.3
    Elseif Hour = Hour42 And Mine = Mine42 And Seco = Seco42 Then
    Reset Portd.3
    
    
    
       '**************************************
    
    Seco = 0
    Seco = Makebcd(seco)
         I2cstart                      ' Generate start code
         I2cwbyte Ds1307w                  ' send address
         I2cwbyte 0                     ' starting address in 1307
         I2cwbyte Seco
         I2cstop
    Mine = 0
    Mine = Makebcd(mine)
         I2cstart                      ' Generate start code
         I2cwbyte Ds1307w                  ' send address
         I2cwbyte 1                     ' starting address in 1307
         I2cwbyte Mine
         I2cstop
    
    Hour = 0
    Hour = Makebcd(hour)
         I2cstart                      ' Generate start code
         I2cwbyte Ds1307w                  ' send address
         I2cwbyte 2                     ' starting address in 1307
         I2cwbyte Hour
         I2cstop
    
    
    
    'End If
    End If
    Return
    
    '===============================================================================
    End
    یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

    دیدگاه


      #17
      پاسخ : تایمر باds1307

      بینید استفاده از RTC داخلی فرق داره با ds1307 . توی RTC داخلی اینتراپت یک ثانیه ایجاد میشه و شمارش انجام میشه برای ds1307 باید پایه SOUT رو به یکی از پایه های اینتراپت های میکرو وصل کنید و تو زیر برنامه وقفه اینتراپت این کار رو انجام بدین

      http://s5.picofile.com/file/8123898384/TIME_DS1307.7z.html

      دیدگاه


        #18
        پاسخ : تایمر باds1307

        اینو بخر و حالشو ببر :

        soran111.persiangig.com/image/Desktop.rar

        قیمت 70 تومن
        چرا ناراحتی پاتریک!
        + امروز ی بچه دیدم سرچهارراه گل میفروخت
        - از دیدنش ناراحت شدی؟
        + نه
        پس چی ناراحتت کرده
        + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
        ------------------------------------------------------------------------------------------------------
        تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
        ------------------------------------------------------------------------------------------------------
        محصولات

        دیدگاه


          #19
          پاسخ : تایمر باds1307

          مدت گذشته یه PM به مهندس شاهین مبنی بر تایمری کردن 3 خروجی دادم که ایشون جدیدا به انجمن تشریف اوردند و فرمودند که سوالتون رو مطرح کنید یه سوال قبلا پرسیدم و اون این بود

          سلام شاهین جان

          مهندس من میخام یه تایمر درست کنم که 3 تا خروجی داشته باشه و هر خروجی جداگانه کنترل بشه / مثلا 10 دقیقه یه خروجی رو فعال کنه و 20 دقیقه غیر فعال . و این مسئله مدام تکرار بشه تا از این حالت خارجش کنم یعنی 10دقیقه فعال 20 دقیقه غیر فعال / و زمانش هم قابل تنظیم کردن باشه .
          الان شما برای یه خروجی این کارو انجام دادید ولی ما برای 3 تا خروجی میخایم اینکار انجام بدیم .
          البته ما قبلا با جناب mahdi421 در این زمینه بحث کردیم .خواستیم ببینم راه حل پیشنهادی شما چی هست .
          باتشکر از شما دوست عزیز
          یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

          دیدگاه


            #20
            پاسخ : تایمر باds1307

            سلام.فکر نکنم خیلی دشوار باشه.اون چیزی که به ذهن من میرسه اینه که:
            ما فقط از ds1307 یا rtc داخلی فقط این انتظار رو داریم که فقط کارش این باشه که یه زمان یک ثانیه دقیق رو به ما بده.
            از این به بعدش فقط تکنیکهای برنامه نویسی هست.
            با این جوری الگوریتم نوشت که:
            اول یه حلقه که زمان رو از ds می گیره و در میکرو ذخیره و روی نمایشگر نشون میده.
            بعد به تعداد خروجی هامون حلقه یا زیر برنامه و یا شرط تعریف می کنیم.اونجا دو تا متغیر شروع و پایان تعریف شده و مدام از این زیر برنامه ها یا حلقه, به حلقه اصلی می پره و مقدار متغیرها رو با زمان حلقه اصلی مقایسه می کنه.
            اگه شرط برقرار بود مثلا بپره به همون حلقه یا حلقه دیگه ای و خروجی رو یک یا صفر کنه.
            این جوری میشه نه تنها 3 تا بلکه 300!تایمر جانبی کاملا مستقل از هم ساخت.
            این روش ها رو ما توی logo و plc هم داریم که با یه تایمر و چند مقایسه کننده چندین تایمر مستقل از هم می سازیم.
            در واقع شما باید اینجا توی برنامه فقط همین عمل مقایسه کنندگی رو طراحی کنی.
            من دوباره بعدازظهر بعد5 میام انجمن. :bye
            انا لله و انا الیه الراجعون

            دیدگاه


              #21
              پاسخ : تایمر باds1307

              یک سوال فنی میدونیم که دقت DS1307 بستگی کامل داره به کیفیت کریستال
              حالا هر جقدر هم بیایم اصولی گراندش کنید کریستالو و پایه هاش و حرارت ندیم و .... باز هم من زیاد دیدم که زمان در حد 10 ثانیه جلو بره توی 3 روز یا 10 ثانیه عقب بیفته
              البته هر کریستالی یه تاثیری داشت حالا بغیر از برنامه نویسی راه های دیگه ای بچه ها داشتن تا این خطا رو از بین ببرن ؟ کریستال خوب که فک نکنم پیدا بشه هست آیا ؟
              من دوست ندارم خودم را درگیر مسئله بهشت یا جهنم بکنم ، چون در هر دو قسمت دوستان خوبی دارم !

              دیدگاه


                #22
                پاسخ : تایمر باds1307

                نوشته اصلی توسط icarus
                یک سوال فنی میدونیم که دقت DS1307 بستگی کامل داره به کیفیت کریستال
                حالا هر جقدر هم بیایم اصولی گراندش کنید کریستالو و پایه هاش و حرارت ندیم و .... باز هم من زیاد دیدم که زمان در حد 10 ثانیه جلو بره توی 3 روز یا 10 ثانیه عقب بیفته
                البته هر کریستالی یه تاثیری داشت حالا بغیر از برنامه نویسی راه های دیگه ای بچه ها داشتن تا این خطا رو از بین ببرن ؟ کریستال خوب که فک نکنم پیدا بشه هست آیا ؟
                سلام
                من یه چند نوع کریستال مختلف تست کردام و تو تمام موارد مشکل دقت وجود داره بهترین راه استفاده از یه rtc مثل PCF8563 هست که امکان کالیبره کردن کریستال بوسیله یه خازن تریمر براش وجود داره

                دیدگاه


                  #23
                  پاسخ : تایمر باds1307

                  قیمتش چنده ؟
                  اگه بخوام از اینا استفاده کنم معقول تر نیست که از RTC های با کریستال داخلی و کالیبره شده استفاده کنم ؟ حجم مدار و ... هم کم میشه
                  من دوست ندارم خودم را درگیر مسئله بهشت یا جهنم بکنم ، چون در هر دو قسمت دوستان خوبی دارم !

                  دیدگاه


                    #24
                    پاسخ : تایمر باds1307

                    نوشته اصلی توسط icarus
                    قیمتش چنده ؟
                    اگه بخوام از اینا استفاده کنم معقول تر نیست که از RTC های با کریستال داخلی و کالیبره شده استفاده کنم ؟ حجم مدار و ... هم کم میشه
                    پایا داره نوع smd PCF8563T ریال 12052 که حتما اون 2 ریال را باید خورد همراهتون باشه

                    برای نوع با کریستال داخلی هم جوان این رو داره DS3231SN به قیمت 6500 تومن

                    دیدگاه


                      #25
                      پاسخ : تایمر باds1307

                      اگه اینجوریه که صرفه با راه حل شماست
                      ولی چون 2 ریالی ندارم از خریدش منصرف شدم
                      من دوست ندارم خودم را درگیر مسئله بهشت یا جهنم بکنم ، چون در هر دو قسمت دوستان خوبی دارم !

                      دیدگاه


                        #26
                        پاسخ : تایمر باds1307

                        سلام خیلی ببخشید من این سوال میپرسم
                        چون بابرنامه نویسی بیسیک اشنایی زیادی ندارم
                        من یه برنامه ای میخوام که دوزمان on-off جداگانه داشته باشه (یعنی میخوام درروز دو لامپ جداکانه
                        روشن خاموش کنه ) که این زمان ها با دکمه قابل تغییر باشه و درحافظه eeprom سیو شود و هربار سیو شود که باقطع برق تنظیماتش زمان های وارده بهم نخورد و از ds1307 برای زمان نمایش lcd استفاده شود.
                        فکر کنم باید از مگا32 استفاده شود
                        البته اینهم بگم این برنامه که میگم رایگان درهیچ سایتی وجود نداره .
                        خیلی خیلی ممنون میشم کمکم کنید .
                        تشکر پیشاپیش ... .

                        دیدگاه


                          #27
                          پاسخ : تایمر باds1307

                          Where can i get the compailed hex file??? I cant compaile the code.... Please provide the hex file... Thank youfike

                          دیدگاه

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