اطلاعیه

Collapse
No announcement yet.

سوال درباره وقفه usart در کدویژن

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

    سوال درباره وقفه usart در کدویژن

    سلام دوستان
    وقتی با کدویزارد وقفه گیرنده یا فرستنده فعال میکنم یک سری کد گیج کننده و مشکل تولید میکنه. میشه از اساتید یکی توضیح بده؟
    شنیدم که کد برنامه خودمو تو حلقه اصلی باید بنویسم نه تو ساب روتین وقفه.این درسته؟
    کسی میدونه کار هر کدوم ازاین متغیر ها که تعریف شده چیه؟ rx-counter , rx-rd-index, rx-wr-index
    Udr تو این کد های تغریف شده در کدویزارد چیه؟

    #2
    پاسخ : سوال درباره وقفه usart در کدویژن

    در حالت بدون وقفه توابع ارسال و دریافت منتظر خالی شدن بافر میشن
    در حالت با وقفه بدون اون توابع گیج کننده دیگه منتظر نمیشی اما این وظیفه شماست که از خالی بودن بافر ارسال و دریافت مطلع بشی
    اما اون توابع چیکار میکنن : یه صف حلقوی با هر اندازه که شما بخوای ایجاد میکنن. شما هر داده ای که مثلا میخوای بفرستی در انتهای این صف (یه جور ساختمان داده ست) قرار داده میشه و هر وقت که وقفه فعال بشه از ابتدای صف داده ای برداشته و ارسال میشه. هر صف چند تا متغیر علاوه بر بافر اصلیش که یه آرایه به اون اندازه ای که شما خواستین داره
    یکیش ابتدای صف یکیش انتهای صف یکیش تعداد داده موجود در صف و احتمالا یک یا چند متغیر دیگه هم برای مواقع خطا (مثلا ارسال تعداد داده بیش از اندازه بافر) داره
    بله شما باید بدون توجه به توابع روتین وقفه برنامتو در حلقه اصلی برنامه انجام بدی البته در مواقع خاص ممکنه نیاز باشه در اون توابع هم دستکاری کنید ولی موقعی که دیگه برای شما گیج کننده نبود!!!

    دیدگاه


      #3
      پاسخ : سوال درباره وقفه usart در کدویژن

      مرسی دوست عزیز یکم از ابهاماتم رفع شد حالا میشه بگی این متغیر های مربوط به اول صف انتهای صف و تعداد داده موحود در صف دقیقا نامشون چیه؟

      دیدگاه


        #4
        پاسخ : سوال درباره وقفه usart در کدویژن

        الان کدویإ¾ن ندارم ولی counter تعداد داده موجود در بافر رو نگه میداره
        در تابع putchar یکی به تعداد اضافه میشه همچنین به متغیر آخرین داده (چون صف حلقوی هست وقتی به آخر آرایه برسیم برمیگردیم به 0)
        در روتین وقفه هم یکی از تعداد کم میشه؛ همچنین متغیر ابتدای صف هم به داده بعدی اشاره میکنه

        دیدگاه


          #5
          پاسخ : سوال درباره وقفه usart در کدویژن

          تا جایی که من میدونستم، وقتی از وقفه استفاده میکنین، باید برنامه موردنظرتون رو توی سابروتین همون وقفه بنویسین.
          چون وقتی مثلا دارین یه داده رو میخونین، به محض اینکه بافرتون پرشه، میکرو میره سراغ برنامه ای که تو سابروتین دریافت نوشتین و اونو اجرا میکنه....

          Udr تو این کد های تغریف شده در کدویزارد چیه؟
          همون رجیستریه که موقع دریافت اطلاعات پر میشه. واگر نیازی بود که ازش استفاده ای بکنین، بهتره که محتواش رو تو یه متغیر دیگه مثلا int یا char یا هرچیز دیگه ای کپی کنین و با متغیری که تعریف کردین، کار کنین...
          قامت انسان با لباس انسانیت شکل می گیرد،
          والا مترسک جالیز را هم می توان لباسی فاخر پوشاند

          (عبدالرضا کشاورز)

          دیدگاه

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