اطلاعیه

Collapse
No announcement yet.

شمارش اجرای وقفه

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

    شمارش اجرای وقفه

    با سلام
    من میخوام تعداد به وقوع پیوستن وقفه ها رو شمارش کتم
    مشکل اینکه در حالت rising بر روی پایه int1 زمانی که یک لبه بالا رونده به پایه int1 اعمال می شود ظاهرا چند بار روال وقفه در برنامه اجرا می شود.فکر می کنم مشکل از تولید لبه بالا رونده باشه نظر شما چیه.
    من لبه بالا رونده رو با اتصال لحظهآ‌ای یک سیم به + تغذیه اعمال می کنم.
    :
    در روال وقفه کد زیر نوشته شده است:
    RunInt=RunInt+1 که متغیری است که در هر بار اجرای وقفه یک واحد به آن اضافه می شود
    حال اینکه مثلا با اعمال 5 با اتصال پایه int0 به + تغذیه RunInt مقدار 8 یا 6 یا 9 را نشان می دهد

    با تشکر از صبر شما

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

    سلام

    اگه اشتباه نکرده باشم شما گفتید که از سیم برای اعمال سیگنال استفاده کردید

    این کار مسلما ایجاد مشکل میکنه

    اگه میخواید از سیم استفاده کنید حتما با یه مقاومت pulldown و یه خازن 100nf که موازی هم هستن روی پایه int جلوی جست و خیز سیگنال یا همون bounce رو بگیرید

    مقاومت 10k خوبه و اگه سیگنال شما لبه پایین رونده هستش اونو به صورت pullup ببندید
    به وبلاگم سر بزنید

    دیدگاه


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

      تشکر، کاملا درسته.

      دیدگاه


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

        یک مشکل دیگه
        یا لبه بالا رونده و پایین رونده که نمیشه میکرو از حالت powerdown بیدار کرد، تنها باید از روش low level استفاده کرد.
        مشکل اینکه وقتی به پایه int مدت طولانی تری سطح low اعمال شود روال وقفه چندین بار و به طوز متوالی اجرا می شود.
        چه کنیم.
        یک سوال دیگه آیا راه بهتری برای شمارش یک پالس (سطح low ، لبه بالا رونده، لیه پایین رونده) وجود ندارد، لبته میکرو باید در حالت powersave باشد.

        با تشکر.

        دیدگاه


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

          یک مشکل دیگه
          یا لبه بالا رونده و پایین رونده که نمیشه میکرو از حالت powerdown بیدار کرد، تنها باید از روش low level استفاده کرد.
          مشکل اینکه وقتی به پایه int مدت طولانی تری سطح low اعمال شود روال وقفه چندین بار و به طوز متوالی اجرا می شود.
          چه کنیم.
          یک سوال دیگه آیا راه بهتری برای شمارش یک پالس (سطح low ، لبه بالا رونده، لیه پایین رونده) وجود ندارد، لبته میکرو باید در حالت powersave باشد.

          با تشکر.

          دیدگاه


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

            سلام

            level یا any change همین مشکل رو داره شما باید توی زیر برنامه وقفه اینتراپت مورد نظر رو غیر فعال کنید

            به هر حال باید جلوی وقفه های تو در تو رو بگیرید
            به وبلاگم سر بزنید

            دیدگاه


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

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

              زکات علم بدین ...

              دیدگاه


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

                داخل حقله اصلی برنامه تون میکرو رو توی حالت Idle قرار بدید

                قبلا تمام وقفه ها رو فعال بکنید
                وقفه صفر رو فعال بکنید
                وقفه صفر رو در حالت لبه پائین رونده تنظیم بکنید
                برای وقفه صفر روتین وقفه رو برنامه نویسی بکنید

                همه چی حله

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

                امتحان بکنید حتما جواب میده

                موفق باشید :smile:

                دیدگاه


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

                  با سلام
                  می خواستم بدونم interupt با استفاده از حالت pin change چیست و چه مفهومی دارد ، مثلا در mega48
                  تشکر

                  دیدگاه

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