اطلاعیه

Collapse
No announcement yet.

واچداگ و تاخیرهای طولانی

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

    واچداگ و تاخیرهای طولانی

    سلام
    در مورد واچداگ یه سری سوالات داشتم
    1- اگه تو برنامه مون تاخیرهای طولانی داشته باشیم باید چی کار کنیم برای واچداگ ؟ delay_ms(2000) مثلا داریم. راهی غیر از شکستن این تاخیر به چند تاخیر ریزتر و همچنین راهی غیر از نوشتن یک تایع جدید تاخیر (که توی اون تاخیر اصلی به تاخیرهای ریزتر شکسته بشن)مدنظرمه.
    2- اسیلاتور واچداگ از پردازنده اصلی جداس. ولی آیا اسیلاتور تایمرهای دیگه از اسیلاتور پردازنده جدا نیست ؟ یعنی مثلا ممکنه ما توی یکی از وقفه های تایمرهامون اینطوری کدو قرار بدیم که مثلا PORTA.1=~PORTA . و led که روی این خروجی هست مدام چشمک بزنه در حالیکه میکرو هنگ کرده ؟ برای من گاهی اینطور پیش میاد که این وقفه ایجاد میشه ولی برنام عملکرد صحیحشو نداره.
    3- بهترین راه (یا بهترین مکان/مکانها)برای سفر کردن تایمر واچداگ کجاس ؟ برای برنامه ای که کلی اینتراپت و ... داره. آیا مابین همه کدها قرار بدیم یا صرفا توی حلقه ی while مون ؟

    ممنون

    #2
    پاسخ : واچداگ و تاخیرهای طولانی

    با توجه به اینکه کلاک تایمر با cpu مشترکه باید توی وقفه یه تایمر که زمانش کمتر از watchdog هست اون رو صفر کنید

    دیدگاه


      #3
      پاسخ : واچداگ و تاخیرهای طولانی

      1- تا اونجا که یادم میاد تابع delay_ms خودش واچداگ رو ریست میکرد.
      2-برنامه یه مشکلی داره که تو لوپ وقفه گیر میکنه دیگه.
      3- هر جایی که احتمال بدین ممکنه واچداگ سر ریز بشه باید این کار رو بکنید. جای خاصی رو لزوما نمیشه گفت.
      [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

      دیدگاه


        #4
        پاسخ : واچداگ و تاخیرهای طولانی

        نوشته اصلی توسط shahinbahari
        1- تا اونجا که یادم میاد تابع delay_ms خودش واچداگ رو ریست میکرد.
        2-برنامه یه مشکلی داره که تو لوپ وقفه گیر میکنه دیگه.
        3- هر جایی که احتمال بدین ممکنه واچداگ سر ریز بشه باید این کار رو بکنید. جای خاصی رو لزوما نمیشه گفت.
        اگه یا تابع که فراخونی می کنیم مدتش طولانی باشه راه کار چیه ؟
        مثلا وقتی بش GSM کار می کنیم و بهش میگیم اسمس بده مدتی طول می کشه تا اون تابع ارسال اسمس کارش به پایان برسه . در واقع در این حالت هیچ پروسه ی خاصی روی خود میکرو در حال اجرا نیست و میکرو منتظر جواب GSM ه . اینجا چه باید کرد ؟

        دیدگاه


          #5
          پاسخ : واچداگ و تاخیرهای طولانی

          واچ داگو غیر فعال کن

          دیدگاه


            #6
            پاسخ : واچداگ و تاخیرهای طولانی

            نوشته اصلی توسط sazesh
            اگه یا تابع که فراخونی می کنیم مدتش طولانی باشه راه کار چیه ؟
            مثلا وقتی بش GSM کار می کنیم و بهش میگیم اسمس بده مدتی طول می کشه تا اون تابع ارسال اسمس کارش به پایان برسه . در واقع در این حالت هیچ پروسه ی خاصی روی خود میکرو در حال اجرا نیست و میکرو منتظر جواب GSM ه . اینجا چه باید کرد ؟
            خوب توی اون تابع هم باید یه جوری واچداگ رو ریست کرد دیگه یا به قول دوستمون غیر فعالش کنیم.
            راه بهتر هم اینه که زمانی که میکرو بیکار هست یا به عبارتی nop رو اجرا میکنه, به جای این دستور ریست واچداگ رو بدیم.
            [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

            دیدگاه

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