نوشته اصلی توسط
ali.aghayifar
همونطور که در دیتاشیت می بینیم 5 تا منبع تولید وقفه برای پورت سریال هست
1- هنگام اتمام ارسال
2- هنگام اتمام دریافت
3- تایم اوت برای اتوباودریت
4- پایان اتوباودریت
5- و یکی هم وقفه ی مربوط به وضعیت خط Rx که من مفهومش را متوجه نشدم. ظاهرا مربوط به حالتی است که اگر در بیت توازن خطا رخ دهد یا داده ها over run شوند و یا در فریم دریافت داده خطایی باشد وقفه درخواست گردد.
رجیستر U0IER : با استفاده از این رجیستر 5 گزینه را می توان فعال کرد. در شکل قسمت Interrupt Enable مشخص می باشد:
1- RBR Interrupt Enable : بیت صفرم – با قرار گرفتن اولین خانه بافرFIFO در رجیستر RBR ، این وقفه فعال می شود.
2- THRE Interrupt Enable : بیت یکم - وقتی داده ای کامل ارسال شد و رجیستر ارسال خالی شد با یک شدن بیت THREاین وقفه فعال می شود.
3- RX Line Status Interrupt Enable : بیت دوم
4- ABEOIntEn : بیت هشتم – فعال ساز وقفه پایان اتوباودریت.
5- ABTOIntEn : بیت نهم - فعال ساز وقفه تایم اوت برای اتوباودریت.
خوب با این اوصاف اگه بخواهیم تا چیزی اومد وقفه فعال بشه و بره در زیر روال، باید RBR IE را فعال کنیم، یعنی : U0IER = 0x01 .
حالا ما این را تست می کنیم تا بعد بریم سراغ رجیستر U0IIR که تنظیم و تعیین نوع اینتراپت است.
اساتید اگه تجربهاشون را در اختیار قرار دهند بحث کامل تره میشه