اطلاعیه

Collapse
No announcement yet.

بافر ارسال و دریافت در سریال

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

    بافر ارسال و دریافت در سریال

    سلام دوستان
    این بافر ارسال و دریافت در میکرو در شکل زیر

    موقع کار با ویزارد وقتی وقفه دریافت رو فعال میکنیم، از ما مقدار میخواد؟ و مقدارش به صورت پیش فرض 8 بایت هست؟؟این همون UDR هست؟؟
    و برای خالی کردنش باید با getchar بخونیمش؟؟؟


    #2
    پاسخ : بافر ارسال و دریافت در سریال

    کسی نیست؟

    دیدگاه


      #3
      پاسخ : بافر ارسال و دریافت در سریال

      نخیر این بافر UDR نیست.
      این بافر ایجاد میشه تا دیتای دریافتی رو توی خودش ذخیره کنه.
      یک مثال میزنم براتون تا متوجه بشید.
      فرض کنید شما قراره براتون 8 تا بایت دیتا بیاد. یک راه اینه که از تابع getchar و scanf استفاده کنید و 8 بایت رو بگیرید و راه دیگه که به نظر من بهتره اینه که شما بزاری برنامه کار خودشو انجام بده و وقتی 8 بایت دریافت شد، بری و ازش استفده کنی. توی روال وقفه شما میای و هر بار یک خونه از این بافر رو با بایت دریافتی پر میکنی و ووقتی 8 بایت رو کامل گرفتی، میای و این بافر رو خالی میکنی. ویزارد کدویژن بعضی چیزا رو بزرگ می کنه !! شما می تونی این بافر رو بیرون از روال وقفه تعریف کنی.
      ---------
      .
      .
      ...........

      دیدگاه


        #4
        پاسخ : بافر ارسال و دریافت در سریال

        نوشته اصلی توسط ajapyy
        شما می تونی این بافر رو بیرون از روال وقفه تعریف کنی.
        ممنونم
        پس چرا تو رجیستر های مربوط به usart ، جایی مقدار این بافر رو مشخص نمیکنیم؟؟؟

        دیدگاه


          #5
          پاسخ : بافر ارسال و دریافت در سریال

          چون جزو سخت افزار ارتباط سریال نیست. یعنی توی همه قطعاتی که از ارتباط سریال پشتیبانی می کنند، مثلا قابلیت تنظیم باودریت، تعداد بیت و ... هست اما اینکه یک بافری برای ذخیره موقت باشه نیست.
          گفتم که این روش یک تکنیک نرم افزاری هست.
          ---------
          .
          .
          ...........

          دیدگاه


            #6
            پاسخ : بافر ارسال و دریافت در سریال

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

            دیدگاه


              #7
              پاسخ : بافر ارسال و دریافت در سریال

              اون بافر یک آرایه است. هر جور که دلت بخواد می تونی ازش استفاده کنی. مثلا توی یک حلقه FOR بیای و منتقلش کنی به آرایه دیگه ای که میخوای یا اگر بایت به بایت رو لازم داری، بیای و ازش جدا کنی.
              به این کار میگن خالی کردنش.
              بستگی داره چه استفاده ای ازش بخوای بکنی. مثلا یک رشته بفرستی براش همه رو با هم میخونی. بعد از پر شدن بستگی به کار شما با اون و نحوه برنامه نویسیتون داره.
              ---------
              .
              .
              ...........

              دیدگاه


                #8
                پاسخ : بافر ارسال و دریافت در سریال

                این بافر برای زمانی هست که نمی تونیم منتظر دریافت یا ارسال داده ها باشیم.
                در زیر این نقاب چیزی بیشتر از گوشت هست. در زیر این نقاب یک ایده هست و ایده ها ضدگلوله هستند.

                1-به اندازه ی باورهای هر کسی ؛ با او حرف بزن …. بیشتر که بگویی ، تو را احمق فرض خواهد کرد …!!!
                2-تنها دو گروه نمى توانند افکار خود را عوض کنند: دیوانگان تیمارستان و مردگان گورستان.
                3-آدم ها مثل عکس ها هستند: زیاد بزرگشون کنی ، کیفیتشون میاد پایین!

                دیدگاه

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