اطلاعیه

Collapse
No announcement yet.

دادن مقدار اولیه یه آیسی 1307

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

    دادن مقدار اولیه یه آیسی 1307

    با سلام

    آقا من یک مداری با AVR میسازم که برای زمان و تاریخ از آیسی DS1307 استفاده کردم
    حالا سوال من این هست که چطور تاریخ اولیه رو به آیسی منتقل کنم ؟؟؟؟؟؟؟؟؟؟
    میدونم چطور ساعت رو کم و زیاد کنم ولی تاریخ رو نمیدونم ، تو اینترنت هم هــــــــیچ مثالی ندیدم
    حالا من مدار رو بستم ، این آیسی تاریخ چند رو نشون میده ؟ :angry:
    حتماٌ باید یه روشی باشه که من به این آیسی مقدار تاریخ اولیه بدم ویا تاریخ رو کم و زیاد کنم دیگه

    با تشــــــــکر از دوستان

    #2
    پاسخ : دادن مقدار اولیه یه آیسی 1307

    سلام
    آدرس هاش به این صورته
    روز 4
    ماه 5
    سال 6
    به همون روشی که مقدار به ثانیه یا دقیقه میدهید.
    فقط باید آدرس رو عوض کنید.
    تولید کننده انواع تابلو فرمان آسانسور با تکنولوژی روز دنیا

    دیدگاه


      #3
      پاسخ : دادن مقدار اولیه یه آیسی 1307

      این کار رو انجام دادم ولی نشد

      به عنوان مثال :
      Debounce Pinc.3 , 0 , _hour , Sub


      _hour:
      Incr _hour
      If _hour > 23 Then _hour = 0
      _hour = Makebcd(_hour)
      I2cstart ' Generate start code
      I2cwbyte Ds1307w ' send address
      I2cwbyte 2 ' starting address in 1307
      I2cwbyte _hour
      I2cstop


      Return

      من با دستورات بالا میتونم مقدار ساعت رو هر با با زدن کلید یک واحد افزایش بدم ولی با همین روش مثلا مقدار ماه یک واحد افزایش پیدا نمیکنه
      شما میدونید چرا ؟

      دیدگاه


        #4
        پاسخ : دادن مقدار اولیه یه آیسی 1307

        خوب قاعدتا باید کار کنه دیگه :surprised:
        برای اطمینان بیشتر کدی که برای دادن مقدار به ماه و سال استفاده میکنید اینجا بذارید.
        نگی مثل همونه نمیزارم. :biggrin:
        شما بذار شاید یه نکته کوچولو رو رعایت نکرده باشین. :agree:
        تولید کننده انواع تابلو فرمان آسانسور با تکنولوژی روز دنیا

        دیدگاه


          #5
          پاسخ : دادن مقدار اولیه یه آیسی 1307

          سلام

          این کل تعریف مقادیر هست :

          Read_date_time:
          I2cstart ' Generate start code
          I2cwbyte Ds1307w ' send address
          I2cwbyte 0 ' start address in 1307
          I2cstart ' Generate start code
          I2cwbyte Ds1307r ' send address
          I2crbyte _sec , Ack
          I2crbyte _min , Ack ' MINUTES
          I2crbyte _hour , Ack ' Hours
          I2crbyte Weekday , Ack ' Day of Week
          I2crbyte M_day , Ack ' Day of Month
          I2crbyte M_month , Ack ' Month of Year
          I2crbyte _year , Nack ' Year
          I2cstop
          _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
          M_day = Makedec(m_day) : M_month = Makedec(m_month) : _year = Makedec(_year)
          M_year = 2000 + _year

          Return

          بعدشم با یک تابع ، تاریخ میلادی به شمسی تبدیل میشه

          دیدگاه


            #6
            پاسخ : دادن مقدار اولیه یه آیسی 1307

            البته یک نکته دیگه هم باید بگم

            اونم این هست که این مدار الان روی پرتیوس بخوبی داره کار میکنه ها ، فقط تنها مشکلم این هست که من نمیتونم مقادیر ماه و روز رو افزایش بدم (سال برام مهم نیست)

            دیدگاه


              #7
              پاسخ : دادن مقدار اولیه یه آیسی 1307

              اگر میخواید کل فایل بسکام رو براتونم بذارم ، شاید شما تونستید مشکل رو پیدا کنید :(

              دیدگاه


                #8
                پاسخ : دادن مقدار اولیه یه آیسی 1307

                این کد که قرار دادید مربوط به خوندن از 1307 هسته که.
                شما گفتی با نوشتن مشکل داری.
                کد مربوط به نوشتن رو بزارید.
                تولید کننده انواع تابلو فرمان آسانسور با تکنولوژی روز دنیا

                دیدگاه


                  #9
                  پاسخ : دادن مقدار اولیه یه آیسی 1307

                  چون ابتدا مقادیر به تاریخ شمسی تبدیل میشه به همین دلیل کدش خیلی درازه

                  منم فایل پروتیو و بسکام رو براتون میذارم

                  http://uplod.ir/r5518l1l9vca/1.rar.htm

                  یا

                  http://www.upload4files.tk/download.php?file=d990584f47114c31b8b19d08c2a03af5

                  جهت اطمینان 2 جا پلود کردم ، یکیشو دانلود کنید


                  با تشـــــــــــــکر

                  دیدگاه


                    #10
                    پاسخ : دادن مقدار اولیه یه آیسی 1307

                    منو باش فکر میکردم مشکل چیه [-(

                    به طور کلی میگم
                    روش کار برای دادن مقدار به 1307 برای روز ماه و سال به شکل زیر است:

                    I2cstart
                    I2cwbyte Ds1307w
                    I2cwbyte 4
                    I2cwbyte day
                    I2cwbyte month
                    I2cwbyte year
                    I2cstop
                    حالا هر وقت شما خواستی به روز ماه و سال مقدار بدی مقدار روز ماه و سال رو در متغیر های مربوطه میریزی البته این مقدار باید به صورت bcd و میلادی باشد تا بعد اون تابع بتونه تاریخ شمسی رو به شما بده.
                    اگه میخواهید تاریخ را به صورت شمسی وارد کنید باید از تابع شمسی به میلادی استفاده کنید.
                    تولید کننده انواع تابلو فرمان آسانسور با تکنولوژی روز دنیا

                    دیدگاه


                      #11
                      پاسخ : دادن مقدار اولیه یه آیسی 1307

                      خیلی ممنون
                      درست کردم بالاخره

                      دیدگاه


                        #12
                        پاسخ : دادن مقدار اولیه یه آیسی 1307

                        چطور میشه روز هفته رو از روی تاریخ تشخیص داد؟
                        Don't hesitate to ask any question ..

                        دیدگاه


                          #13
                          پاسخ : دادن مقدار اولیه یه آیسی 1307

                          نوشته اصلی توسط syavash_kasraeee
                          چطور میشه روز هفته رو از روی تاریخ تشخیص داد؟
                          آدرس 3 حافظه روز هفته و آدرس 4 روز ماه نگهداری میکنه
                          [glow=red,2,300]تاپيک هاي ايجاد شده[/glow]

                          دیدگاه


                            #14
                            پاسخ : دادن مقدار اولیه یه آیسی 1307

                            نوشته اصلی توسط ADMlN
                            آدرس 3 حافظه روز هفته و آدرس 4 روز ماه نگهداری میکنه
                            ممنون از راهنماییتون
                            من با کدویژن کار میکنم و از دستورات rtc set time و rtc get time و ... استفاده می کنم
                            میشه بفرمایید چطور روز رو بخونم؟
                            Don't hesitate to ask any question ..

                            دیدگاه


                              #15
                              پاسخ : دادن مقدار اولیه یه آیسی 1307

                              نوشته اصلی توسط syavash_kasraeee
                              ممنون از راهنماییتون
                              من با کدویژن کار میکنم و از دستورات rtc set time و rtc get time و ... استفاده می کنم
                              میشه بفرمایید چطور روز رو بخونم؟
                              راستش من زیاد اطلاع ندارم ولی فکر کنم با کتابخونه DS1307 نتونی اینکار کنی
                              باید دستی آدرس 3 بخونی
                              [glow=red,2,300]تاپيک هاي ايجاد شده[/glow]

                              دیدگاه

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