اطلاعیه

Collapse
No announcement yet.

مشکل دراستفاده از وقفه(برنامه وقفه از همان اول کار نمیکند و حتما باید تغییری صورت گیرد که اجرا شود)

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

    مشکل دراستفاده از وقفه(برنامه وقفه از همان اول کار نمیکند و حتما باید تغییری صورت گیرد که اجرا شود)

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

    #2
    پاسخ : مشکل دراستفاده از وقفه(برنامه وقفه از همان اول کار نمیکند و حتما باید تغییری صورت گیرد که اجرا شود)

    سلام دوست عزیز وقفه ها با لبه کار میکنند نه با سطح
    یعنی فعال شدن با لبه بالارونده باشه موقع تغییر وضعیت از صفر به یک وقفه ایجاد میشه و اگر با لبه پایین رونده باشه برعکس
    اگر با سطح فعال میشد که با یک بار یک کردن تا موقعی که تووضعیت یک میموند دایماً وقفه ایجاد میشد و این یعنی عیب
    پس مدارتون درست کار میکنه و موقع تغییر وضعیت فقط باید وقفه رخ بده،حالا ایجاد وقفه با لبه بالا رونده یا پایین رونده رو خودتون انتخاب میکنید
    [آموزشی] کنترل رله با پیامک توسط sim800l
    [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
    [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
    [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
    صفحه اینستاگرام : ecdco_ir

    دیدگاه


      #3
      پاسخ : مشکل دراستفاده از وقفه(برنامه وقفه از همان اول کار نمیکند و حتما باید تغییری صورت گیرد که اجرا شود)

      نوشته اصلی توسط reza0506 نمایش پست ها
      اگر با سطح فعال میشد که با یک بار یک کردن تا موقعی که تووضعیت یک میموند دایماً وقفه ایجاد میشد و این یعنی عیب
      البته وقفه در AVR دارای 3مدکاری هست-لبه بالا رونده-لبه پایین - سطح صفر-و ربطی نداره چقدر در سطح صفر بمونه فقط یکبار فعال میشه

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

      دیدگاه


        #4
        پاسخ : مشکل دراستفاده از وقفه(برنامه وقفه از همان اول کار نمیکند و حتما باید تغییری صورت گیرد که اجرا شود)

        نوشته اصلی توسط yousef55 نمایش پست ها
        البته وقفه در AVR دارای 3مدکاری هست-لبه بالا رونده-لبه پایین - سطح صفر-و ربطی نداره چقدر در سطح صفر بمونه فقط یکبار فعال میشه

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

        دلیل: ادغام دو پست برای جلوگیری از اسپم

        نوشته اصلی توسط reza0506 نمایش پست ها
        سلام دوست عزیز وقفه ها با لبه کار میکنند نه با سطح
        یعنی فعال شدن با لبه بالارونده باشه موقع تغییر وضعیت از صفر به یک وقفه ایجاد میشه و اگر با لبه پایین رونده باشه برعکس
        اگر با سطح فعال میشد که با یک بار یک کردن تا موقعی که تووضعیت یک میموند دایماً وقفه ایجاد میشد و این یعنی عیب
        پس مدارتون درست کار میکنه و موقع تغییر وضعیت فقط باید وقفه رخ بده،حالا ایجاد وقفه با لبه بالا رونده یا پایین رونده رو خودتون انتخاب میکنید
        سلام. تشکر از پاسختون.
        پس تنظیم کردن وقفه با low level چه کاربردی داره؟
        یعنی اگه کلید وصل نباشه، به معنی low level بودن نیست؟
        اگر به معنی low level بودن هست پس به چه دلیل از همون اول تشخیص نمیده که روی سطح low هست؟
        یک سوال دیگه هم داشتم. اینکه میشه برنامه وقفه رو از یک جای دیگه، فراخوانی مجدد کرد؟
        یا اینکه هیچ راهی نیست که اگه کلید از همون اول وصل باشه با استفاده از وقفه، تشخیص بده؟
        متشکر..
        جدیدترین ویرایش توسط mone96; ۱۳:۱۲ ۱۳۹۵/۱۲/۲۸.

        دیدگاه


          #5
          پاسخ : مشکل دراستفاده از وقفه(برنامه وقفه از همان اول کار نمیکند و حتما باید تغییری صورت گیرد که اجرا شود)

          قبلا گفتم...
          درابتدای برنامه ((دقت کنید ابتدای برنامه)) ورودی رو برای بار اول توسط شرط چک میکنید چون تا تغییر وضعیت نده اینتراپتی رخ نمیده
          "" اینتراپت یا وقفه یعنی اعمال یک پالس فوری به سی پی یو ""
          وقتی کلید پایینه برنامه شروع میشه مگه پالسی تولیید میشه که وقفه فعال بشه؟؟؟

          در مورد نظر این دوستمون که نقل قول کردی گفتم که کاملا اشتباه هست و خودتو گمراه نکن!!!

          دیدگاه


            #6
            پاسخ : مشکل دراستفاده از وقفه(برنامه وقفه از همان اول کار نمیکند و حتما باید تغییری صورت گیرد که اجرا شود)

            نوشته اصلی توسط yousef55 نمایش پست ها
            قبلا گفتم...
            درابتدای برنامه ((دقت کنید ابتدای برنامه)) ورودی رو برای بار اول توسط شرط چک میکنید چون تا تغییر وضعیت نده اینتراپتی رخ نمیده
            "" اینتراپت یا وقفه یعنی اعمال یک پالس فوری به سی پی یو ""
            وقتی کلید پایینه برنامه شروع میشه مگه پالسی تولیید میشه که وقفه فعال بشه؟؟؟

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

            دیدگاه


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

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

              دیدگاه

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