معرفی راهکار مناسب جهت جلوگیری از هنگ کردن میکروکنترلر در پروتکل CAN

سلام استاد،
در پروتکل CAN ، آیا این جمله صحیح است که:
اگر یک دیوایس نتواند ارسال موفق (به هر دلیل) داشته باشد، میکرو بدلیل تلاش های نامتناهی برای ارسال، از اجرا, main اصلی برنامه، باز می ماند. هنگ می کند؟
اگر جمله ی بالا صحیح است، راه برون رفت از این مساله چیست؟
ممنون

در پروتکل CAN، اگر یک دستگاه نتواند پیام خود را با موفقیت ارسال کند، معمولاً دستگاه تلاش می‌کند تا پیام را دوباره ارسال کند. این موضوع ممکن است باعث شود که میکروکنترلر زمان زیادی را صرف تلاش برای ارسال پیام کند و در نتیجه از اجرای اصلی برنامه باز بماند یا اصطلاحاً “هنگ” کند.

برای جلوگیری از این مشکل می‌توان از چند روش استفاده کرد:

  1. تعداد محدود تلاش‌های مجدد ارسال
  2. استفاده ازInterrupt: به جای استفاده از روش polling برای ارسال پیام، می‌توانید از ازInterrupt استفاده کنید. این کار باعث می‌شود که میکروکنترلر تنها زمانی که نیاز است وارد فرآیند ارسال پیام شود و در بقیه زمان‌ها به اجرای main بپردازد.
  3. Timeout: اگر پیام در مدت زمان مشخصی ارسال نشد، میکروکنترلر تلاش برای ارسال را متوقف کند و به اجرای main بازگردد.