اطلاعیه

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 رو به آی سی میفرسته.

        دیدگاه

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