اطلاعیه

Collapse
No announcement yet.

مشکل با دریافت اطلاعات از USART با LabVIEW

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

    مشکل با دریافت اطلاعات از USART با LabVIEW

    سلام دوستان،
    من دارم یه برنامه می نویسم که از طریق labview به میکرو فرمان بدیم تا یه سری کارهارو با توجه به رشته ورودی انجام بده. برنامه رو تو پزوتئوس شبیه سازی میکنم و بدون هیچ مشکلی اجرا میشه اما در عمل و روی میکرو درست پیش نمیره.
    تابع زیر مربوط به قسمت وقفه دریافت اطلاعات USART است، میکرو وقفه رو میفهمه و روندش رو اجرا میکنه اما نتیجه مثل شبیه سازی نیست. مثلا وقتی میخوام رشته ورودی رو LCD کارکتری نشون بدم، هیچی نشون نمیده !!!
    کسی از دوستان تا حالا این مشکلو داشته یا میدونه ناشی از کجاست ؟
    ممنون..
    کد:
    .
    .
    .
    char Input_Data[51]="P25150001000025Q25150001000025D12525251001200240/r";   // Received String from PC wit usart
    
    #define RX_BUFFER_SIZE 64
    char rx_buffer[RX_BUFFER_SIZE];
    
    interrupt [USART_RXC] void usart_rx_isr(void)  {
    char status,data;
    status=UCSRA;
    data=UDR;
    
    if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) { 
      if (data=='P' && rx_wr_index==0) {
        rx_wr_index=1;rx_buffer[0]=data;
        }
      else if (data!='r' && rx_wr_index<=50) {
        rx_buffer[rx_wr_index]=data;rx_wr_index++ ;
        }
      else if (data=='r') {
    		trcpy(Input_Data,rx_buffer);
        rx_wr_index=0;
        }
      } 
    }
    .
    .
    .
    lcd_clear();
    lcd_puts(Input_Data);
    .
    .
    .
    ---------
    .
    .
    ...........

    #2
    پاسخ : مشکل با دریافت اطلاعات از USART با LabVIEW

    پروتئوس رو بذار کنار
    اول مطمئن شو تنظیمات سریالت درسته و ارتباط برقرار میشه (اصلا RS232 کار میکنی ؟) یه بایت (هر چی) بفرست ببین میکرو میگیره مثلا با روشن کردن یه LED یا ست ککردن یه پورت یا نوشتن یه چیزی روی LCD
    بعد داده های خاص بفرست مثلا 0x55 ببین مین رو دریافت میکنی و ....

    دیدگاه


      #3
      پاسخ : مشکل با دریافت اطلاعات از USART با LabVIEW

      سلام
      تجربه منم نشون داده که خیلی نمیشه رو شبیه سازی پروتئوس حساب کرد، شما اول باید از بابت دریافت و ارسال اطلاعاتت مطمئن بشی، توی Labview باید درایور مربوط به ارتباط سریال نصب بشه این کار رو کردی؟
      ساده ترین راه برای تست ارتباط سریال استفاده از نرم افزار codvision بخش ترمینال هست اول با اون ارتباط رو تست کن.

      دیدگاه


        #4
        پاسخ : مشکل با دریافت اطلاعات از USART با LabVIEW

        با سلام
        حواست به زمین رابط سریال هم باشه با زمین مدار وصل باشه.

        دیدگاه


          #5
          پاسخ : مشکل با دریافت اطلاعات از USART با LabVIEW

          ممنون از دوستان
          با ترمینال کدویژن هم امتحان کردم. رشته رو درست دریافت میکنه. با هایپرترمینال هم همینطور. درست میگیره.
          اما تو عمل کار نمیکنه. یه if گذاشتم تا تعداد یه کارکتر خاص مثلا '7' رو بشمرم، تو باودریت پایین مثل 2400 درست کار می کنه اما تو باودریت بالاتر چندتا رو از دست میده.
          ---------
          .
          .
          ...........

          دیدگاه


            #6
            پاسخ : مشکل با دریافت اطلاعات از USART با LabVIEW

            پورت رو با وقفه میخونی؟

            دیدگاه


              #7
              پاسخ : مشکل با دریافت اطلاعات از USART با LabVIEW

              آره، کدش رو هم گذاشتم. یه وقفه برای دریافت اطلاعات تعریف کردم.
              تو اون وقفه اطلاعات رو از پورت میگیرم.
              تو پروتئوس، ترمینال کدویزن، هایپر ترمینال هم کار می کنه اما تو عمل نه !! :angry:
              ---------
              .
              .
              ...........

              دیدگاه


                #8
                پاسخ : مشکل با دریافت اطلاعات از USART با LabVIEW

                وقتی با ترمینال کدویژن کار میکنه یعنی همه چی ارتباط درسته و تنها میمونه پرشدن بافر سریالت که 64 بایت هست.
                تو برنامه لب ویو کمی کندتر کار کن(رابراه اطلاعات نفرست)

                دیدگاه


                  #9
                  پاسخ : مشکل با دریافت اطلاعات از USART با LabVIEW

                  یعنی نرخ ارسال رو بیارم پاین یا اینکه تو ارسال هر کارکتر تاخیر ایجاد کنم ؟
                  چطور میشه این کارو تو لب ویو انجام داد ؟
                  ممنون از کمکت :applause:
                  راستی یه سوال دیگه هم داشتم که می پرسم
                  تو این تایپک سوال رو پرسیدم
                  http://www.eca.ir/forum2/index.php?topic=86890.0
                  بازم ممنون.
                  ---------
                  .
                  .
                  ...........

                  دیدگاه


                    #10
                    پاسخ : مشکل با دریافت اطلاعات از USART با LabVIEW

                    لازم نیست باود رو بیاری پایین.
                    اگه برنامه رو بهتر بنویسی حتی میتونی فرکانس ارسال اطلاعات رو هم ببری بالا.
                    فعلا بعد از هر ارسال از تابع delay استفاده کن

                    دیدگاه


                      #11
                      پاسخ : مشکل با دریافت اطلاعات از USART با LabVIEW

                      منظورت اینه که برنامه کدویژن رو بهتر بنویسم یا برنامه لب ویو رو ؟
                      اگه منظورت کدویژنه، کجا دیگه باید بهینه اش کنم ؟ این روشی که من به کار بردم بهتره یا استفاده از getchar ؟
                      بعد از ارسال هر رشته تو لب ویو تاخیر ایجاد کنم یا بعد از ارسال هر کارکتر ؟
                      ---------
                      .
                      .
                      ...........

                      دیدگاه


                        #12
                        پاسخ : مشکل با دریافت اطلاعات از USART با LabVIEW

                        منظورم تو لب ویو بود چون اونجا داری ارسال میکنی
                        بعد از هر ارسال تو لب ویو یه تاخیر بذار (البته روش بهتر اینه که هر وقت نیاز بود داده ارسال بشه نه همیشه)

                        دیدگاه


                          #13
                          پاسخ : مشکل با دریافت اطلاعات از USART با LabVIEW

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

                          دیدگاه


                            #14
                            پاسخ : مشکل با دریافت اطلاعات از USART با LabVIEW

                            دوستان کسی نظر دیگه ای نداره ؟
                            آخه این برنامه داره تو ترمینال کدویژن و .... جواب میده اما تو عمل راه نمیده !!!!
                            من برای برقراری ارتباط از مبدل usb به com و بعد هم از دو تا rs485 استفاده می کنم. چون مدار در آخر باید روی پروتکل rs485 اجرا بشه.
                            مشکل میتونه از اینجا باشه ؟
                            ---------
                            .
                            .
                            ...........

                            دیدگاه


                              #15
                              پاسخ : مشکل با دریافت اطلاعات از USART با LabVIEW

                              با سلام
                              از مبدل usb to rs485 استفاده کن.مبدل com خروجی ttl داره.

                              دیدگاه

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