اطلاعیه

Collapse
No announcement yet.

interrupt

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

    interrupt

    سلام من 8 ورودی دیجیتال می خوام به یه پورت مثلا A بدم و تمامی پین های این پورت اینتراپت خارجی با لبه بالا رونده ست کنم.
    تا این جای کار مشکلی نیست اما چون هر پورت فقط دو زیر برنامه وقفه(INT0 و INT1) دارد. من چطوری میتونم بفهمم که کدوم پایه اینتراپت داده که برنامه به زیر برنامه وقفه(INT0 یا INT1) رفته است؟؟؟رجیستری برای این کار هست؟؟؟؟؟
    ممنون از کمکاتون

    #2
    پاسخ : interrupt

    وضعیت پین ها را باید در روتین وقفه بررسی کنید و هر پینی که وضعیت آن یک خوانده شود به این معنی است که لبه بالارونده را ایجاد کرده است. اما اگر وضعیت پین تا زمان وارد شدن به وقفه و خواندن مقدار آن تغییر کند، در اینصورت منبع ایجاد کننده وقفه قابل تشخیص نیست. اگر امکان چنین شرایطی وجود داشته باشد، یک روش پیشنهادی که نیاز به تسلط بالا در XMEGA دارد این است که همزمان با لبه بالارونده، یک Event ایجاد شود و به DMA فرمان بدهد که یک کپی از رجیستر IN مربوطه را در SRAM ذخیره کند. این روش شبیه نوعی Capture کردن وضعیت پورت است که حتی در صورت تغییر بعدی هم می توان مقدار رجیستر در لحظه ایجاد لبه را ذخیره سازی کرد.
    اوژن: به معنای افکننده و شکست دهنده است
    دانایی، توانایی است-Knowledge is POWER
    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

    دیدگاه


      #3
      پاسخ : پاسخ : interrupt

      نوشته اصلی توسط طراح
      وضعیت پین ها را باید در روتین وقفه بررسی کنید و هر پینی که وضعیت آن یک خوانده شود به این معنی است که لبه بالارونده را ایجاد کرده است. اما اگر وضعیت پین تا زمان وارد شدن به وقفه و خواندن مقدار آن تغییر کند، در اینصورت منبع ایجاد کننده وقفه قابل تشخیص نیست. اگر امکان چنین شرایطی وجود داشته باشد، یک روش پیشنهادی که نیاز به تسلط بالا در XMEGA دارد این است که همزمان با لبه بالارونده، یک Event ایجاد شود و به DMA فرمان بدهد که یک کپی از رجیستر IN مربوطه را در SRAM ذخیره کند. این روش شبیه نوعی Capture کردن وضعیت پورت است که حتی در صورت تغییر بعدی هم می توان مقدار رجیستر در لحظه ایجاد لبه را ذخیره سازی کرد.
      ممنون از راهنماییتون بله سرعتم بالاست و تا زمانی که بخوام به بردار وقفه برم و پورت بخونم چند سیکل گذشته و پورت به درستی خوانده نمیشه.روش پیشنهادیتونم جالب بود من تا حالا با event کار نکردم اگر نمونه کدی یا سورسی برای مطالعه این بخش سراغ دارید لطف می کنید قرار بدید
      ممنون از شما جناب مهندس کی نژاد

      دیدگاه


        #4
        پاسخ : interrupt

        عملکرد کتابخانه dma_driver.c در سورس های Atmel را بررسی کنید و اگر موفق نشدید اعلام کنید تا در فرصت مقتضی کدی را برای شما قرار دهم.
        اوژن: به معنای افکننده و شکست دهنده است
        دانایی، توانایی است-Knowledge is POWER
        برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
        وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
        قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
        اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
        ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

        دیدگاه


          #5
          پاسخ : پاسخ : interrupt

          نوشته اصلی توسط طراح
          عملکرد کتابخانه dma_driver.c در سورس های Atmel را بررسی کنید و اگر موفق نشدید اعلام کنید تا در فرصت مقتضی کدی را برای شما قرار دهم.
          ممنون مهندس حتما مطالعه می کنم اما اگر برای شما مقدور است نمونه کدی را قرار بدید باعث بهتر درک کردن این مطلب می شود
          سپاسگذارم

          دیدگاه

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