اطلاعیه

Collapse
No announcement yet.

لطفا در مورد ds1307 کمک کنید!

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

    لطفا در مورد ds1307 کمک کنید!

    اگه ممکنه در مورد ارتباط خیلی ساده به IC توضیح بدید. و چطور می شه اطلاعات دریافتی رو از باینری به دسیمال تبدیل کرد.
    لطفا به صورت آموزشی بنویسید نه یه فایل پلود کنید و هیچ توضیحی ندید. لطفا کمک کنید.
    کنکوری 90 دیروز،آ‌دانشجو مهندسی نرم افزار پلی تکنیک امروز!

    #2
    پاسخ : لطفا در مورد ds1307 کمک کنید!

    سلام ....................

    جناب وحید به لینک زیر یه سر بزنید .. امیدوارم بتونه کمکتون کنه ..

    http://www.eca.ir/forum2/index.php?topic=18689.0

    راستی اگه با بسکام کار میکنید ، توی سایت دنبال یه تاپیک بگردید که در مورد همین DS1307 و محیط بسکام هست .. جناب موسوی زده بودن اگه اشتباه نکنم .. موقعی که داشتن یه پروژه با این آیسی و چند تا سون سگمنت انجام میدادن .. اگه اون رو پیدا کنید خیلی خوب میشه .. چون تجربیات عملی جناب موسوی هم توش هست و به هر حال خیلی کارتون رو جلو میندازه .. موفق باشید ..
    دوستان! مدتی کمتر به سایت میام ..

    دیدگاه


      #3
      پاسخ : لطفا در مورد ds1307 کمک کنید!

      ممنون. ولی فعلا نمونه به دردم نمی خوره. اگه بتونید نحوه فراخوانی اون و چطور می شه مقادیر رو به دسیمال تبدیل کرد و اطلاعات خودمون رو به آی سی بفرستیم ، خیلی ممنون می شم.
      کنکوری 90 دیروز،آ‌دانشجو مهندسی نرم افزار پلی تکنیک امروز!

      دیدگاه


        #4
        پاسخ : لطفا در مورد ds1307 کمک کنید!

        وحید جان همون تاپیکو دنبال کن خیلی از مشکلاتت حل میشه .

        دیدگاه


          #5
          پاسخ : لطفا در مورد ds1307 کمک کنید!

          از همتون ممنونم ، ولی دو مشکل وجود داره.
          1- با زبان C هست که من با بیسیک کار می کنم.
          2- بحث اون تاپیک رفع مشکل است و نه آموزش و من آخرش نفهمیدم I2C چه ربطی به SPI دارد.
          اگر ممکنه لینک مقاله آموزشی یا منبعی رو برای دانلود بذارید. اگه ممکنه کتابی معرفی کنید که تمام مسائل AVR را در خود جای داده باشد.
          کنکوری 90 دیروز،آ‌دانشجو مهندسی نرم افزار پلی تکنیک امروز!

          دیدگاه


            #6
            پاسخ : لطفا در مورد ds1307 کمک کنید!

            1- تاپیکی رو که مسلاد موسوی نوشته و ادامه داده رو بررسی کن با بیسیکه
            2- این دو تا هیچ ربط یه هم ندارن . هر کدوم یه وسیله ارتباطی هستند که DS1307 از روش I2C استفاده می کنه

            کتاب علی کاهه رو بگیر بخون

            دیدگاه


              #7
              پاسخ : لطفا در مورد ds1307 کمک کنید!

              این برنامه ds1307 تو بیسکام که زمان وتاریخ رو روی lcd کاراکتری نشون میده
              $regfile = "m32def.dat"
              $crystal = 8000000
              Config Lcd = 16 * 2
              Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
              'Config Date = Ymd
              Cls

              Waitms 1000


              Cursor Off

              Const Ds1307w = &HD0
              Const Ds1307r = &HD1

              Config Sda = Portd.1
              Config Scl = Portd.2

              Dim _sec As Byte , _min As Byte , _hour As Byte
              Dim _day As Byte , _month As Byte , _year As Byte , Weekday As Byte
              _sec = 56
              _min = 59
              _hour = 23
              _day = 1
              _month = 4
              _year = 08

              _sec = Makebcd(_sec)
              _min = Makebcd(_min)
              _hour = Makebcd(_hour)
              _day = Makebcd(_day)
              _month = Makebcd(_month)
              _year = Makebcd(_year)



              I2cstart
              I2cwbyte Ds1307w
              I2cwbyte 0
              I2cwbyte _sec
              I2cwbyte _min
              I2cwbyte _hour
              I2cwbyte Weekday
              I2cwbyte _day
              I2cwbyte _month
              I2cwbyte _year


              Do
              Cls
              _sec = Makedec(_sec)
              _min = Makedec(_min)
              _hour = Makedec(_hour)
              _day = Makedec(_day)
              _month = Makedec(_month)
              _year = Makedec(_year)


              Home

              Lcd "Time:" : Lcd _hour : Lcd ":" : Lcd _min : Lcd ":" : Lcd _sec
              Locate 2 , 1
              Lcd "Date:" : Lcd _year : Lcd "/" : Lcd _month : Lcd "/" : Lcd _day
              Waitms 50
              Gosub Readds
              Loop

              Readds:
              I2cstart
              I2cwbyte Ds1307w
              I2cwbyte 0

              I2cstart
              I2cwbyte Ds1307r
              I2crbyte _sec , Ack
              I2crbyte _min , Ack
              I2crbyte _hour , Ack
              I2crbyte Weekday , Ack
              I2crbyte _day , Ack
              I2crbyte _month , Ack
              I2crbyte _year , Nack

              I2cstop
              Return

              از لینک زیر هم میتونید مقاله خیلی خوبی رو در مورد i2c دانلود کنید موفق باشید
              http://rapidshare.com/files/170790100/network_of_micro.rar.html
              چه دعایی کنمت بهترازاین ،که کنار پسر فاطمه هنگام اذان ، سحر جمعه ای پشت دیوار بقیع قامتت قد بکشد در دو رکعت به نمازی که نثار حرم و گنبد برپا شده ی حضرت زهرا بکنی ... انشاالله

              دیدگاه


                #8
                پاسخ : لطفا در مورد ds1307 کمک کنید!

                سلام

                ببینم شما خریدی از این آی سی ها؟ اگه خریدی به من بگو من یه مشکلی تو راه اندازیه باطری بکاپ دارم :sad:

                دیدگاه


                  #9
                  پاسخ : لطفا در مورد ds1307 کمک کنید!

                  سلام .. ممنون از برنامه ای که گذاشتی این کد زیر که اول برنامه اومده مربوط به چیه ؟



                  Const Ds1307w = &HD0
                  Const Ds1307r = &HD1

                  یه سوالم در مورد ساختار برنامه دارم ، تو لوپ اصلی وقتی برنامه به Gosub Readds برنانه به زیر برنامه Readds میره بعد با دستور return برنامه از کجا ادامه پیدا میکنه

                  برنامه رو تو پروتئوس بستم بار اول زمان رو درست نمایش میده تو اوپ های بعد به جای همه متغیر ها عدد 165 نمایش داده میشه
                  کمتر به سایت میام .....

                  دیدگاه


                    #10
                    پاسخ : لطفا در مورد ds1307 کمک کنید!

                    من چند تا مثال رو بررسی کردم، یه چیزایی دستگیرم شد.
                    ولی باز هم سوالاتی دارم :
                    کد:
                    _sec = Makebcd(_sec)
                    یعنی چی؟ makebcd
                    Ack یعنی چی؟ و آیا از کتابخانه ds1307clock.lib استفاده نمی کنید؟
                    در ضمن دوستی که گفته خوب کار نکرده شاید به دلیل ' در کد زیر بوده باشه.
                    کد:
                    'Config Date = Ymd
                    ببینم شما خریدی از این آی سی ها؟ اگه خریدی به من بگو من یه مشکلی تو راه اندازیه باطری بکاپ دارم icon_sad
                    بله.
                    کنکوری 90 دیروز،آ‌دانشجو مهندسی نرم افزار پلی تکنیک امروز!

                    دیدگاه


                      #11
                      پاسخ : لطفا در مورد ds1307 کمک کنید!

                      سلام خدمت همه دوستان
                      به دو تا پست زیر اگه نگاه کنید فکر کنم سوالاتون جواب داده بشه
                      ds1307 :
                      http://www.eca.ir/forum2/index.php?topic=15545.msg71937#msg71937
                      pcf8563 :
                      http://www.eca.ir/forum2/index.php?topic=16860.msg79773#msg79773
                      البته توضیحاتی که در مورد pcf8563 داده شده طبق دیتا شیت این ایسی هست اگه به دیتا شیت 1307 نگاه کنید میبینید تفاوت چندانی با هم ندارن
                      موفق باشید
                      چه دعایی کنمت بهترازاین ،که کنار پسر فاطمه هنگام اذان ، سحر جمعه ای پشت دیوار بقیع قامتت قد بکشد در دو رکعت به نمازی که نثار حرم و گنبد برپا شده ی حضرت زهرا بکنی ... انشاالله

                      دیدگاه


                        #12
                        پاسخ : لطفا در مورد ds1307 کمک کنید!

                        کم کم دارم یه چیزایی میآ‌ فهمم. البته اگه بیشتر توضیح بدید، ممنون می شم. یه چیزایی فهمیدم. فکر کنم makedec فکر کنم منظورش اینه که اطلاعاتی که از آی سی میاد رو به دسیمال تبدیل می کنه. در مورد gosub، فکر کنم برای اینه که یک وقفه ایجاد کنه و بره دستوراتی رو انجام بده و با Return سر جای اولش برگرده و ادامه رو انجام بده. البته در مورد چند تا کد ازش سر در نیوردم. مثلا makebcd . میشه گفت اکثرش رو نفهمیدم :mrgreen:
                        Const Ds1307w = &HD0
                        Const Ds1307r = &HD1
                        این چه عملی رو انجام می ده؟

                        Config Sda = Portd.1
                        Config Scl = Portd.2
                        بهتره از چه پین هایی برای ارسال و دریافت استفاده کنیم ( مثلا در mega8 ) . و کدوم پین ورودی کدوم خروجی؟
                        کلا در مورد کد هاش توضیح بدید، لطفا . یه چیز دیگه این برنامه ای که نوشتید، چطور می شه ساعت و تاریخش رو تنظیم کرد؟
                        و اینم آخرین سوالم، این آی سی خودش می دونه که کدوم ماه، چند روز داره و کدوم سال سال کبیسه است؟ چون سال کبیسه میلادی ماه دومش 29 روزس.
                        کنکوری 90 دیروز،آ‌دانشجو مهندسی نرم افزار پلی تکنیک امروز!

                        دیدگاه


                          #13
                          پاسخ : لطفا در مورد ds1307 کمک کنید!

                          ببینید اصل پیگیری من انجام این پروژه : http://www.eca.ir/forum2/index.php?topic=21951.0
                          است. البته چون سوال خودم هم بود، دوست دارم، با هم مشکلمون حل بشه. حالا چرا ایشون نیومدن خودشون بپرسن، چون اصلا با AVR کار نکردن و در این زمینه تجربه ای ندارن. و چون من یکم ( یک هزارم چیزی که شما می دونید ) می دونم، می خواهم یادبگیرم تابتونم برنامه ی با میل خودم بسازم. و گرنه می شه از آمادش استفاده کرد.اگه ممکنه تو اون تاپیک هم کمک کنید.
                          کنکوری 90 دیروز،آ‌دانشجو مهندسی نرم افزار پلی تکنیک امروز!

                          دیدگاه


                            #14
                            پاسخ : لطفا در مورد ds1307 کمک کنید!

                            سلام
                            نوشتن و خوندن از ایسی های ساعت بتید به صورت bcd باشه
                            با دستور makebcd دیتا رو به bcd تبدیل میکنیم و تو ایسی مینویسیم و با دستور makedec دیتایی که به صورت bcd از ایسی دریافت شده رو به دسیمال تبدیا میکنیم و روی lcd نشون میدیم
                            برای تعیین پایه scl , sda اگه میکرو به طور پیش فرض این دو تا پایه رو داره مثل مگا 2560 بهتره از همون ها استفاده کنید ول یدر کل زیاد فرق نمیکنه از کدوم دو تا پایه استفاد میکنید
                            برای نوشتن باید ابتدا ادرس نوشتن تو ایسی رو فعال کرد و بعد از اون دیتایی که برای نوشتن در نظر گرفتیم برای خوندن هم همینطور
                            با این دو تا عبارت مقدار این دو تا ادرس رو توی دو تا ثبات قرار دادیم
                            Const Ds1307w = &HD0
                            Const Ds1307r = &HD1
                            هر وقت نوشتیم ds1307w یعنی ادرس هگز d0 این ایسی فعال میشود برای نوشتن و هر وقت نوشتیم ds1307r یعنی ادرس هگز d1 این ایسی فعال میشود برای خواندن از ایسی
                            برای دادن زمان و تاریخ به ایسی دستورات زیر تو برنامه هست
                            _sec = 56
                            _min = 59
                            _hour = 23
                            _day = 1
                            _month = 4
                            _year = 08
                            اگه این خطوط تو برنامه نباشه ایسی بطور پیشفرض برا ی تمام این مقادیر 0 قرار میده
                            برای تبدیل این مقادیر به bcd
                            _sec = Makebcd(_sec)
                            _min = Makebcd(_min)
                            _hour = Makebcd(_hour)
                            _day = Makebcd(_day)
                            _month = Makebcd(_month)
                            _year = Makebcd(_year)

                            برای نوشتن این مقادیر در ایسی از دستورات زیر استفاده میشه
                            I2cstart
                            I2cwbyte Ds1307w
                            I2cwbyte 0
                            I2cwbyte _sec
                            I2cwbyte _min
                            I2cwbyte _hour
                            I2cwbyte Weekday
                            I2cwbyte _day
                            I2cwbyte _month
                            I2cwbyte _year

                            عبارت i2cwbyte برای نوشت روی باس i2c ودستور i2crbyte برای خوندن از باس i2c میباشد
                            بنابراین برای خواندن از ایسی باید از دستورات زیر استفاده کنید
                            I2cstart
                            I2cwbyte Ds1307w
                            I2cwbyte 0

                            I2cstart
                            I2cwbyte Ds1307r
                            I2crbyte _sec , Ack
                            I2crbyte _min , Ack
                            I2crbyte _hour , Ack
                            I2crbyte Weekday , Ack
                            I2crbyte _day , Ack
                            I2crbyte _month , Ack
                            I2crbyte _year , Nack

                            I2cstop
                            که در زیر برنامه readds قرار داده شده
                            میتونید قسمت نوشتن تو ایسی رو هم تو زیر برنامه قرار بدین و اگه خواستین زمان یا تاریخ رو با صفحه کلید در حین برنامه تنظیم کنید با فراخوانی سابروتین نوشتن تو ایسی این کار رو بکنید


                            و این ایسی ها در مورد سالهای کبیسه و 29 روز بودن بعضی ماهها برای سال میلادی درست عمل میکنند
                            الان باطریم تموم شده وگرنه بیشتر توضیح میدادم،.. شرمنده
                            موفق باشید
                            چه دعایی کنمت بهترازاین ،که کنار پسر فاطمه هنگام اذان ، سحر جمعه ای پشت دیوار بقیع قامتت قد بکشد در دو رکعت به نمازی که نثار حرم و گنبد برپا شده ی حضرت زهرا بکنی ... انشاالله

                            دیدگاه


                              #15
                              پاسخ : لطفا در مورد ds1307 کمک کنید!

                              سلام:
                              حالا که همه اساتید اینجا جمع شدند گفتم فرصت رو غنیمت بشمرم و یه سئوالی که از قبل داشتم و جواب نگرفتم اینجا مطرح کنم

                              لطفا یه نگاهی به این کدها بندازین: :eek:

                              :arrow:


                              Getdatetime:
                              I2cstart
                              I2cwbyte Ds1307w
                              I2cwbyte 0
                              I2cstart
                              I2cwbyte Ds1307r
                              I2crbyte _sec , Ack
                              I2crbyte _min , Ack
                              I2crbyte _hour , Ack

                              I2crbyte Weekday Ack
                              I2crbyte _day , Ack
                              I2crbyte _month , Ack
                              I2crbyte _year , Nack
                              I2cstop
                              .
                              .
                              .
                              Setdatetime:

                              I2cstart
                              I2cwbyte Ds1307w
                              I2cwbyte 0
                              I2cwbyte _sec
                              I2cwbyte _min
                              I2cwbyte _hour

                              I2cwbyte Weekday
                              I2cwbyte _day
                              I2cwbyte _month
                              I2cwbyte _year
                              I2cstop

                              خوب همونطور که میبینید این بخشی از کدهای یه برنامه مربوط به خوندن و نوشتن تاریخ رو ds1307 هست

                              حالا وقتی این برنامه اجرا میشه مقدار ثانیه و دقیقه و ساعت درست ثبت و اعلام میشه ولی از ایام هفته به بعد اطلاعات جابجا نشون داده میشه. به این ترتیب که بجای روز ، ایام هفته و بجای ماه، روز و بجای سال، ماه نمایش داده میشه و بجای خود ایام هفته هم عدد 0 .

                              حالا فکر میکنید اشتباه تو مرحله Set کردن Time & date هست یا خوندن ؟؟؟
                              خدا نور است و من اشعه ای از او ...

                              دیدگاه

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