اطلاعیه

Collapse
No announcement yet.

حافظه دار کردن AVR یا مولتی تسکینگ:D

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

    حافظه دار کردن AVR یا مولتی تسکینگ:D

    سلام دوستان.

    میخواستم ببینم میشه با زبان بیسیک و یک میکرو VAR از سری ATMEGA 16 یا 32 یا... جوری برنامه نوشت که اگر در حال اجرای فرمانی بود یه فرمان دیگه بهش رسید بعد از کامل کردن برنامه اول بیاد دومی رو انجام بده.

    مثلا یک ماژول GSM داریم و وصله به میکرو و به یکی از پایه های میکرو فرمان میاد و GSM میره که اس ام اس مربوط به اون رو بفرسته حالا در همین حال یک پایه دیگه فعال میشه که باید برای اونم یک اس ام اس ارسال کنه ولی فعلا ماژول درگیر ارسال اولی هست. حالا میشه فرمان دومی رو SAVE کرد و بعد از اس ام اس اولی این فرمان دومی رو بفرسته؟


    با ARM میشه همچین کاری کرد ؟
    لطفا توضیح بفرمایید.

    #2
    پاسخ : حافظه دار کردن AVR یا مولتی تسکینگ

    از وقفه ها باید استفاده کنی
    و جوری روتین رو بنویسی که داده ها را دریافت کند فقط و در پروسه کاری چک کنه که اگر داده ای بود انجام بده اون کار رو
    موفق باشی
    هميشه به ياد خدا باش !

    دیدگاه


      #3
      پاسخ : حافظه دار کردن AVR یا مولتی تسکینگ

      حافظه دار کردن یا multi tasking؟ اینا چه ربطی به هم داره؟؟ :eek:

      فکر میکنم منظورتون چندنخی یا Multithreading باشه . بله میشه با تایمرها بطوری که روتین وقفه تایمرها میتونه یک یا چند نخ باشه و با حلقه بینهایت در تابع اصلی به صورت اینترلیو(دربین هم) اجرا شوند.
      راه اندازي ماژول 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 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
      انشالله به زودي تاپيک ها به روز رساني خواهد شد،

      دیدگاه


        #4
        پاسخ : حافظه دار کردن AVR یا مولتی تسکینگ

        نوشته اصلی توسط RubeuS
        حافظه دار کردن یا multi tasking؟ اینا چه ربطی به هم داره؟؟ :eek:
        سلام
        خواهش میکنم اینجوری به مخاطب شوک وارد نکنید(اینجوری که شما جواب میدید یه مقدار مخاطب ناراحت میشه و کلا لحن جالبی نیست، فکر کن بهترین دوستت ازت کمک می خواد). وقتی یکی یه سوالی میپرسه میشه ازش فهمید چقدر به بعضی مسائل وارده. ایشون فقط یه مشورت خواست همین. به جای جمله بالا می تونستید این رو بنویسید:

        "احتمالا منظور شما Multithreading هستش چون multi tasking بهش مربوط نمیشه"

        اینجوری مخاطب هم متوجه میشه و هم بدون ناراحتی بهش یاد دادید.
        تشکر

        دیدگاه


          #5
          پاسخ : حافظه دار کردن AVR یا مولتی تسکینگ

          نوشته اصلی توسط rozeh
          سلام
          خواهش میکنم اینجوری به مخاطب شوک وارد نکنید(اینجوری که شما جواب میدید یه مقدار مخاطب ناراحت میشه و کلا لحن جالبی نیست، فکر کن بهترین دوستت ازت کمک می خواد). وقتی یکی یه سوالی میپرسه میشه ازش فهمید چقدر به بعضی مسائل وارده. ایشون فقط یه مشورت خواست همین. به جای جمله بالا می تونستید این رو بنویسید:

          "احتمالا منظور شما Multithreading هستش چون multi tasking بهش مربوط نمیشه"

          اینجوری مخاطب هم متوجه میشه و هم بدون ناراحتی بهش یاد دادید.
          تشکر
          فرقی نمیکنه من با بهترین دوستمم همینجوری میگم .من بیشتر از رو تعجب گفتم. شوک چی؟ فکر نمیکنم شاید شما شوک زده شدید.
          راستی این جمله کاملا غلط است: "احتمالا منظور شما Multithreading هستش چون multi tasking بهش مربوط نمیشه"
          شما اول تعریف 3 عبارت زیر را بخونید بعد دوباره پست قبلی منو نگاه بندازید ببنید شوک زده میشید یا نه :icon_razz: :biggrin::
          1- حافظه دار کردن avr : درست نفهمیدم ولی برداشت من از این کلمات اینه : این که کلا یک کاری کنیم میکرو مقادیری(بایتها) را در خود سیو کند که البته میتواند سیو کند چون خودش حافظه دارد و اگر ما فرض کنیم فلش و sram هیچی باز هم یه eeprom هست اونم میگیریم کمه برامون پس منظور از این عبارات یعنی یه کارت حافظه به میکرو درایو کنیم.

          2- multi tasking : در لغت به معنای چند وظیفگی است و در اصطلاح وقتی یک سیستم عامل قابلیت این را داشته باشد که چند وظیفه را در کنار هم و باهم انجام دهد و جلو ببرد به اون میگیم multi tasking .(که اصلا ربطی به عبارت 1 ندارد)

          3- multi threading : در لغت به معنای چندنخی است و زمانه که برنامه(پراسس) ما این قابلیت را داشته باشد که بتواند به چند درخواست پاسخ دهد و چند خط کد متفاوت را درکنار هم(overlap) و دربین هم(interleave) اجرا کند میگوییم برنامه ما چند نخی است.(که باز هم ربطی به عبارت 1 ندارد ولی من دیدم با عبارت 2 زیاد جابجا میگیرند)
          حالا این جمله که میگید باید من میگفتم رو دوباره بخونید: "احتمالا منظور شما Multithreading هستش چون multi tasking بهش مربوط نمیشه"
          حالا برید دوباره پست قبل من و جوابتون را بخونید.



          راه اندازي ماژول 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 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
          انشالله به زودي تاپيک ها به روز رساني خواهد شد،

          دیدگاه


            #6
            پاسخ : پاسخ : حافظه دار کردن AVR یا مولتی تسکینگ

            نوشته اصلی توسط RubeuS
            فرقی نمیکنه من با بهترین دوستمم همینجوری میگم .من بیشتر از رو تعجب گفتم. شوک چی؟ فکر نمیکنم شاید شما شوک زده شدید.
            راستی این جمله کاملا غلط است: "احتمالا منظور شما Multithreading هستش چون multi tasking بهش مربوط نمیشه"
            شما اول تعریف 3 عبارت زیر را بخونید بعد دوباره پست قبلی منو نگاه بندازید ببنید شوک زده میشید یا نه :icon_razz: :biggrin::
            1- حافظه دار کردن avr : درست نفهمیدم ولی برداشت من از این کلمات اینه : این که کلا یک کاری کنیم میکرو مقادیری(بایتها) را در خود سیو کند که البته میتواند سیو کند چون خودش حافظه دارد و اگر ما فرض کنیم فلش و sram هیچی باز هم یه eeprom هست اونم میگیریم کمه برامون پس منظور از این عبارات یعنی یه کارت حافظه به میکرو درایو کنیم.

            2- multi tasking : در لغت به معنای چند وظیفگی است و در اصطلاح وقتی یک سیستم عامل قابلیت این را داشته باشد که چند وظیفه را در کنار هم و باهم انجام دهد و جلو ببرد به اون میگیم multi tasking .(که اصلا ربطی به عبارت 1 ندارد)

            3- multi threading : در لغت به معنای چندنخی است و زمانه که برنامه(پراسس) ما این قابلیت را داشته باشد که بتواند به چند درخواست پاسخ دهد و چند خط کد متفاوت را درکنار هم(overlap) و دربین هم(interleave) اجرا کند میگوییم برنامه ما چند نخی است.(که باز هم ربطی به عبارت 1 ندارد ولی من دیدم با عبارت 2 زیاد جابجا میگیرند)
            حالا این جمله که میگید باید من میگفتم رو دوباره بخونید: "احتمالا منظور شما Multithreading هستش چون multi tasking بهش مربوط نمیشه"
            حالا برید دوباره پست قبل من و جوابتون را بخونید.
            پس نتیجه میگیریم که شما خودت هم نفهمیدی چی گفتی! :mrgreen:
            وجدانا اگه حرفای پست اولت رو با این پست دومت رو با هم جمع کنیم بدیم میکرو اینجوری میشه===

            دیدگاه


              #7
              پاسخ : حافظه دار کردن AVR یا مولتی تسکینگ

              حالا دعوا نکنین :|
              من شنیدم برای مگا 128 یه سیستم عامل هست ... کسی میدوننه چیه؟

              دیدگاه


                #8
                پاسخ : پاسخ : حافظه دار کردن AVR یا مولتی تسکینگ

                نوشته اصلی توسط rozeh
                پس نتیجه میگیریم که شما خودت هم نفهمیدی چی گفتی! :mrgreen:
                وجدانا اگه حرفای پست اولت رو با این پست دومت رو با هم جمع کنیم بدیم میکرو اینجوری میشه===
                پست اول که دادم :
                حافظه دار کردن یا multi tasking؟ اینا چه ربطی به هم داره؟؟

                فکر میکنم منظورتون چندنخی یا Multithreading باشه . بله میشه با تایمرها بطوری که روتین وقفه تایمرها میتونه یک یا چند نخ باشه و با حلقه بینهایت در تابع اصلی به صورت اینترلیو(دربین هم) اجرا شوند.
                جمله سوالی 1:
                حافظه دار کردن یا multi tasking؟
                علت سوال : دقیقا اینها در موضوع تاپیک قید شده بود و با هم مقایسه شده بود
                ///////////////////////////////////////////////////////////////////////////////////////////////////
                جمله سوالی 2:
                اینا چه ربطی به هم داره؟؟ :eek:
                علت سوال: بیشتر از روی تعجب بود چون اصلا این دو عبارت به هم ربط ندارد. که علتش هم برید تو پست بعدی من ببنید:
                1- حافظه دار کردن avr : درست نفهمیدم ولی برداشت من از این کلمات اینه : این که کلا یک کاری کنیم میکرو مقادیری(بایتها) را در خود سیو کند که البته میتواند سیو کند چون خودش حافظه دارد و اگر ما فرض کنیم فلش و sram هیچی باز هم یه eeprom هست اونم میگیریم کمه برامون پس منظور از این عبارات یعنی یه کارت حافظه به میکرو درایو کنیم.

                2- multi tasking : در لغت به معنای چند وظیفگی است و در اصطلاح وقتی یک سیستم عامل قابلیت این را داشته باشد که چند وظیفه را در کنار هم و باهم انجام دهد و جلو ببرد به اون میگیم multi tasking .(که اصلا ربطی به عبارت 1 ندارد)
                ////////////////////////////////////////////////////////////////////////////////////////////////////////
                جمله 3:
                فکر میکنم منظورتون چندنخی یا Multithreading باشه .
                دلیل گفتن: راهنمایی بوده و بر اساس پست اولشون بیشتر فکر میکنم منظورشون این بوده( رجوع شود به پست بعدیم دقیقا قسمت زیر )
                3- multi threading : در لغت به معنای چندنخی است و زمانه که برنامه(پراسس) ما این قابلیت را داشته باشد که بتواند به چند درخواست پاسخ دهد و چند خط کد متفاوت را درکنار هم(overlap) و دربین هم(interleave) اجرا کند میگوییم برنامه ما چند نخی است.(که باز هم ربطی به عبارت 1 ندارد ولی من دیدم با عبارت 2 زیاد جابجا میگیرند
                ////////////////////////////////////////////////////////////////////////////////////////////////
                جمله 4:
                بله میشه با تایمرها بطوری که روتین وقفه تایمرها میتونه یک یا چند نخ باشه و با حلقه بینهایت در تابع اصلی به صورت اینترلیو(دربین هم) اجرا شوند.
                دلیل گفتن: راهنمایی و دادن سرنخ به ایشون برای تحقیق بیشتر توسط خودشون.



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

                من فقط به قصد راهنمایی چیزهایی که میدونم رو قرار میدم و هیچوقت در رابطه با چیزهایی که نمیدونم حرفی نمیزنم . چون به این اعتقاد دارم بهتره هر کس به جای اینکه به فکر افزایش پست الکی باشه ، یا چیزی نگه یا اگه میگه علمی باشه. اینجوری بار علمی انجمن هم افزایش پیدا میکنه(اینجوری آدم میاد اینجا حداقل 4 تا چیز مفید یاد میگیره میره)
                درضمن من قصد توهین به کسی هم ندارم و اینچیزها که گفتم هم اول سعی میکنم خودم بهش پایبند باشم.
                راه اندازي ماژول 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
                  پاسخ : حافظه دار کردن AVR یا مولتی تسکینگ

                  نوشته اصلی توسط AMITT
                  حالا دعوا نکنین :|
                  من شنیدم برای مگا 128 یه سیستم عامل هست ... کسی میدوننه چیه؟
                  مگه چاله میدونه؟

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

                  سیستم عامل نیاز به یک پردازنده ای دارد که سیستم عامل را ساپورت کنه .که حداقل اون، fetch و execute کردن در دو مد کاربر(user) و سرپرست ( kernel) می باشد و جلو گیری کردن از اجرای بعضی دستورات در مد یوزر و جلوگیری دسترسی به قسمت هایی از حافظه،
                  که البته پردازنده avr این قابلیت ها را ندارد .

                  نیازی هم نیست سیستم عامل داشته باشه چون سیستم عامل بیشتر در سیستم های interactive که با کاربر سرو کار دارند ،نیاز است. از میکرو برای کارهای ساده در مدارهایی که از قبل شما کارشون رو تعیین میکنید و تک منظوره هستند استفاده میشود.
                  راه اندازي ماژول 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 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
                  انشالله به زودي تاپيک ها به روز رساني خواهد شد،

                  دیدگاه


                    #10
                    پاسخ : حافظه دار کردن AVR یا مولتی تسکینگ

                    خدا می دونه می نمی خواستم هیچکی رو ناراحت کنم چه رسد به اولاد پیغمبر که براشون ارادت خواصی قائلم. من فقط شوخی کردم. شکلک که گذاشتم. :sad:

                    دیدگاه


                      #11
                      پاسخ : حافظه دار کردن AVR یا مولتی تسکینگ

                      دوست عزیز نکنه منظور شما همون استفاده از interrupt هستش؟!!!

                      دیدگاه


                        #12
                        پاسخ : حافظه دار کردن AVR یا مولتی تسکینگ

                        چقدر بحث چالشی شد.

                        اگر کژتابی ای توی گفتار اول بوده عذر میخوام ولی سعی کردم با یه مثال اصل مطلب رو برسونم.

                        با وقفه که میدونم نمیشه چون وسط اجرای برنامه اولی اگر وقفه بیاد میره دومی رو انجام میده.

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

                        جناب rozeh گرامی لطفا اگر اطلاعاتی دارید یا مرجعی برای یادگیری بفرمایید تا برم دنبالش.

                        توضیحات دوستان یکم گنگ بود. من تا حدی با بیسیک آشنایی دارم.

                        دیدگاه


                          #13
                          پاسخ : حافظه دار کردن AVR یا مولتی تسکینگ

                          نوشته اصلی توسط armay
                          دوست عزیز نکنه منظور شما همون استفاده از interrupt هستش؟!!!
                          بله منظورم همونه. وقفه ترجمه فارسیه interrupt هست
                          راه اندازي ماژول 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 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
                          انشالله به زودي تاپيک ها به روز رساني خواهد شد،

                          دیدگاه


                            #14
                            پاسخ : حافظه دار کردن AVR یا مولتی تسکینگ

                            سلام.
                            چه بحث های جالبی میکنید شما
                            این تاپیک رو دیدید؟
                            http://www.eca.ir/forum2/index.php?topic=41965.0
                            تولید کننده انواع تابلو فرمان آسانسور با تکنولوژی روز دنیا

                            دیدگاه


                              #15
                              پاسخ : حافظه دار کردن AVR یا مولتی تسکینگ

                              نوشته اصلی توسط sanup2006
                              چقدر بحث چالشی شد.

                              اگر کژتابی ای توی گفتار اول بوده عذر میخوام ولی سعی کردم با یه مثال اصل مطلب رو برسونم.

                              با وقفه که میدونم نمیشه چون وسط اجرای برنامه اولی اگر وقفه بیاد میره دومی رو انجام میده.

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

                              جناب rozeh گرامی لطفا اگر اطلاعاتی دارید یا مرجعی برای یادگیری بفرمایید تا برم دنبالش.

                              توضیحات دوستان یکم گنگ بود. من تا حدی با بیسیک آشنایی دارم.
                              من راستش بیسیک کار نکردم ولی یه توضیحات و سرنخی میدم که شما الگوریتم تو ذهنتون بیاد و با هر زبانی خواستید پیاده سازی کنید:

                              شما میتونید اصلا از تایمر هم استفاده نکنی و مولتی ترد هم نداشته باشه .

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

                              به عنوان مثال:
                              همیشه باید شمارنده چک شود اگر که اگر مقدارش صفر بود پردازنده منتظر باشد (busy wating ) .
                              اگر فرمانی اومد در روتین وقفه یکی به شمارنده (که باید از نوع سراسری باشد) اضافه شود و متغییرهای مربوط به اون فرمان داخل اون بافر قرار گیرد( تو سی می تونید شما استراکچر تعریف کنید و آرایه ای از این استراکچرها میتونه بافر ما را بسازه که میشه با یک اشارگر بهش راحت دسترسی داشت(البته برای پیاده سازی بافر میشه کارهای بهتری هم کرد(لیست پیوندی) که در بحث ما نمیگنجه))
                              خوب حالا وقتی پردازنده از روتین وقفه خارج شد دیگه مقدار شمارنده 0 نیست و میتونه با اطلاعاتی که از بافر میگیره دستورات را اعمال کنه.
                              اگر یهو 100 تا درخواست هم اومد شمارنده میشه 100 و به ترتیبی که اومدن بشون رسیدگی میشه.


                              البته خیلی کارهای دیگه هم میشه کرد و این نظر شخصیه منه که به راحتی هم میتونم تو سی پیاده سازیش کنم. حالا شما اگر مطلب اصلی رو گرفتید میتونید با هر زبانی که کار میکنید پیاده سازی کنید.





                              راه اندازي ماژول 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 سفارش راه انداز ماژول هاي مختلف توسط اعضاي انجمن
                              انشالله به زودي تاپيک ها به روز رساني خواهد شد،

                              دیدگاه

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