اطلاعیه

Collapse
No announcement yet.

کدام وقفه زودتر اجرا میشود

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

    کدام وقفه زودتر اجرا میشود

    سلام
    من 2تا وقفم همزمان رخ بده کدام زودتر اجرا میشه و آیا بعد اجرای اولی به دومی پاسخ میده؟
    مثلا int1 و urxc
    شمر ۱۴۰۰سال پیش مُرد؛شمر زمانت بشناس.
    [img width=400 height=100]http:///uploads/140623781981451.png[/img]
    [glow=green,2,100]یاحسین تشنه لب[/glow]

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

    نوشته اصلی توسط عمو LED
    سلام
    من 2تا وقفم همزمان رخ بده کدام زودتر اجرا میشه و آیا بعد اجرای اولی به دومی پاسخ میده؟
    مثلا int1 و urxc
    اگه اشتباه نکرده باشم بر اساس این جدولی که در اواخر صفحه هست
    http://www.avr-tutorials.com/interrupts/about-avr-8-bit-microcontrollers-interrupts
    البته این فقط برای همین میکرویی هست که گفته اگه میکروی شما شبیه این باشه (فکر کن م8 و 16 و32 همین باشن) همین جدوله

    head<=
    ...تشکر خدا...
    [img width=97 height=100]http://mahdi3d.persiangig.com/image/5280543_t.jpg[/img]

    دیدگاه


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

      ممنون از پاسخ دوستمون
      شما کافیه دیتاشیت میکرویی که استفاده میکنی رو ببینی
      شبیه همون جدولی که m4hd1r در اون لینک اشاره کرد
      برای هر میکرویی وجود داره!
      که اولویت اجرای وقفه ها رو نشون میده!
      البته در برخی میکرو ها این اولویت قابل برنامه ریزیه!
      :read:
      1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
      2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
      3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

      دیدگاه


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

        من میکروم at32 هست اولویت هاشو دیدم ولی گفتین قابل برنامه ریزیه ؟این که خیلی خوبه چطور میتونم اینکارو بکنم؟
        شمر ۱۴۰۰سال پیش مُرد؛شمر زمانت بشناس.
        [img width=400 height=100]http:///uploads/140623781981451.png[/img]
        [glow=green,2,100]یاحسین تشنه لب[/glow]

        دیدگاه


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

          فکر نکنم در اتمگا 32 بشه دستکاری کرد!
          یعنی این جدول اولویت هاش ثابته!
          اما در برخی میکروها میشه با پروگرمر اولویت رو تعیین کرد
          (مثل تنظیم فیوزبیت ها)
          در برخی هم نرم افزاری اینکار انجام میشه
          یعنی با برنامه نویسی ... (مثل سری xmega )
          :read:
          1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
          2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
          3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

          دیدگاه


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

            متاسفانه مدیریت وقفه ها در avr ضعیفه .
            در صورتی که دو وقفه به صورت همزمان رخ بدن اولویت با وقفه ای هس که شماره بردارش پایین تر باشه
            یعنی اگر وقفه هایی با بردار های 1 و 4 به صورت همزمان رخ بده اولویت با 1 هست .
            بردار int1 معمولا اولویتش بالاتره از urxc
            گذشت خصلت مردان است

            دیدگاه


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

              خوب الان اگه 2 تا وقفه من همزمان رخ بده . آیا بعد از رفتن به وقفه اول بعدش به وقفه دوم پاسخ میده یا نه؟
              شمر ۱۴۰۰سال پیش مُرد؛شمر زمانت بشناس.
              [img width=400 height=100]http:///uploads/140623781981451.png[/img]
              [glow=green,2,100]یاحسین تشنه لب[/glow]

              دیدگاه


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

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

                بله . در صورتی که در روتین وقفه اول ، فلگ مربوط به وقفه دوم به صورت نرم افزاری صفر نشود ، بعد از خارج شدن از روتین وقفه اول ، پردازنده وارد روتین وقفه دوم میشود.

                راه اندازي ماژول nrf24l01p براي codevision (ارتباط بيسيم بين دو ميکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                کوچ کردن از کدويژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                نحوه نوشتن اصولي يک لايبرري و درايور نرم افزاري( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
                انشالله به زودي تاپيک ها به روز رساني خواهد شد،

                دیدگاه


                  #9
                  پاسخ : کدام وقفه زودتر اجرا میشود

                  نوشته اصلی توسط عمو LED
                  خوب الان اگه 2 تا وقفه من همزمان رخ بده . آیا بعد از رفتن به وقفه اول بعدش به وقفه دوم پاسخ میده یا نه؟
                  ممنون از پاسخ سید که به نکته ی مهمی اشاره کرد
                  یک نکته ی دیگه هم بگم من:
                  زمانی که یک وقفه رخ میده، از نظر سخت افزاری اینطوری میشه که
                  میکرو که داره برنامه رو از حافظه فلش خط به خط اجرا میکنه
                  آدرس مکانی که هست رو ذخیره میکنه
                  میپره میره آدرس وقفه ای که رخ داده!
                  در اون آدرس وقفه دوباره یک آدرس هست که میکرو به اونجا راهنمایی میشه
                  همزمان آدرس جایی که در ابتدا اونجا بوده رو هم ذخیره میکنه
                  تا راه برگشت رو گم نکنه!
                  وقتی زیر برنامه ی وقفه انجام شد
                  میکرو برمیگرده به همون خانه از حافظه ی فلش که قبل از وقفه بوده
                  و ادامه ی کارهاش رو انجام میده
                  حالا اگه چند تا وقفه پشت سر هم بیاد
                  باید این وقفه ها آدرسشون ذخیره بشه!
                  مثلا شما 100 تا از خونه ی حافظه رو برای ذخیره ی آدرس های وقفه های پشت سرهم
                  و آدرس برگشت از وقفه در نظر میگیری.
                  حالا اگه 100 تا وقفه پشت سر هم بیاد
                  میکرو میتونه اینا رو دونه به دونه انجام بده
                  اما اگه بیشتر شد تعداد وقفه ها
                  بدبخت قاط میزنه
                  و بستگی به قدرت میکرو یا معماری ساختش
                  خلاصه یه جوری هنگ میکنه.
                  بخاطر همین باید در برنامه نویسی
                  خیلی حواسمون به وقفه ها باشه
                  تا حتی الامکان چنین مسایلی پیش نیاد
                  1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
                  2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
                  3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

                  دیدگاه


                    #10
                    پاسخ : کدام وقفه زودتر اجرا میشود

                    "" مثلا شما 100 تا از خونه ی حافظه رو برای ذخیره ی آدرس های وقفه های پشت سرهم
                    و آدرس برگشت از وقفه در نظر میگیری. ""

                    متوجه این صحبتتون نشدم یعنی من برای وقفه میتونم فضا بزارم؟
                    یا نه منظورتون این بود که مثلا من 80 درصد فلش برنامه بریزم و 20 درصدش خالی بزارم!!
                    شمر ۱۴۰۰سال پیش مُرد؛شمر زمانت بشناس.
                    [img width=400 height=100]http:///uploads/140623781981451.png[/img]
                    [glow=green,2,100]یاحسین تشنه لب[/glow]

                    دیدگاه


                      #11
                      پاسخ : کدام وقفه زودتر اجرا میشود

                      نوشته اصلی توسط عمو LED
                      "" مثلا شما 100 تا از خونه ی حافظه رو برای ذخیره ی آدرس های وقفه های پشت سرهم
                      و آدرس برگشت از وقفه در نظر میگیری. ""

                      متوجه این صحبتتون نشدم یعنی من برای وقفه میتونم فضا بزارم؟
                      یا نه منظورتون این بود که مثلا من 80 درصد فلش برنامه بریزم و 20 درصدش خالی بزارم!!
                      سوال خوبی پرسیدی!
                      چون برای منم سواله که این آدرس ها کجا ذخیره میشن!
                      و تعدادشون رو چطوری باید تعیین کنیم!
                      اما خب دیتاشیت رو دقیق نگاه نکردم!
                      فقط یادمه در کدویژن در تنظیمات
                      دو گزینه داشت به نام:
                      heap size
                      stack size
                      (در IAR هم بود)
                      یکی بیاد ما رو روشن کنه، ممنون میشیم!
                      1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
                      2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
                      3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

                      دیدگاه


                        #12
                        پاسخ : کدام وقفه زودتر اجرا میشود

                        پرش به بردار وقفه مثل فراخوانی یک روتین معمولی هست با این تفاوت که
                        موقع پرش فلگ I خاموش و در زمان برگشتن از تابع دوباره روشن میشه .
                        زمانیکه یک روتین فراخوانی میشه آدرس فعلی پروگرم کانتر در استک
                        با دو بار PUSH کردن ذخیره میشه و آدرس جدید (آدرس روتین) در پروگرم کانتر قرار میگیره
                        و هنگام بازگشت از روتین آدرس از استک دوباره به پروگرم کانتر برگردونده میشه .
                        گذشت خصلت مردان است

                        دیدگاه


                          #13
                          پاسخ : کدام وقفه زودتر اجرا میشود

                          الان یک سوال فرض کنیم که وقفه رخ داده و برنامه رفته داره به وقفه پاسخ میده در حین این کار دوباره همون وقفه رخ میده .آیا وقتی برگشت به روتین برنامه اون وقفه دومی که رخ داد پاسخ میده؟
                          شمر ۱۴۰۰سال پیش مُرد؛شمر زمانت بشناس.
                          [img width=400 height=100]http:///uploads/140623781981451.png[/img]
                          [glow=green,2,100]یاحسین تشنه لب[/glow]

                          دیدگاه


                            #14
                            پاسخ : کدام وقفه زودتر اجرا میشود

                            نوشته اصلی توسط عمو LED
                            الان یک سوال فرض کنیم که وقفه رخ داده و برنامه رفته داره به وقفه پاسخ میده در حین این کار دوباره همون وقفه رخ میده .آیا وقتی برگشت به روتین برنامه اون وقفه دومی که رخ داد پاسخ میده؟
                            بستگی به:
                            - نوع وقفه
                            - میکرویی که استفاده میکنی
                            داره! در برخی ها چنین امکانی هست و در برخی ها نه!
                            دیتا شیت رو باید بخونی
                            :read:
                            1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
                            2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
                            3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

                            دیدگاه


                              #15
                              پاسخ : کدام وقفه زودتر اجرا میشود

                              نوشته اصلی توسط عمو LED
                              الان یک سوال فرض کنیم که وقفه رخ داده و برنامه رفته داره به وقفه پاسخ میده در حین این کار دوباره همون وقفه رخ میده .آیا وقتی برگشت به روتین برنامه اون وقفه دومی که رخ داد پاسخ میده؟
                              برنامه نویس باید در روال وقفه حتما وقفه سراسری را غیر فعال کنه و در آخر روال دوباره وقفه سراسری را فعال کنه . وگرنه با اجرای وقفه های تو در تو 100% - بخاطر شما 99.99 درصد - پشته پر میشه و برنامه هنگ میکنه
                              شما یک سری به تاپیک بزنی 60 درصد سوالات اینه که
                              رو میکرو نویز میفته - واحد فلان درست کار نمیکنه - میکرو تقلبی بوده - کامپایلر کرک شده و اورجینال نیست و ....
                              درحالی که همش خطاهای وقفه و پشته و ... است



                              تازه این هم یادم رفت بگم که اگر داخل وقفه یک وقفه دیگه رخ بده این کلا به نفع برنامه نیست چون فقط از بابت تودر تویی وقفه علاوه بر 10 پالس لازم برای وقفه 10-15 پالس ساعت اضافه تر فقط بخاطر تو در تویی هدر میره
                              تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
                              داشتن عقله زيادتر از دیگر آدم ها است

                              دیدگاه

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