سلام.
من دارم با وقفه های خارجی کار میکنم و یک سوال برام پیش اومده. وقتی که یک وقفه خارجی روی پایه های EINT رخ میده بیت flag در رجیستر EXTINT یک میشه و باید وقتی که برنامه وارد زیرروال وقفه شد این بیت را خودمون توسط نوشتن یک در همان بیت پاک کنیم. توی دیتاشیت گفته که وقتی وقفه حساس به سطح low یا high است تنها زمانی بیت flag پاک میشه که سطح خنثی بشه یا به عبارتی دیگر به سطح اولیه بازگردد. بطور مثال فرض کنیم که وقفه به صورتی تنظیم بشه که حساس به سطح low باشه. حالا اگه یک سطح low روی پایه موردنظر بیاد بیت پرچم 1 میشه و برنامه وارد زیرروال وقفه میشه. حالا سوال من اینجاست که توی این حالت خودمون باید پرچم رو پاک کنیم یا به طور اتوماتیک پاک میشه. جوری که من از دیتاشیت فهمیدم وقفه چه حساس به سطح باشه و چه حساس به لبه باید خودمون بیت پرچم رو پاک کنیم منتهی وقتی که وقفه حساس به سطح است فقط زمانی پرچم پاک میشه که سطحی که توی رجیستر EXTPOLAR تعیین شده رخ ندهد.
ببخشید از اینکه طولانی شد.
من دارم با وقفه های خارجی کار میکنم و یک سوال برام پیش اومده. وقتی که یک وقفه خارجی روی پایه های EINT رخ میده بیت flag در رجیستر EXTINT یک میشه و باید وقتی که برنامه وارد زیرروال وقفه شد این بیت را خودمون توسط نوشتن یک در همان بیت پاک کنیم. توی دیتاشیت گفته که وقتی وقفه حساس به سطح low یا high است تنها زمانی بیت flag پاک میشه که سطح خنثی بشه یا به عبارتی دیگر به سطح اولیه بازگردد. بطور مثال فرض کنیم که وقفه به صورتی تنظیم بشه که حساس به سطح low باشه. حالا اگه یک سطح low روی پایه موردنظر بیاد بیت پرچم 1 میشه و برنامه وارد زیرروال وقفه میشه. حالا سوال من اینجاست که توی این حالت خودمون باید پرچم رو پاک کنیم یا به طور اتوماتیک پاک میشه. جوری که من از دیتاشیت فهمیدم وقفه چه حساس به سطح باشه و چه حساس به لبه باید خودمون بیت پرچم رو پاک کنیم منتهی وقتی که وقفه حساس به سطح است فقط زمانی پرچم پاک میشه که سطحی که توی رجیستر EXTPOLAR تعیین شده رخ ندهد.
ببخشید از اینکه طولانی شد.
دیدگاه