اطلاعیه

Collapse
No announcement yet.

از کار افتادن وقفه تایمر در زیر برنامه

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

    از کار افتادن وقفه تایمر در زیر برنامه

    سلام به همه دوستان

    از دوستان کسی می دونه چرا وقفه تایمر در زیر برنامه sub از کار می افته و آیا دستوری برای رفع این مشگل هست
    قبلا از پاسخهاتون تشکر می کنم

    اگه مردم می دونستن زمان چقدر با ارزشه دیگه هیچ وقت کفش بند دار نمی خریدن البرت انیشتن

    #2
    پاسخ : از کار افتادن وقفه تایمر در زیر برنامه

    کدوم سابروتین؟؟
    اگر اینتراپت سراسری رو توی سابروتین غیر فعال کنید اینتراپت تایمر هم غیر فعال میشه.
    یا اگر مقدارش توی سابروتین تغییر کنه و به سرریز نرسه بازم اینتراپت تایمر اتفاق نمی افته.

    دیدگاه


      #3
      پاسخ : از کار افتادن وقفه تایمر در زیر برنامه

      جهت یاد آوری البته !!
      تا زمانی که از زیر برنامه یه وقفه بیرون نیاییم ، کل وقفه ها غیر فعال هستن تو حالت عادی
      خودمون باید وقفه رو فعال کنیم اگر خواستیم تو این حالت
      هميشه به ياد خدا باش !

      دیدگاه


        #4
        پاسخ : از کار افتادن وقفه تایمر در زیر برنامه

        نوشته اصلی توسط DDR3
        جهت یاد آوری البته !!
        تا زمانی که از زیر برنامه یه وقفه بیرون نیاییم ، کل وقفه ها غیر فعال هستن تو حالت عادی
        خودمون باید وقفه رو فعال کنیم اگر خواستیم تو این حالت
        یه سوال؟
        با این توضیح پس چطوری توی یه اینتراپیت یه اینتراپیت دیگه اتفاق میوفته؟

        دیدگاه


          #5
          پاسخ : از کار افتادن وقفه تایمر در زیر برنامه

          نوشته اصلی توسط saeiddiod
          یه سوال؟
          با این توضیح پس چطوری توی یه اینتراپیت یه اینتراپیت دیگه اتفاق میوفته؟
          نباید این اتفاق بیافته
          نباید درون یک وقفه - وقفه ی دیگه ای از همون نوع اتفاع بیافته
          این کار باعث بروز ناهنجاری میشه. (همزمانی پردازش ها - Critical Section)
          If the wind will not serve, take to the oars

          دیدگاه


            #6
            پاسخ : از کار افتادن وقفه تایمر در زیر برنامه

            نوشته اصلی توسط ASHIT AXAR
            نباید این اتفاق بیافته
            نباید درون یک وقفه - وقفه ی دیگه ای از همون نوع اتفاع بیافته
            این کار باعث بروز ناهنجاری میشه. (همزمانی پردازش ها - Critical Section)
            درسته ولی سوالم اینه که طبق توضیحات اقای DDR3 (تا زمانی که از زیر برنامه یه وقفه بیرون نیاییم ، کل وقفه ها غیر فعال هستن تو حالت عادی
            خودمون باید وقفه رو فعال کنیم اگر خواستیم تو این حالت) اگه تا زمانی که توی زیر برنامه هستیم کل وقفه ها غیر فعال هستند پس چطور دوباره وقفه اتفاق میوفته؟؟

            دیدگاه


              #7
              پاسخ : از کار افتادن وقفه تایمر در زیر برنامه

              طرح avr اینطوری هست
              اگر در حین اجرای یه وقفه ، هر وقفه ای با هر اولویتی اتفاق بیوفته دیده نمیشه
              با اجرای دستور reti و یا اینکه خودمان وقفه را فعال کنیم،وقفه فعال میشه
              یعنی اینکه هیچ مکانیزم سخت افزاری پشته سازی یا ذخیره رجیستر و ... در کار نیست
              و اگر وقفه را در حین روتین فعال کنیم و یه وقفه دیگه رخ بده اطلاعات رجیستر ها از بین میره
              بایستی بصورت نرم افزاری پروسه رو انجام بدیم
              یعنی مثلا ابتدای رو تین وقفه رجیستر ها رو ذخیره کنیم ، بعد واکشی کنیم
              کلا avr برای انجام چنین کارهایی مناسب نیست
              هميشه به ياد خدا باش !

              دیدگاه


                #8
                پاسخ : از کار افتادن وقفه تایمر در زیر برنامه

                نوشته اصلی توسط saeiddiod
                درسته ولی سوالم اینه که طبق توضیحات اقای DDR3 (تا زمانی که از زیر برنامه یه وقفه بیرون نیاییم ، کل وقفه ها غیر فعال هستن تو حالت عادی
                خودمون باید وقفه رو فعال کنیم اگر خواستیم تو این حالت) اگه تا زمانی که توی زیر برنامه هستیم کل وقفه ها غیر فعال هستند پس چطور دوباره وقفه اتفاق میوفته؟؟
                بهتره پردازش ها رو درون وقفه انجام ندید. پردازش های درون وقفه نباید زمان زیادی بگیره. چون اینگونه وقفه های دیگر اجرا نخواهند شد

                خب ببینید اگه این کارو بکنین چه اتفاقی میافته:
                - برنامه وارد وقفه خواهد شد. (و وقفه ها غیر فعال میشوند)
                - شما وقفه ها را فعال می کنید.
                - در میان اجرای پردازش (اگر بیش از اندازه زمان بر باشد) وقفه دیگری رخ خواهد داد.
                - وقفه جدید همان پردازش های وقفه را از نو اجرا خواهد کرد. (آدرس برگشت به برنامه اصلی جایگزین آدرس وقفه خواهد شد)
                - (برنامه هنگ میکند)
                If the wind will not serve, take to the oars

                دیدگاه

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