اطلاعیه

Collapse
No announcement yet.

تداخل در عملکر تایمر در هنگام فعالیت همزمان اینتراپت خارجی و تایمر(؟؟؟)

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

    تداخل در عملکر تایمر در هنگام فعالیت همزمان اینتراپت خارجی و تایمر(؟؟؟)

    با سلام خدمت مهندسین
    یک سوالی برام پیش اومده،من توی پروژهام وقتی دارم مثلا از اینتراپت خارجی و زیر روال وقفش بعنوان شمارنده دارم استفاده می کنم و از تایمر های 0 و 1 و 2 و 3 هم دارم استفاده می کنم(به همراه زیر روال وقفه هاشون)در این صورت اگر در زیر روال وقفه انتراپت تاخیر های ms ایجاد نشده باشه،خب همه تایمر ها و وقفه ها درست کار میکنن

    اما وقتی توی زیر روال وقفه اینتراپت عملیات یا تاخیر های خاصی(درحد ms) ایجاد می کنیم مستقیم روی عملکرد شمارش تایمر تاثیر میزاره و شمارش مختل میشه
    این عملیات و تاخیر ها اگر در حد us باشن تاثیر آنچنانی در تایمر ندارن

    سوال من اینجاست که چرا اینجوری میشه؟آیا کلاک تایمر و عملیات اینتراپت یکیه؟مگ کلاک تایمر از کلاک میکرو مجزا نیست؟عملیات اینتراپت چه درگیری زمانی با تایمر داره؟

    ممنون میشم برام رفع شبهه کنین
    یا علی

    #2
    پاسخ : تداخل در عملکر تایمر در هنگام فعالیت همزمان اینتراپت خارجی و تایمر(؟؟؟)

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

    دیدگاه


      #3
      پاسخ : تداخل در عملکر تایمر در هنگام فعالیت همزمان اینتراپت خارجی و تایمر(؟؟؟)

      یکی از مشکلاتی که پیش میاد همینه که cpu کار خودشو رها می کنه می ره اونو پاسخ می ده اخه بدبختب هم اینجاس که هیچ پینی سرعت اینتراپت رو نداره

      دیدگاه


        #4
        پاسخ : تداخل در عملکر تایمر در هنگام فعالیت همزمان اینتراپت خارجی و تایمر(؟؟؟)

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

        دیدگاه


          #5
          پاسخ : تداخل در عملکر تایمر در هنگام فعالیت همزمان اینتراپت خارجی و تایمر(؟؟؟)

          نوشته اصلی توسط ICE-ELEC
          یکی از مشکلاتی که پیش میاد همینه که cpu کار خودشو رها می کنه می ره اونو پاسخ می ده اخه بدبختب هم اینجاس که هیچ پینی سرعت اینتراپت رو نداره
          دقیقا همینطوره،اما توی یسری پروژه ها آدم لازم داره تو همون زیر روال وقفه اینتراپت یسری عملیات و تاخیرارو اجرا کنه،که تو شمارش تایمر میکرو تداخل ایجاد میکنه متاسفانه
          راه اصولیش چی میتونه باشه؟راهش اینه که کلا توی اینتراپت تاخیر های ms ایجاد نکنیم کلا؟؟
          ممنون

          دیدگاه


            #6
            پاسخ : تداخل در عملکر تایمر در هنگام فعالیت همزمان اینتراپت خارجی و تایمر(؟؟؟)

            نوشته اصلی توسط parvar
            چرا اینطوریه؟مگ ما نمیایم فرکانس تایمر رو مجزا تعیین نمی کنیم؟
            میکروکنترلر نمیتونه تو 1سیکل چند دستور رو اجرا کنه.دستوراتی که توی اینتراپت تایمر نوشته و اجرا میشه جزئی از برنامه اصلی شماست ولی با اولویت زمانی مشخص.
            نوشته اصلی توسط parvar
            دقیقا همینطوره،اما توی یسری پروژه ها آدم لازم داره تو همون زیر روال وقفه اینتراپت یسری عملیات و تاخیرارو اجرا کنه،که تو شمارش تایمر میکرو تداخل ایجاد میکنه متاسفانه
            لازم نیست توی اینتراپت بمونی . اگه نیازه چند اینتراپت داشته باشی بهتره برنامه طولانی تو اینتراپت ننویسی و دستوراتی توش بکار ببری که فقط شما رو از وقوع اینتراپت باخبر کنند .

            دیدگاه


              #7
              پاسخ : تداخل در عملکر تایمر در هنگام فعالیت همزمان اینتراپت خارجی و تایمر(؟؟؟)

              نوشته اصلی توسط saeiddiod
              میکروکنترلر نمیتونه تو 1سیکل چند دستور رو اجرا کنه.دستوراتی که توی اینتراپت تایمر نوشته و اجرا میشه جزئی از برنامه اصلی شماست ولی با اولویت زمانی مشخص.

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

              دیدگاه


                #8
                پاسخ : تداخل در عملکر تایمر در هنگام فعالیت همزمان اینتراپت خارجی و تایمر(؟؟؟)

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

                دیدگاه


                  #9
                  پاسخ : تداخل در عملکر تایمر در هنگام فعالیت همزمان اینتراپت خارجی و تایمر(؟؟؟)

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

                  دیدگاه


                    #10
                    پاسخ : تداخل در عملکر تایمر در هنگام فعالیت همزمان اینتراپت خارجی و تایمر(؟؟؟)

                    نوشته اصلی توسط parvar
                    دوم اینکه مطمئنین از این موضوع؟
                    100%
                    نوشته اصلی توسط parvar
                    پس تنها کلاک شمردن تایمر از برنامه اصلی جداست و برنامه ای که توی روال وقفه تایمر یا اینتراپت نوشته میشه با برنامه ای اصلی توی یک اولویت و یکین،این درسته؟
                    بله . کاملا درسته
                    نوشته اصلی توسط parvar
                    خود اتمل هم گفته؟منظورم اینه راهی یا فیوز بیت خاصی که نیست
                    اتمل گفته اکثر دستورالعمل ها تو 1سیکل ماشین اجرا میشن (دستورات روتین وقفه و دستورات داخل برنامه همه یکی هستن).
                    همچین فیوزبیتی نداریم.
                    نوشته اصلی توسط parvar
                    فکر کنم قطعا این مورد تو آرم اینطور نیست،درسته؟
                    روش خوندن دستورات تو میکروکنترلرها (AVR , XMEGA , ARM) بصورت خطی هست یعنی دستورات خط به خط خونده میشن و اصلا حالت خوندن بصورت موازی وجود نداره که شامل معماری ARM هم میشه.

                    دیدگاه


                      #11
                      پاسخ : تداخل در عملکر تایمر در هنگام فعالیت همزمان اینتراپت خارجی و تایمر(؟؟؟)

                      سلام خدمت دوستان
                      در رابطه با حافظه ی stack میکرو و رابطه اش با اینتراپت ها و توابع سوال داشتم
                      اگه ما بیایم توی وقفه ی تایمر یک ، وقفه ی سراسری رو فعال کنیم، و تایمر بعدی اینتراپت بزنه و توش چند تا تابع صدا زده بشه، همه ی این مراحل توی حافظه ی stack ثبت میشه؟
                      یعنی اگه توابع داخل اینتراپت دو تموم شد بر می گرده و حالا کارای تایمر 1 رو انجام می ده و بعدش بر میگرده به کار اصلیش؟
                      (البته با برنامه نویسی درست همچین مشکلی پیش نمیاد)
                      ممنون
                      همیشه کامل توضیح بدهیم تا جواب کامل بگیریم.
                      لطفا برای تشکر روی دکمه تشکر بزنید و بخاطر این پست نزنید که تایپیک شلوغ نشود
                      تایپیک های من:
                      حل تمام مشکلات atmega128a (eca.ir)
                      آموزش کار با سایت (eca.ir)

                      دیدگاه


                        #12
                        پاسخ : تداخل در عملکر تایمر در هنگام فعالیت همزمان اینتراپت خارجی و تایمر(؟؟؟)

                        نوشته اصلی توسط electromohammad نمایش پست ها
                        سلام خدمت دوستان
                        در رابطه با حافظه ی stack میکرو و رابطه اش با اینتراپت ها و توابع سوال داشتم
                        اگه ما بیایم توی وقفه ی تایمر یک ، وقفه ی سراسری رو فعال کنیم، و تایمر بعدی اینتراپت بزنه و توش چند تا تابع صدا زده بشه، همه ی این مراحل توی حافظه ی stack ثبت میشه؟
                        یعنی اگه توابع داخل اینتراپت دو تموم شد بر می گرده و حالا کارای تایمر 1 رو انجام می ده و بعدش بر میگرده به کار اصلیش؟
                        (البته با برنامه نویسی درست همچین مشکلی پیش نمیاد)
                        ممنون
                        با سلام
                        اینتراپتها دارای اولویت بندی هستند. اگر چند اینتراپت با هم اتفاق بیفتد اول آنکه دارای اولویت بالاتری است سرویس داده میشود. شما اگر بخواهید در طی سرویس یک اینتراپت، اینتراپتهای دیگر سرویس داده نشود باید اینتراپت را غیر فعال (تنها اینتراپت reset قابل غیر فعال کردن نمیباشد) و در پایان روتین سرویس اینتراپت مجددا فعال کنید. پس از فعال کردن اینتراپت ، اینتراپتهایی که طی این مدت رخ داده اند به ترتیب اولویت سرویس داده میشوند. در زیر میتوانید اولویت اینتراپتها برای Atmega328 را ببینید.

                        دیدگاه


                          #13
                          پاسخ : تداخل در عملکر تایمر در هنگام فعالیت همزمان اینتراپت خارجی و تایمر(؟؟؟)

                          نوشته اصلی توسط evergreen نمایش پست ها
                          با سلام
                          اینتراپتها دارای اولویت بندی هستند. اگر چند اینتراپت با هم اتفاق بیفتد اول آنکه دارای اولویت بالاتری است سرویس داده میشود. شما اگر بخواهید در طی سرویس یک اینتراپت، اینتراپتهای دیگر سرویس داده نشود باید اینتراپت را غیر فعال (تنها اینتراپت reset قابل غیر فعال کردن نمیباشد) و در پایان روتین سرویس اینتراپت مجددا فعال کنید. پس از فعال کردن اینتراپت ، اینتراپتهایی که طی این مدت رخ داده اند به ترتیب اولویت سرویس داده میشوند. در زیر میتوانید اولویت اینتراپتها برای Atmega328 را ببینید.
                          سلام خدمت دوستان
                          خیلی ممنون
                          این بحث در مورد توابع چجوری اتفاق می افته؟
                          همیشه کامل توضیح بدهیم تا جواب کامل بگیریم.
                          لطفا برای تشکر روی دکمه تشکر بزنید و بخاطر این پست نزنید که تایپیک شلوغ نشود
                          تایپیک های من:
                          حل تمام مشکلات atmega128a (eca.ir)
                          آموزش کار با سایت (eca.ir)

                          دیدگاه


                            #14
                            پاسخ : تداخل در عملکر تایمر در هنگام فعالیت همزمان اینتراپت خارجی و تایمر(؟؟؟)

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

                            دیدگاه


                              #15
                              پاسخ : تداخل در عملکر تایمر در هنگام فعالیت همزمان اینتراپت خارجی و تایمر(؟؟؟)

                              نوشته اصلی توسط evergreen نمایش پست ها
                              با سلام مجدد
                              متاسفانه متوجه سوالتان نمیشوم. لطفا کمی بیشتر توضیح دهید.
                              سلام خدمت دوستان
                              مثلا اگه توی یه تابعی تابع دیگه صدا زده بشه که توی اون چند تا تابع صدا زده شده باشن، حافظه ی stack می تونه تا چند مرحله رو حفظ کنه و مشکلی پیش نیاد؟
                              همیشه کامل توضیح بدهیم تا جواب کامل بگیریم.
                              لطفا برای تشکر روی دکمه تشکر بزنید و بخاطر این پست نزنید که تایپیک شلوغ نشود
                              تایپیک های من:
                              حل تمام مشکلات atmega128a (eca.ir)
                              آموزش کار با سایت (eca.ir)

                              دیدگاه

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