اطلاعیه

Collapse
No announcement yet.

مشکل چند بار ایجاد شدن وقفه خارجی

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

    مشکل چند بار ایجاد شدن وقفه خارجی

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

    #2
    پاسخ : مشکل چند بار ایجاد شدن وقفه خارجی

    سوال خیلی مبهمه وضعیت تنظیم رجیستر های مربوط به وقفه خارجی چطور هست ؟
    به عنوان یک پیشنهاد قبل از فعال سازی وقفه کلی بیت intf0 در رجیستر GIFR رو 0 کنید

    دیدگاه


      #3
      پاسخ : مشکل چند بار ایجاد شدن وقفه خارجی

      با سلام
      قبل استفاده و فعال کردن وقفه کلی بیت مربوطه وقفه رو چک کن ببین یکه ؟ اگه یکه ؟ اونو با یک اor کن
      چون این بیت با یک پاک میشه

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

      دیدگاه


        #4
        پاسخ : مشکل چند بار ایجاد شدن وقفه خارجی

        نوشته اصلی توسط سایمون
        سوال خیلی مبهمه وضعیت تنظیم رجیستر های مربوط به وقفه خارجی چطور هست ؟
        به عنوان یک پیشنهاد قبل از فعال سازی وقفه کلی بیت intf0 در رجیستر GIFR رو 0 کنید
        سلام
        ممنون از پاسختون
        قبل از اینکه وقفه رو فعال کنم بیت int0 و intf0 رو 0 میکنم که کلا وقفه خارجی غیر فعال شه!
        نوشته اصلی توسط دیجت
        با سلام
        قبل استفاده و فعال کردن وقفه کلی بیت مربوطه وقفه رو چک کن ببین یکه ؟ اگه یکه ؟ اونو با یک اor کن
        چون این بیت با یک پاک میشه

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

        دیدگاه


          #5
          پاسخ : مشکل چند بار ایجاد شدن وقفه خارجی

          مطمئن شو وقفه برای لبه فعال شده

          دیدگاه


            #6
            پاسخ : مشکل چند بار ایجاد شدن وقفه خارجی

            سلام
            مشکل با استفاده از روشی که دیجیت جان گفتن حل شد!
            مشکل من این بود که چون شوک سنسور روی خود برد نصب شده و دو تا رله هم روی همین برد دارم موقع قطع و وصل رله ها مجبور بودم که وقفه شوک سنسور رو غیر فعال کنم که با قطع و وصل رله ها شوک سنسور عمل نکنه
            مشکل برنامه من اینجا بود که اول بیت INT0 در رجیستر GICR رو یک میکردم و وقفه اینتراپت فعال میشد و پس از اون بیت INTF0 در متغیر GIFR رو یک میکردم و به نظرم میکرو به این صورت عمل میکرد که زمانی که رله وصل میشد بیت INTF0 یک میشده و چون به روتین وقفه نمیرفته این فلگ دائم 1 میمونده تا زمانی که من بیت INT0 رو یک میکردم و به محض فعال شدن وقفه اینتراپت برنامه به روتین وقفه میرفته
            حالا کاری که من کردم این بود قبل از فعال سازی وقفه INT0 اول اومدم فلگ INTF0 رو 1 کردم تا پاک بشه و بعد از یه تاخیر چند میلی ثانیه ای اینتراپت وقفه رو فعال کردم که خدا رو شکر مشکل حل شد!!
            ممنون از کمک دوستان

            دیدگاه

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