اطلاعیه

Collapse
No announcement yet.

نحوه راه اندازی ds1307 توسط کد ویژن

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

    #16
    پاسخ : نحوه راه اندازی ds1307 توسط کد ویژن

    نوشته اصلی توسط zzmm نمایش پست ها
    سلام .من با ds1307برنامه ساعت نوشتم توی پرتئوس جواب میده اما واقعیت نه.از کریستال32.768هم استفاده کردم اما در عمل یا165:165:165 نشون میده یا0:0:0 واصلا نمی شماره .توروخدا کمکم کنید .باید از خازن استفاده کنم ؟ چه خازنی و کجای مدار
    سلام
    من تجربیاتی رو که با این آی سی داشتم به شما میگم و شما هم رعایت کنید شاید مشکل حل شد. ضمنا از خازن یا هیچ چیز دیگری هم برای تغذیه استفاده نمیکردم!
    یادمه وقتی برای اولین بار آی سی در مدار قرار میگرفت، یعنی قبلش باتری بکاپ بهش وصل نبود، آی سی مقادیر عجیب و غریبی به عنوان ساعت و دقیقه و... بر میگردوند. برای رفع مشکل باید مکانیزمی رو اجرا کرد که برای راه اندازی اولیه مقدار دلخواه، مثلا صفر به عنوان ساعت و تاریخ در آی سی تنظیم بشه. من خودم طوری کد نویسی کردم که اگر موقع روشن کردن مدار، یکی از کلیدهای تنظیمات وصل بود، برنامه مقدار 0 رو به آیسی میفرستاد که روی رجیستر های ساعت و تاریخ بریزه.
    مورد دوم هم اینکه من خودم برای این آیسی یک کتابخونه نوشتم و موقع تست کتابخونه و مدار روی برد بورد باتری بکاپ وصل نمیکردم. سر همین موضوع دو تا ds1307 سوخت! دلیلش رو هنوز نفهمیدم ولی اینجوری که الآن یادم میاد انگار من پین باتری بکاپ آی سی رو به تغذیه وصل میکردم که شاید همین باعث سوختن آی سی میشده. با استفاده از باتری بکاپ این مشکل هم رفع شد.
    ضمنا مقاومت های روی خطوط i2c هم فراموش نشه! من خودم از مقاومت 4.7k استفاده میکردم.

    دیدگاه


      #17
      پاسخ : نحوه راه اندازی ds1307 توسط کد ویژن

      راستش منم همین کارها را انجام دادم فقط این قسمت که مقدار اولیه بدیم را متوجه نمیشم توی حلقه while بنویسم؟ میشه دستورات این قسمت را واضح تر بگید .ممنون

      دیدگاه


        #18
        پاسخ : نحوه راه اندازی ds1307 توسط کد ویژن

        نوشته اصلی توسط zzmm نمایش پست ها
        راستش منم همین کارها را انجام دادم فقط این قسمت که مقدار اولیه بدیم را متوجه نمیشم توی حلقه while بنویسم؟ میشه دستورات این قسمت را واضح تر بگید .ممنون
        نه ببینید من در داخل main قبل از حلقه اصلی همچین کدی نوشتم:

        if ((PINA & (1<<PINA7))==0)
        {
        rtc_set_date(0,0,0);
        rtc_set_time(0,0,0);
        }

        البته شما الزامات مربوط به نویز گیری کلید رو هم بهش اضافه کنید. این قطعه کد چک میکنه که موقع روشن شدن مدار، آیا کاربر مثلا پوش باتن روی پین 7 پورت a رو فشار داده یا نه؛ اگر جواب مثبته میاد و مقادیر 0 رو به آی سی میفرسته.

        دیدگاه


          #19
          سلام دوستان وقتتون بخیر

          من با atmega32 و ds1307 یه شمارش زمان درست کردم برای دستگاه جوجه کشی و این کار میکرد تا 2 ماه پیش

          الان رفتم سراغش دیدم کار نمیکنه این قسمت از برنامه و همه کدها رو برداشتم و فقط همین قسمت رو تست کردم دیدم نشد

          گفتم شاید rtc سوخته ایسی و اوسیلاتورش و باتریش رو عوض کردم و باز بستم کار نمیکنه پول اپ هم کردم



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

          به نظرتون چه اتفاقاتی ممکنه باعث بشه کار نکنه؟

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

          دیدگاه


            #20
            نوشته اصلی توسط mohammadgh1370 نمایش پست ها
            سلام دوستان وقتتون بخیر

            من با atmega32 و ds1307 یه شمارش زمان درست کردم برای دستگاه جوجه کشی و این کار میکرد تا 2 ماه پیش

            الان رفتم سراغش دیدم کار نمیکنه این قسمت از برنامه و همه کدها رو برداشتم و فقط همین قسمت رو تست کردم دیدم نشد

            گفتم شاید rtc سوخته ایسی و اوسیلاتورش و باتریش رو عوض کردم و باز بستم کار نمیکنه پول اپ هم کردم

            DS1307 is a two-wire (I2C) serial interface RTC (Real Time Clock) with 56 bytes of nonvolatile RAM. This provides clock and calendar with a second, minute, hour, day, date, month and year.


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

            به نظرتون چه اتفاقاتی ممکنه باعث بشه کار نکنه؟

            ایا ممکنه پین ها کلاک و دیتا خراب شده باشن؟ یا از این جور مشکلات؟
            وقتی مداری که ساختید مدت طولانی بدون مشکل کار میکنه ، احتمال اینکه مشکل نرم افزاری باشه نزدیک به صفر هست.
            پایه های SDA و SCL میکروکنترلر رو خروجی کنید و بهشون یه LED وصل کنید و برنامه چشمک زن رو اجرا کنید تا ببینید اون پین ها سالمن یا نه.
            بهتره LED رو به شکل های ساید قرار بدید ، یعنی آند به مثبت تغذیه ، و کاتد به پایه میکروکنترلر.

            دیدگاه


              #21
              نوشته اصلی توسط zzmm نمایش پست ها
              پاسخ : نحوه راه اندازی ds1307 توسط کد ویژن

              سلام .من با ds1307برنامه ساعت نوشتم توی پرتئوس جواب میده اما واقعیت نه.از کریستال32.768هم استفاده کردم اما در عمل یا165:165:165 نشون میده یا0:0:0 واصلا نمی شماره .توروخدا کمکم کنید .باید از خازن استفاده کنم ؟ چه خازنی و کجای مدار
              در پروتئوس برخی خطاها شبیه‌سازی نمی‌شوند، بنابراین حتی با کد یا مدار ناقص ممکن است ساعت درست نمایش داده شود، اما در دنیای واقعی رعایت سیم‌کشی صحیح I2C، استفاده از مقاومت‌های پول‌آپ ۱۰ کیلو روی خطوط SDA و SCL به VCC و ترتیب درست دستورات بسیار مهم است، چون بدون این مقاومت‌ها DS1307 معمولاً کار نمی‌کند یا مقادیر اشتباه مانند 165:165:165 نشان می‌دهد.

              دیدگاه

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