اطلاعیه

Collapse
No announcement yet.

UART میکروکنترلر LPC2378

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

    UART میکروکنترلر LPC2378

    به نام خدا سلام با توجه به این که یکی از قابلیتهای UART میکروکنترلر LPC2378 فعال شدن وقفه دریافت بعد از دریافت تعداد مشخصی بایت (1 با 4 یا 8 یا 14) که مقدار آن به وسیله بیتهای 7و6 رجیستر UxFCR مشخص میگردد میباشد مثلا اگر ما تعداد بایتها را 14 تعیین کنیم در گیرنده هنگام فعال شدن وقفه دریافت ما آخرین بایت دریافتی را از رجیستر UxRBR میخوانیم خوب حالا ما 13 بایت قبلی را که به مبکرو ارسال شده را از کدام رجیستر و یا رجیستر ها باید بخوانیم.تا به اطلاعات هر 14 بایت دریافتی دسترسی پیدا کنیم.

    #2
    پاسخ : UART میکروکنترلر LPC2378

    از همان UxRBR! بافر FIFO فقط برای کم کردن تعداد فراخوانی وقفه ها است. ولی عملا بایتهای قبلی به ترتیب دریافت از این رجیستر خوانده میشود فقط این عمل بایستی تا زمانی انجام گیرد که بیت صفر در UxLSR غیر صفر باشد:

    while( UxLSR & 1) do

    دیدگاه


      #3
      پاسخ : UART میکروکنترلر LPC2378

      راستی یادم رفت ... اگر انتظار داشته باشید که مثلا 10 بایت از سریال تحویل بگیرید ولی بافر روی 14 تنظیم شده باشد تا موقعی که 14 بایت دریافت نشده سیستم اینتراپت نمیدهد. در این حالت بایستی پس از مدت زمانی که بستگی به پروتکل و سرعت خط دارد خودتان بافر را خالی کنید.

      دیدگاه


        #4
        پاسخ : UART میکروکنترلر LPC2378

        به نام خدا سلام من درست متوجه نشدم پس بالاخره میشود وقتی به داخل روتین وقفه دریافت uart رفت و 14 بایت اطلاعات را خواند و یا اینکه ما باید در طول برنامه یکسره رجیسترهای دریافت را uart را چک کنیم و البته چگونه .متشکرم...

        دیدگاه


          #5
          پاسخ : UART میکروکنترلر LPC2378

          ولله من دوباره دیتا شیت رو چک کردم. وقتی شما بافرهای داخلی رو فعال میکنین خود سیستم پس از 3.5 تا 4 برابر زمان دریافت یک کاراکتر پس از دریافت آخرین بایت چک میکنه اگر اطلاعاتی در بافر داخلی وجود داشته باشه وقفه رو دوباره فعال میکنه. مثلا در سرعت 9600 این زمان بین 4 تا 4.6 میلی ثانیه است. اگر زمانبندی بین دریافت دو بایت متوالی خیلی دقیق نیست این روش عالیه. در غیر این صورت بهتره از خیر بافر بگذرین. یا همون روش قبلی رو استفاده کنین. سورس ها شو هم میشه از سورسهای نمونه خود LPC پیدا کرد.

          دیدگاه


            #6
            پاسخ : UART میکروکنترلر LPC2378

            نوشته اصلی توسط عبدالهی
            به نام خدا سلام من درست متوجه نشدم پس بالاخره میشود وقتی به داخل روتین وقفه دریافت uart رفت و 14 بایت اطلاعات را خواند و یا اینکه ما باید در طول برنامه یکسره رجیسترهای دریافت را uart را چک کنیم و البته چگونه .متشکرم...
            سلام دوست عزیز
            کاملا درسته اگر بایت دریافتی شما کمتر از مقدار تنظیم شده جهت اینتراپت باشد وقفه ای رخ نمیدهد
            و برای اینکه شما از دریافت اطلاعات با خبر شوید میتوانید بیت پر بودن FIFO را چک کنید

            نوشته اصلی توسط reza_agha
            ولله من دوباره دیتا شیت رو چک کردم. وقتی شما بافرهای داخلی رو فعال میکنین خود سیستم پس از 3.5 تا 4 برابر زمان دریافت یک کاراکتر پس از دریافت آخرین بایت چک میکنه اگر اطلاعاتی در بافر داخلی وجود داشته باشه وقفه رو دوباره فعال میکنه. مثلا در سرعت 9600 این زمان بین 4 تا 4.6 میلی ثانیه است. اگر زمانبندی بین دریافت دو بایت متوالی خیلی دقیق نیست این روش عالیه. در غیر این صورت بهتره از خیر بافر بگذرین. یا همون روش قبلی رو استفاده کنین. سورس ها شو هم میشه از سورسهای نمونه خود LPC پیدا کرد.
            از این وقفه هم میشه استفاده کرد که به اسم وفقه Time Out شناخته میشه
            این وفقه برای حالتی استفاده میشه که شما بخواهید بعد پایان دریافت اطلاعات پشت سر هم ، وفقه ایجاد کنید

            موفق باشید

            دیدگاه


              #7
              پاسخ : UART میکروکنترلر LPC2378

              با سلام
              من برنامه ی راه اندازی UART میکروکنترلر LPC2378 رو از وبلاگ آقای تروشه دانلود کردم. این برنامه داخل شبیه سازی کاملا جواب می ده ولی در عمل وقتی به PC وصلش می کنم چیزی روی صفحه ی hyper terminal نمی بینم! حالتهای دیگه ی برنامه رو هم تست کردم ولی بازم جواب نداده. البته من میکرو رو با flash magic و از طریق USART0 پروگرم می کنم. احتمالش هست که مشکل از بوت لودر داخل آی سی باشه؟ یا جای دیگه ای اشکال داره؟
              من لینک دانلود این برنامه رو ضمیمه کردم.
              http://www.mediafire.com/?jgzmgkxoinj
              با تشکر

              دیدگاه


                #8
                پاسخ : UART میکروکنترلر LPC2378

                من فعلا وسیله تست ندارم. ولی بنظر میاد کد آقای تروشه نبایستی مشکل داشته باشه. اگه میشه بجای هایپرترمینال هم از realterm استفاده کنین. اون هر چی رو بگیره میتونه نمایش بده. فارغ از اینکه به CR-LF ختم بشه یا نشه.

                دیدگاه

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