اطلاعیه

Collapse
No announcement yet.

مشکل در وقفه

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

    مشکل در وقفه

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

    #2
    پاسخ : مشکل در وقفه

    سلام
    دوست عزیز زمانی که شما وقفه میدید روال وقفه فقط یک بار اجرا میشه، نه تا زمانی که شما دستتون رو کلید باشه. بعد از یک بار اجرا میره رو قسمت main و از اونجا ادامه میده.
    پیشنهاد میکنم در قسمت main از یک شرط استفاده بشه که زمان فعال سازی وقفه زیر روال شرط اجرا بشه .
    زمانی که میگن حساس به سطح یعنی میکرو با رسیدن یک تغییر کوچک (مثلا حساس به لبه ) فعال نمیشه و باید یه مقدار پالس وقفه طول بکشه (مثلا 100 نانو ثانیه)
    اینکه شما دستتون رو روی شاسی نگه دارید مدام از درون main به برنامه زیر روال وقفه مراجعه میشه نه این که از داخل زیر روال وقفه بیرون نیاد

    دیدگاه


      #3
      پاسخ : مشکل در وقفه

      سلام
      ممنون از کمکتون
      اگه بدنه ی زیرروال وقفه در یک شرط مثلا for قرار بگیره تا پالس طول بکشه هم درست میشه؟

      دیدگاه


        #4
        پاسخ : مشکل در وقفه

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

        دیدگاه

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