اطلاعیه

Collapse
No announcement yet.

انتظار برای آزاد شدن بافر سریال در RTX

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

    انتظار برای آزاد شدن بافر سریال در RTX

    سلام
    من در روش برنامه نویسی معمولی (بدون سیستم عامل) مثلا وقتی می خوام یک آرایه 30 بایتی رو به پورت سریال ارسال کنم اینطوری می نویسم:
    کد:
    void sendchar0(char c)
    {
    	while (!(LPC_UART0->LSR & 0x20));
     LPC_UART0->THR = c;
    }
    
    
    for(i=0;i<30;i++)
     sendchar0(buffer[i]);
    حالا فرض کنید من می خوام برنامم رو با RTX بنویسم و این کار رو داخل یک تسک انجام بدم
    همونطور که می دونید ارسال شدن اطلاعات از پورت سریال بسته به Baud Rate، زمان مشخصی مصرف می کنه و میکرو مقدار زیادی از وقتش در
    کد:
    while (!(LPC_UART0->LSR & 0x20));
    تلف میشه
    می خوام بپرسم به نظر شما بهترین روشی که می شه اشغال بودن پریفرال توسط این تسک، یا تسک دیگه رو تشخیص داد و به کارهای دیگه رسید چیه؟
    ممنون

    #2
    پاسخ : انتظار برای آزاد شدن بافر سریال در RTX

    من همیشه دریافت رو با اینتراپت می گیرم و بایتها رو یکی یکی که میان در یک بافر ذخیره می کنم و وقتی که می دونم تموم شد در برنامه اصلی دیتاها رو بر میدارم از اون بافر.
    البته بدون اینتراپت هم میشه ولی من ترجیح می دم از این روش استفاده کنم.

    دیدگاه


      #3
      پاسخ : انتظار برای آزاد شدن بافر سریال در RTX

      از RTX چیز زیادی نمی دونم. ضمناً نگفتید میکروکنترلرتون چیه. فرض می کنم 1768 باشه (امیدوارم باشه :icon_razz.
      1768 برای هر پورت سریال 14 بایت FIFO داره. یعنی اگه شما اینجوری بنویسی:
      کد:
      for(i=0;i<14;i++)
        LPC_UART0->THR = buffer[i];
      مشکلی پیش نمیاد. با سرعت جیک ثانیه همه داده ها توی FIFO قرار می گیرند و منتظر ارسال می مونند و حسب زمان مناسب ارسال می شن.
      با بررسی پرچم خالی بودنِ FIFO ارسال پورت سریال تو هر جای برنامه تون (مثلاً توی یه وقفه تایمر یا حتی وسطِ حلقه اصلی برنامه)، می تونید زمان انتظار برای ارسال رو به اندازه 14 برابر کاهش بدید. این کار سربار محاسباتی و زمانی بسیار ناچیزی برای پردازنده داره. تنها کاری که باید بکنید اینه که بافر داده رو 14تا 14تا ارسال کنید.
      بیایید با Google آشتی کنیم!

      دیدگاه

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