اطلاعیه

Collapse
No announcement yet.

مشکل در دریافت اطلاعات توسط usart

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

    مشکل در دریافت اطلاعات توسط usart

    عرض سلام و ادب خدمت همه دوستان بزرگوار
    من یه ماژول بلوتوث دارم و میخوام اطلاعاتی رو که از گوشی برای بلوتوث میفرستم از طریق usart به میکرو بدم.اینتراپت یوزارت رو هم فعال کردم تا هروقت دیتا اومد بره توی زیربرنامه اینتراپت و دیتا رو دریافت کنه.اما مشکلم اینجاست که وقتی بیشتر از دو بایت رو خیلی سریع میفرستم rcreg پر میشه و بایت سوم رو نمیتونه دریافت کنه.هرجا هم که گشتم گفتن باید مقدار rcreg رو بخونید تا این رجیستر خالی بشه و بشه دوباره دیتا دریافت کرد.
    کسی از دوستان میدونه من باید چیکار کنم؟یعنی بیشتر از دوبایت رو نمیشه با سرعت بالا توسط usart دریافت کرد؟
    من برناممو با زبون basic نوشتم
    ممنون میشم راهنماییم کنید

    کسی نیست کمک کنه؟
    جدیدترین ویرایش توسط شاهرخ مستقیمی; ۱۷:۲۰ ۱۳۹۵/۰۵/۲۷. دلیل: ادغام دو پست برای جلوگیری از اسپم

    #2
    پاسخ : مشکل در دریافت اطلاعات توسط usart

    سلام.
    منظورتون از سرعت بالا چقدر هست؟ ارتباط سریال نهایتا با سرعت 115200 کار میکنه که خیلی راحت میکرو میتونه اطلاعات دریافت شده رو بخونه.

    دیدگاه


      #3
      پاسخ : مشکل در دریافت اطلاعات توسط usart

      بسم الله الرحمن الرحیم
      نوشته اصلی توسط sajadkhajedad نمایش پست ها
      عرض سلام ...من برناممو با زبون basic نوشتم
      امیدوارم که تا کنون مشکل شما حل شده باشد. اما اگر امکان دارد سورس برنامه به همراه نسخه کامپایلر تان را بنویسید . در حد امکان و بضاعت هم فکری می کنم
      والسلام علي من اتبع الهدي .... و درود بر کساني که راه هدايت را دنبال مي کنند.

      هوشمندانه بپرسيد...

      دیدگاه


        #4
        پاسخ : مشکل در دریافت اطلاعات توسط usart

        سلام.ببخشید دیر جواب دادم.چندروز رفته بودم مسافرت
        نه متاسفانه حل نشده مشکلم.منظورم از با سرعت بالا اینه که با بادریت 9600 سه بایت رو همزمان برای ماژول بلوتوث میفرستم.ماژول بلوتوث این سه بایت رو درست دریافت میکنه اما وقتی میکرو از طریق یوزارت میخواد دریافت کنه این سه بایت رو مشکل پیش میاد و فقط دو بایتش رو دریافت میکنه
        کد:
        [FONT=Yekan]'****************************************************************[/FONT]
        '*  Name    : UNTITLED.BAS                                      *
        '*  Author  : [select VIEW...EDITOR OPTIONS]                    *
        '*  Notice  : Copyright (c) 2000 [select VIEW...EDITOR OPTIONS] *
        '*          : All Rights Reserved                               *
        '*  Date    : 2000/01/01                                        *
        '*  Version : 1.0                                               *
        '*  Notes   :                                                   *
        '*          :                                                   *
        '****************************************************************
        DEFINE LCD_DREG PORTB
        DEFINE LCD_DBIT 4
        DEFINE LCD_RSREG PORTB
        DEFINE LCD_RSBIT 1
        DEFINE LCD_EREG PORTB
        DEFINE LCD_EBIT 3
        DEFINE LCD_BITS 4
        DEFINE LCD_LINES 2
        '---------------------------------  
            trisb=%00000000
            trisc=%10000000
            trisd=%01111111
            trisa=%11111
            
            i var word 
            b var byte 
            c var byte 
            t var byte     
        '    -------------------------------------------------
            portb=%00000000 
            portc=%10000000    
            portd=%00000000
        '------------------------------------------------------
            uartre var byte[3]        
            l var byte
            l=0    
            intcon=%11000000
            rcif var pir1.5
            spbrg=25
            rcsta=%10010000
            txsta=%00100100
            pie1.5=1 
        '------------------------------------------ 
        on interrupt goto isr 
         
        main:
        lcdout $fe,1,"hello"
        pause 2000
        goto main 
         
        
        
         disable
        '-------------------------------------------interrupt  
         isr:
        
        
         loopisr:
        
        
            if rcif=0 then goto loopisr
            uartre[l]=rcreg
            lcdout $fe,1,dec uartre[l]
            l=l+1
            if l=2 then l=0 
            rcsta.4=0
            rcsta.4=1
         
         resume 
         enable
         end 
         [FONT=Yekan]end     [/FONT]

        دلیل: ادغام دو پست برای جلوگیری از اسپم

        نوشته اصلی توسط شاهرخ مستقیمی نمایش پست ها
        سلام.
        منظورتون از سرعت بالا چقدر هست؟ ارتباط سریال نهایتا با سرعت 115200 کار میکنه که خیلی راحت میکرو میتونه اطلاعات دریافت شده رو بخونه.
        سلام.تا اونجایی که من فهمیدم ثبات rcreg یه ثبات با دو بافر هشت بیتی هست.یعنی میتونه دو بایت رو بدون دردسر تو خودش ذخیره کنه.اگه بیشتر از دو بایت براش بفرستیم سرریز رخ میده و بایت های بعدی رو نمیتونه دخیره کنه.چندجا خوندم میگفت باید مقدار rcreg رو بخونیم تا این این ثبات خالی بشه.ولی انگار اگه فاصله زمانی که بایت های اطلاعات رو میفرستی خیلی کم باشه rcreg خالی نمیشه.یه راهش اینه که بعد از هربایت که میفرستیم یه delay اعمال کنیم.که خیلی جالب نیست این راه
        اگه شما راه حل دیگه ای دارین بمنم بگین
        ممنون

        دیدگاه


          #5
          پاسخ : مشکل در دریافت اطلاعات توسط usart

          بسم الله الرحمن الرحیم

          اگر برایتان مشکلی نیست سورس برنامه را به طور کامل یک جایی آپلود کنید . در ضمن اینکه در تالار های گفتگو PICBASIC به آدرس :



          هم می توانید رجوع کنید. اطلاعات فراوان و بسیار قابلی آنجا وجود دارد. فقط باید حوصله کنید و خوب بگردید. به نظر می رسد که برای دریافت و ارسال سریال نیازی به ایجاد تاپیک در آنجا نباشد و فراوان مثالهای دریافت و ارسال سریال وجود دارد. برای همه حالات سوالات و نمونه های قابلی هست/ مجدد خدمت تان عرض می کنم که خوب و محکم و از سر حوصله وقت بگذارید و در میان ارسال ها ی مرتبط ؛ جستجو کنید. یا اینکه سورس کامل را قرار بدهید.
          احیانا ارسال شما از نوع 9 بیت اطلاعات که نیست؟

          سوال : آیا از همان پین هایی که سخت افزار برای ارتباط سریال معین کرده است (یعنی PortC.6=TX & PortC.7=Rx ) استفاده می کنید؟
          جدیدترین ویرایش توسط rezaasgharian; ۱۵:۲۰ ۱۳۹۵/۰۶/۰۸. دلیل: افزودن سوال آخری
          والسلام علي من اتبع الهدي .... و درود بر کساني که راه هدايت را دنبال مي کنند.

          هوشمندانه بپرسيد...

          دیدگاه


            #6
            پاسخ : مشکل در دریافت اطلاعات توسط usart

            نوشته اصلی توسط rezaasgharian نمایش پست ها
            بسم الله الرحمن الرحیم

            اگر برایتان مشکلی نیست سورس برنامه را به طور کامل یک جایی آپلود کنید . در ضمن اینکه در تالار های گفتگو PICBASIC به آدرس :



            هم می توانید رجوع کنید. اطلاعات فراوان و بسیار قابلی آنجا وجود دارد. فقط باید حوصله کنید و خوب بگردید. به نظر می رسد که برای دریافت و ارسال سریال نیازی به ایجاد تاپیک در آنجا نباشد و فراوان مثالهای دریافت و ارسال سریال وجود دارد. برای همه حالات سوالات و نمونه های قابلی هست/ مجدد خدمت تان عرض می کنم که خوب و محکم و از سر حوصله وقت بگذارید و در میان ارسال ها ی مرتبط ؛ جستجو کنید. یا اینکه سورس کامل را قرار بدهید.
            احیانا ارسال شما از نوع 9 بیت اطلاعات که نیست؟

            سوال : آیا از همان پین هایی که سخت افزار برای ارتباط سریال معین کرده است (یعنی PortC.6=TX & PortC.7=Rx ) استفاده می کنید؟
            سلام
            نه ارسال هشت بیتی هست.سه تا هشت بیت رو از طریق یه اپلیکیشن میفرستم برای ماژول بلوتوث و سپس از طریق یوزارت میکرو دریافتشون میکنم
            بله پایه هارو هم درست استفاده کردم

            دلیل: ادغام دو پست برای جلوگیری از اسپم

            فقط میخوام بدونم با باودریت 9600 داده های هشت بیتی رو با چه فاصله زمانی بفرستم برای میکرو که بتونه اونارو از طریق یوزارت درست و کامل دریافت کنه.الان من سه بایت رو باهم به صورت همزمان میفرستم،دو بایتش رو میگیره و بایت سوم رو نمیتونه دریافت کنه(باهمین کدی که بالا گذاشتم)

            دیدگاه

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