اطلاعیه

Collapse
No announcement yet.

سوال در مورد مولتی تسکینگ

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

    سوال در مورد مولتی تسکینگ

    سلام دوستان می خواستم پردازش موازی خیلی کوچیک با avr درست کنم
    فقط چند مشکل هنگامی که بخوام بعد از رفتن برنامه به وقفه تایمر چطور تعیین کنم
    که برنامه از کجا ادامه پیدا کنه چون می خوام دستی اینکار رو بکنم؟
    جدیدترین ویرایش توسط !M!; ۱۴:۲۹ ۱۳۹۶/۱۱/۲۴.
    -0-

    #2
    پاسخ : سوال در مورد چند ریجستر

    چطور مقدار پشته رو بخونم و پروگرم کانتر رو تغییر بدم؟
    -0-

    دیدگاه


      #3
      پاسخ : سوال در مورد چند ریجستر

      نوشته اصلی توسط !M! نمایش پست ها
      چطور مقدار پشته رو بخونم و پروگرم کانتر رو تغییر بدم؟
      سلام،
      نه نوع میکروت رو گفتی
      و نه IDE و زبان کد نویسیت رو!!
      همه رجیسترها و سخت افزارهای توی میکرو یه آدرس منحصر به فرد دارند!
      اگه داری اسمبلی مینویسی که همه چی دست خودته!
      و اگر نه:
      از دیتا شیت میکروت آدرس اشاره گر پشته و آدرس پروگرام کانتر رو نگاه کن
      و با آدرسهاشون کار کن!
      ◙◙◙◙◙ میخوام به دوستان یه کتاب معرفی کنم! وقت کردید، بخونید - اسمش هست قرآن، سال نشر 10، نویسنده: خدا . ◙◙◙◙◙

      دیدگاه


        #4
        پاسخ : سوال در مورد چند ریجستر

        از کدویژن استفاده می کنم
        -0-

        دیدگاه


          #5
          پاسخ : سوال در مورد چند ریجستر

          درضمن چطور میشه هنگامی که یه تابع delay میدیم تویه اون لحظه کد های دیگه ای اجرا بشن
          ؟
          -0-

          دیدگاه


            #6
            پاسخ : سوال در مورد چند ریجستر

            دوستان لطفا جواب بدید چطور میشه ادرس یک خط و کپی کرد و توی sram نگه داشت
            تا در وقت مورد نیاز به برنامه بگیم به اون پرش کنه ؟ در اصل می خوام هر موقع وقفه رخ داد ادرس اون خط رو جایی ذخیره کنم و ازش استفاده کنم(می خوام مولتی تسکینگ انجام بدم)
            -0-

            دیدگاه


              #7
              پاسخ : سوال در مورد چند ریجستر

              نوشته اصلی توسط !M! نمایش پست ها
              درضمن چطور میشه هنگامی که یه تابع delay میدیم تویه اون لحظه کد های دیگه ای اجرا بشن
              اگر بخوای پردازش موازی انجام بدی که اصلا نباید از delay استفاده کنی.همه چیز با همون تایمر باید انجام بشه.
              الهم صل علی محمد و آل محمد و عجل فرجهم
              www.adaksell.com

              دیدگاه


                #8
                پاسخ : سوال در مورد مولتی تسکینگ

                خوب چطور ادرس خط ها رو ذخیره کنم تویه یه ارایه؟
                -0-

                دیدگاه


                  #9
                  پاسخ : سوال در مورد مولتی تسکینگ

                  نوشته اصلی توسط !M! نمایش پست ها
                  خوب چطور ادرس خط ها رو ذخیره کنم تویه یه ارایه؟
                  نیازی به این کار نیست . وقتی به بردار وقفه پرش میشه خود میکرو خود به خود این کارو میکنه.
                  الهم صل علی محمد و آل محمد و عجل فرجهم
                  www.adaksell.com

                  دیدگاه


                    #10
                    پاسخ : سوال در مورد مولتی تسکینگ

                    دوست عزیز ما قراره مثلا 8 برنامه رو همزمان اجرا کنیم حالا اگه وقفه هر 10 میلی ثانیه رخ بده هر برنامه یا تابع مقداری از خط هاش اجرا میشن و برای دفعه بعد که بخواهیم
                    ادامه کار مون رو انجام بدیم نمیشه پس باید ادرس اخرین خط در هر تابع رو تویه یک ارایه ذخیره کنیم و مشکل اساسی من همین جاست چطور باید ادرس ها رو تویه ارایه ذخیره کرد و بعد به پروگرام کانتر داد؟
                    -0-

                    دیدگاه


                      #11
                      پاسخ : سوال در مورد مولتی تسکینگ

                      ببینید هیچ میکرو کنترلری (مخصوصا AVR ) قادر به اجرای چند پردازش به طور همزمان نیست . این قدرت شما در برنامه نویسی هست که باعث میشه این طور به نظر برسه که چند پردازش همزمان داره اجرا میشه . حتی اگر در وسط اجرای یک برنامه هر 100 میکرو ثانیه وقفه رخ بده بازم میکرو کنترلر آدرس اجرای برنامه رو در stackذخیره میکنه و وقتی وقفه تمام شد دوباره از جای قبلی شروع میکنه به اجرای ادامه برنامه . و نیازی نیست شما آدرس ها رو ذخیره کنید .
                      الهم صل علی محمد و آل محمد و عجل فرجهم
                      www.adaksell.com

                      دیدگاه


                        #12
                        پاسخ : سوال در مورد مولتی تسکینگ

                        هر وقت وارد سرویس اینتراپت میشی پروگزام کانتر و یه تعداد ریجستر دیگه پوش میشه تو استک . پروگرام کانتر اول پوش میشه واتوماتیک هم پوش میشه دست خودت نیست. هر وقت میخوای خارج بشی از اینتراپ همه ریجستر ها به ترتیبی که پوش شدن طبق برنامه پاپ میشن ولی دوتا پاپ اخری مریوط میشه پروگرام کانترکه اتوماتیک پاپ میشه .
                        حالا فرض کن وارد اینتراپت شدی 5 تا ریجستر رو خودت پوش کردی پس با پروگرام کانتر میشه 7 تا پوش. حالا یک ادرس داری که میخوای بعد اینتراپ بپری اونجا . چی کار میکنی دقیقا قبل از خارج شدن از اینتراپت 5 تا پاپ که مربوط به برنامت میشه رو انجام میدی بعد دوتا پاپ الکی هم میگنی بعد اون ادرس دلخواه را پوش میکنی و بعد رت ای رو اجرا میکنی و میری به ادرس دلخواه. این روش پریدن به ادرس دلخوا
                        اما حالا اون دوتا پاپ الکی که گفتم میکنی اگر اونو ذخیره کنی و دفعه به جای ادرس دلخواه پوش کنی مولتی تسک اتفاق میافته. که 2زار نمیارزه.
                        جدیدترین ویرایش توسط kamy007; ۰۰:۰۶ ۱۳۹۶/۱۱/۲۶.

                        دیدگاه


                          #13
                          پاسخ : سوال در مورد مولتی تسکینگ

                          نوشته اصلی توسط kamy007 نمایش پست ها
                          هر وقت وارد سرویس اینتراپت میشی پروگزام کانتر و یه تعداد ریجستر دیگه پوش میشه تو استک . پروگرام کانتر اول پوش میشه واتوماتیک هم پوش میشه دست خودت نیست. هر وقت میخوای خارج بشی از اینتراپ همه ریجستر ها به ترتیبی که پوش شدن طبق برنامه پاپ میشن ولی دوتا پاپ اخری مریوط میشه پروگرام کانترکه اتوماتیک پاپ میشه .
                          حالا فرض کن وارد اینتراپت شدی 5 تا ریجستر رو خودت پوش کردی پس با پروگرام کانتر میشه 7 تا پوش. حالا یک ادرس داری که میخوای بعد اینتراپ بپری اونجا . چی کار میکنی دقیقا قبل از خارج شدن از اینتراپت 5 تا پاپ که مربوط به برنامت میشه رو انجام میدی بعد دوتا پاپ الکی هم میگنی بعد اون ادرس دلخواه را پوش میکنی و بعد رت ای رو اجرا میکنی و میری به ادرس دلخواه. این روش پریدن به ادرس دلخوا
                          اما حالا اون دوتا پاپ الکی که گفتم میکنی اگر اونو ذخیره کنی و دفعه به جای ادرس دلخواه پوش کنی مولتی تسک اتفاق میافته. که 2زار نمیارزه.
                          خیلی ممنون از پاسخ کاملتون فقط اگر نمونه کد بزارید دیگه خیلی عالیه!
                          -0-

                          دیدگاه


                            #14
                            پاسخ : سوال در مورد مولتی تسکینگ

                            نوشته اصلی توسط !M! نمایش پست ها
                            خیلی ممنون از پاسخ کاملتون فقط اگر نمونه کد بزارید دیگه خیلی عالیه!
                            ;, زیاد کار سختی نیست. داری با c ,یا بسکام مینویسی فرقی نداره . تو سیمولیشن نگاه کن وقتی وارد اینتراپت میشی ریجستر sp استک پوینتر چند رقم زیاد میشه حالا به تعداد همون رقم باید پاپ کنی و همشو ذخیره کنی به همون تعداد هم باید ذخیره از اینتراپت قبلی را پوش کنی و بعد بدون هیچ دستوری سریع رت ای اجرا بشه .
                            اگر فکر کردی فقط باید پروگرام کانتر رو داشته باشی تا مولتی تسک کنی سخت در اشتباهی. هر بار که میری تو اینتراپت تایمر باید همه ریجسترهای پوش شده را پاپ کرده و ذخیره کنی و ذخیره های سری قبلی را پوش کنی . حالا یه تحقیق کن ببین برای فقط سه تا تسک چقدر باید رم اختصاص بدی. و چرا باید همه ریجسترها رو ذخیره کنی

                            دیدگاه

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