NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3747 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 4 از 4

موضوع: WatchDog ATMEGA88

  1. #1
    مدیر انجمن
    تاریخ عضویت
    Dec 2009
    نام
    غلامحسن منصوری
    نوشته ها
    359
    تشکر
    408
    تشکر شده 819 بار در 248 پست

    پیش فرض WatchDog ATMEGA88

    سلام.
    من میخوام از watchdog استفاده کنم. دیتاشیت MEGA88 رو مطالعه کردم . خودش یه مثال داره که اون رو تست کردم و جواب نمیده. خودم هم هر بلایی سرش میارم درست نمیشه. مشکل اینه که prescale تایمرش ست نمیشه و با حداکثر فرکانسش کار میکنه.:

    [PHP]void WDT_Prescaler_Change(void)
    {
    __disable_interrupt();
    __watchdog_reset();
    /* Start timed sequence */
    WDTCSR |= (1<<WDCE) | (1<<WDE);
    /* Set new prescaler(time-out) value = 64K cycles (~0.5 s) */
    WDTCSR = (1<<WDE) | (1<<WDP2) | (1<<WDP0);
    __enable_interrupt();
    }[/PHP]


    اونطور که توی دیتاشیت نوشته شده برای اعمال هر تغییری در رجیستر WDTCSR باید ابتدا بطور همزمان دو بیت WDE و WDCE همزمان یک بشه. بعدش 4 کلاک فرصت داریم تا مقادیر دلخواه رو توی رجیستر بنویسیم. وقتی که مقادیر رو می نویسیم باید WDCE رو هم صفر کنیم.
    در simulation و دیباگ میکروی واقعی، نتونستم prescale رو تغییر بدم.
    ممنون میشم راهنمایی کنید
    ویرایش توسط mansoory : 22-01-2014 در ساعت 16:30

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  3. #2
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    سلام

    این میکروکنترلر یک فیوزبیت هم برای قسمت Watchdog داره. اونم چک کنید.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  4. تشکرها از این نوشته :


  5. #3
    مدیر انجمن
    تاریخ عضویت
    Dec 2009
    نام
    غلامحسن منصوری
    نوشته ها
    359
    تشکر
    408
    تشکر شده 819 بار در 248 پست

    پیش فرض

    نقل قول نوشته اصلی توسط morteza_rk نمایش پست ها
    سلام

    این میکروکنترلر یک فیوزبیت هم برای قسمت Watchdog داره. اونم چک کنید.
    اون رو فعلا غیر فعالش کردم. اون ارتباطی به Prescaler تایمرش نداره.

  6. #4
    مدیر انجمن
    تاریخ عضویت
    Dec 2009
    نام
    غلامحسن منصوری
    نوشته ها
    359
    تشکر
    408
    تشکر شده 819 بار در 248 پست

    پیش فرض

    سلام مجدد
    مشکل رو حل کردم. مشکل از کامپایلره اگه optimize فعال نباشه کدهای اضافی تولید میکنه و باعث میشه بیش از 4 کلاک بین دو دستور فوق فاصله بیافته.
    راه حلش استفاده از دستورات هدر wdt.h است. هدر شامل دستوراتی با کدهای اسمبلی است.
    کار کردن باهاش خیلی ساده است.
    کد:
    wdt_disable(); غیرفعالش میکنه
    wdt_enable(PRESCALE); واچ داگ رو با prescale داده شده راه اندازی میکنه.
    مقادیر prescale رو از هدرش میتونید پیدا کنید.
    موفق باشید

  7. کاربران : 2 تشکر کرده اند از شما mansoory برای ارسال این پست سودمند:


موضوعات مشابه

  1. در مورد Watchdog
    توسط esmaeil57 در انجمن AVR
    پاسخ: 4
    آخرين نوشته: 18-10-2012, 00:24
  2. Watchdog
    توسط safavism در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 23-08-2011, 14:22
  3. Hardware Watchdog
    توسط Caspian1361 در انجمن AVR
    پاسخ: 11
    آخرين نوشته: 05-04-2010, 22:50
  4. Watchdog Timer
    توسط Caspian1361 در انجمن AVR
    پاسخ: 6
    آخرين نوشته: 05-04-2010, 19:24

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •