اطلاعیه

Collapse
No announcement yet.

اجرای چند برنامه

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

    اجرای چند برنامه

    با سلام . خسته نباشید
    دوستان کی میدونه چطوری باید یه برنامه ای بنویسیم که همزمان دو قسمت از برنامه با هم اجرا بشن؟
    یعنی برنامه داخل یه حلقه باشه و از یه طرف دیگه یه برنامه دیگه در حال اجرا باشه . با بسکام.
    میخوام یه برنامه بنویسم که دستورات داخل یه حلقه رو اجرا کنه و مثلا بعد از یه مدت زمانی از حلقه خارج بشه.
    ممنون میشم جواب بدبد

    #2
    پاسخ : اجرای چند برنامه

    نوشته اصلی توسط mansoor0001 نمایش پست ها
    با سلام . خسته نباشید
    دوستان کی میدونه چطوری باید یه برنامه ای بنویسیم که همزمان دو قسمت از برنامه با هم اجرا بشن؟
    یعنی برنامه داخل یه حلقه باشه و از یه طرف دیگه یه برنامه دیگه در حال اجرا باشه . با بسکام.
    میخوام یه برنامه بنویسم که دستورات داخل یه حلقه رو اجرا کنه و مثلا بعد از یه مدت زمانی از حلقه خارج بشه.
    ممنون میشم جواب بدبد
    سلام پردازنده هایه avr تک هسته ایند و امکان اجرایه دو قسمت از برنامه بصورت همزمتن وجود نداره
    چیزی که به ذهن من میرسه اینه که باید کلک برنامه نویسی بزنی مثلا فرض کن میخای یه ورودی رو مدام چک کنی که هر موقع کلید زده بشه یک led رو روشن کنی و همزمان یک محاسبه یا پردازش دیگه رو هم انجام بدی در این صورت شما برنامه پردازشی حلقتو مینویسی برایه کلید از وقفه استفاده میکنی که هرموقع وقفه خارجی اومد بره به لیبل و led رو روشن کنه
    اگه دو تا پردازش همزمان دازی میتونی دوتاشو تو یک حلقه بنویسی و در پایان حلقه خروجیاتو آپدیت کنی فقط تویه این حالت باید فرکانس کلاکت رو بالا ببری چون مثلا اگه حجم دو پردازش یکی باشه سرعت پردازش نصف میشه
    برایه حلقه هایه طولانی و برنامه سنگین یا باید از پردازنده هایه چند هسته ای مثل arm کمک بگیری که هم هزینه زیاد تر و زمانی برایه یادگیری باید بزاری یا باید از دو تا avr برایه دو تا پردازش مجزا استفاده کنی و اگر نیاز شد با هم شبکه کنیشون
    عجب روزگاریست...! هیچکس به سکوت آدم نمیرسد،همه منتظرند به داد آدم برسند...!

    دیدگاه


      #3
      پاسخ : اجرای چند برنامه

      ممنون مهندس. به نظر شما میشه از تایمر استفاده کنم؟
      مثلا هر وقت که کلیدی زده شد تایمر شروع به شمارش کنه و وقتی که تایمر تا 10 شمارش کرد برنامه از حلقه خارج بشه.
      من کار با تایمرها رو بلد نیستم.با بسکان
      ممنون

      دیدگاه


        #4
        پاسخ : اجرای چند برنامه

        نوشته اصلی توسط mansoor0001 نمایش پست ها
        ممنون مهندس. به نظر شما میشه از تایمر استفاده کنم؟
        مثلا هر وقت که کلیدی زده شد تایمر شروع به شمارش کنه و وقتی که تایمر تا 10 شمارش کرد برنامه از حلقه خارج بشه.
        من کار با تایمرها رو بلد نیستم.با بسکان
        ممنون
        با سلام دوست عزیز لطفا دقیقا کاری که میخواین انجام بدین رو شفاف بیان کنید تا بنده و سایر دوستان بتونیم راحت تر راهنمایی کنیم
        درصورت کلی بله عملکرد تایمر مجزا هست و در زمانی که cpu مشغول کاری هست تایمر هم کار خودش رو انجام میده و مستقل هست بطور مثال وقتی cpu داخل یک حلقه هست و کار خاصی رو انجام میده از اون طرف هم تایمر میتونه روشن باشه و بارسیدن به یک مقدار از پیش تعیین شده وقفه صادر کنه و به زیربرنامه دیگه پرش کنه یا هرکار دیگه

        دیدگاه


          #5
          پاسخ : اجرای چند برنامه

          به نظر من هر تعداد کانتر که داری رو با وقفه سر ریزاشون فعال کن و برنامه هایی که میخای همزمان انجام بشن رو تقسیم کن به این وقفه ها و هرکدومو بده به یکیشون. فرکانس کانترارو هم بزار رو همون فرکانس کاری میکرو(تقسیم فرکانس برابر 1)
          حلقه تابع مین برنامه هم در نظر بگیر.
          مثلن برای مگا 32 که 3تا تایمر داره میتونی 4 تا برنامه مجزا بنویسی که انقد سرعت میکرو بالاست اینطور به نظر میاد که 4 برنامه مجزا همزمان داره اجرا میشه

          دیدگاه


            #6
            پاسخ : اجرای چند برنامه

            سلام
            به این کار میگن مولتی تسکینگ من درباره نحوه راه اندازیش اطلاع ندارم ولی کاربردش همینه که شما میخوای انجام بدی
            این تایپیک توضیحاتی داده:
            با سلام اساتید محترم در مورد پیاده سازی سیستم عامل برای multi tasking) avr) اطلاعاتی در اختیار دارند که بنده رو راهنمائی بفرمایند خودم هیچ گونه اطلاعاتی در این زمینه متاسفانه ندارم :redface: ممنون
            سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

            دیدگاه


              #7
              پاسخ : اجرای چند برنامه

              ممنون از جواب هاتون. من دقیقا میخوام برنامه ای بنویسم که مثلا cpu در داخل یک حلقه کار خاصی رو انجام میده و بازدن کلیدی تایمر شروع به شمارش کنه و مثلا بعد از گذشت 10 ثانیه cpu از اون حلقه خارج بشه و دستورات دیگه ای رو اجرا کنه

              دیدگاه


                #8
                پاسخ : اجرای چند برنامه

                درصورت کلی بله عملکرد تایمر مجزا هست و در زمانی که cpu مشغول کاری هست تایمر هم کار خودش رو انجام میده و مستقل هست بطور مثال وقتی cpu داخل یک حلقه هست و کار خاصی رو انجام میده از اون طرف هم تایمر میتونه روشن باشه و بارسیدن به یک مقدار از پیش تعیین شده وقفه صادر کنه و به زیربرنامه دیگه پرش کنه یا هرکار دیگه[/QUOTE]


                سلام اره من دقیقا همینو میخوام. یعنی وقتی که cpu در داخل یک حلقه هست. تایمر هم مجزا از برنامه کار کنه

                دیدگاه


                  #9
                  پاسخ : اجرای چند برنامه

                  دوست گرامی
                  در پردازنده های چند هسته ای سیستم عامل مطابق یک الگوریتم بسیار دقیق باز محاسباتی را بین هسته های مختلف تقسیم میکند ولی در پردازنده های ساده روال اجرای چند برنامه هم زمان به صورت زیر میباشد :
                  شکل کلی اجرا بر پایه تقسیم زمانی استوار میباشد به این معنی که پردازنده اصلی t میلی ثانیه برنامه ( Task ) یک و t میلی ثانیه برنامه دو را اجرا میکند و سپس دوباره این روال تکرار میشود ....
                  در ظاهر سوویچ بین دو برنامه بسیار آسان به نظر میرسد ولی باید به خاطر داشته باشیم در ضمن انجام این کار مسائل پیچیده ای ممکن است به وجود آید مثلا مقدار متغیر ها باید ذخیره گردد و همچنین ,وضعیت stack pointer برای اجراهای تو در تو زیر روال در نظر گرفته شود ( گاهی لازم است برنامه نویس از دو stack pointer مجزا برای هر برنامه استفاده کند ....همچنین گاهی دو برنامه برای دسترسی به بخش مشترکی از سیستم تلاش میکنند که در این مورد لازم است پیامهایی برای بررسی ازاد بودن منابع بین دو برنامه ردو بدل شود که لاجرم از ساخت متغیرهای semaphore میباشیم
                  در نخستین پردازندهای x86 کنترل مولتی تسک توسط Global Descriptor Table صورت میگرفت ولی برای پردازنده های ساده مجبور به ساخت جدولی مشابه میباشیم
                  پاره ای از رویکردهای دفاعی

                  دیدگاه


                    #10
                    پاسخ : اجرای چند برنامه

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

                    دیدگاه


                      #11
                      پاسخ : اجرای چند برنامه

                      نوشته اصلی توسط reza.rezaei نمایش پست ها
                      سلام دوستان بنده هم دقیقا همین مشکل رو دارم
                      میخوام دو تا برنامه رو همزمان توی بسکام اجرا کنم
                      برنامه اول سرعت گرفته میشه و توی یک متغیر ریخته میشه ک این کار باستی مدام صورت بگیره تا متغیر سرعت آپدت بمونه...
                      برنامه دوم شرط هایی هستند ک برای همون سرعت نوشته شده اند و اون هم مدام باید چک بشه ک در صورت وجود یکی از شرط ها کاری صورت بگیره...
                      دوست عزیز
                      اگر در برنامه اول فقط متغیر سرعت خوانده میشود نیاز به مولتی تسک و .... نمیباشد و تنها کافی است در سرریز یکی از تایمرها وفقفه ای تعریف کنید که در فاصله های زمانی ثابت متغییر سرعت را به روز رسانی نماید
                      پاره ای از رویکردهای دفاعی

                      دیدگاه

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