نکته ای در کدنویسی:
فرض کنیم که در یک سیستم مبتنی بر AVR با کلاک 16MHz به دلیل نیاز صورت مسئله لازم باشد توسط CPU به یکی از وقفه ها به تعداد 160.000 بار در ثانیه پاسخ داده شود و روتین آن وقفه اجرا شود. حال با توجه به اینکه CPU برای پاسخ دادن به وقفه مورد نظر تنها به میزان 100 سیکل کلاک فرصت دارد، بنابراین برای انجام عملیات متناوبی که از اولویت زمانی بالایی برخوردار نیستند و کمی تاخیر در حد چند کلاک مشکلی را ایجاد نمی کند (مانند اسکن کردن کلید ها یا Refresh کردن 7segment ها و مانند آن) بجای استفاده از وقفه یک تایمر برای انجام این نوع عملیات باید به روش Polling عمل شود و با بررسی فلگ وقفه مقایسه یا سرریز تایمر در حلقه اصلی، در فواصل زمانی مشخص روتین های لازم بصورت پریودیک اجرا شود. به بیان دیگر زمانی که لازم است اکثر وقت CPU برای انجام وقفه های Time critical و با تعداد دفعات وقوع بسیار بالا سپری شود، باید از فعال کردن وقفه برای عملیاتی که Time critical نیستند و توسط Polling هم قابل انجام هستند خودداری شود تا CPU توان پاسخگویی به انجام همه عملیات را داشته باشد.
@KnowledgePlus
Post #383
4.4K