اطلاعیه

Collapse
No announcement yet.

دریافت چند داده پشت سرهم با uart

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

    دریافت چند داده پشت سرهم با uart

    سلام. من baud rate میکرو را روی 9600 با فرکانس 8 مگا هرتز تنظیم کردم که 0.1 درصد خطا داره. وقتی پشت سرهم 13 تا داده را با متلب برای میکرو میفرستم داده ها را نمیگیره ولی وقتی با یک فاصله زمانی مثلا 0.5 ثانیه ای داده ها را میفرستم همه را میکرو دریافت میکنه آیا مشکل از خطای baud rate است یا چیز دیگر؟؟؟؟

    #2
    پاسخ : دریافت چند داده پشت سرهم با uart

    مهندس خودت داری میگی خطا داره ، داری با lpc کد ها رو میگیری با avr ؟

    دیدگاه


      #3
      پاسخ : دریافت چند داده پشت سرهم با uart

      شما احتمالا کریستال داخلی AVR رو داری استفاده می کنی که خطا زیاد داره. از کریستال خارجی استفاده کن و ترجیحا مقادیری که این خطا رو صفر کنند مثل 11.0592 یا ...
      این پست رو هم اگر برای AR زدی باید بری جای دیگه
      ---------
      .
      .
      ...........

      دیدگاه


        #4
        پاسخ : دریافت چند داده پشت سرهم با uart

        نوشته اصلی توسط miladheydari72
        مهندس خودت داری میگی خطا داره ، داری با lpc کد ها رو میگیری با avr ؟
        با lpc1768 داده ها را میگیرم. خطاش 0.1 درصد است یعنی خطای به این کمی هم مشکل ایجاد میکند؟

        دیدگاه


          #5
          پاسخ : دریافت چند داده پشت سرهم با uart

          نوشته اصلی توسط ajapyy
          شما احتمالا کریستال داخلی AVR رو داری استفاده می کنی که خطا زیاد داره. از کریستال خارجی استفاده کن و ترجیحا مقادیری که این خطا رو صفر کنند مثل 11.0592 یا ...
          این پست رو هم اگر برای AR زدی باید بری جای دیگه
          آیا کریستال داخلیه lpc1768 هم خطا داره؟

          دیدگاه


            #6
            پاسخ : دریافت چند داده پشت سرهم با uart

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

            دیدگاه


              #7
              پاسخ : دریافت چند داده پشت سرهم با uart

              با سلام
              نوشته اصلی توسط morteza7090
              سلام دوست عزیز-چطور با متلب بتونم با میکرو ارتباط سریال برقرار کنم؟ویندوز 7هلیپر ترمینال نداره هرچی ام دانلود میکنیم ناقصه .یه راهنمایی می کنید بد جور گیرم.الان نمیدونم مشکل از برنامه منه یا محیطی که ارسال ودریافت میکنم سریال رو
              اگه مشکل فقط نرم افزار ارسال و دریافته، نرم افزار های دیگه هم هستن، برای مثال نرم افزار هرکولس---->>لینک دانلود : http://new.hwg.cz/files/download/sw/...ules_3-2-8.exe
              نرم افزار MICRO C PRO FOR ARM هم هست که البته خودش IDE هست، اما ابزاز های جانبی خوبی داره، که توش یه ترمینال جالب هم هست، که من اکثرا از این ایتفاده می کنم
              The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

              دیدگاه


                #8
                پاسخ : دریافت چند داده پشت سرهم با uart

                مرسی آقا حسام-کار کردن باهاش چطوره؟آسونه
                من از کابل یو اس بی به سریال استفاده میکنم

                دیدگاه


                  #9
                  پاسخ : دریافت چند داده پشت سرهم با uart

                  خواهش می کنم، بله کابل یو اس بی یا چیز دیگه لایه فیزیکی کار هست و به برنامه کار نداره، کار کردن هم بله اسونه، تنظیمات رو انجام بدین، پورت رو باز کنین و ارسال و دریافت داشته باشین
                  The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

                  دیدگاه


                    #10
                    پاسخ : دریافت چند داده پشت سرهم با uart

                    نوشته اصلی توسط hessam2013
                    خواهش می کنم، بله کابل یو اس بی یا چیز دیگه لایه فیزیکی کار هست و به برنامه کار نداره، کار کردن هم بله اسونه، تنظیمات رو انجام بدین، پورت رو باز کنین و ارسال و دریافت داشته باشین
                    من هیچی ارسال و دریافت نمیکنم نمیدونم مشکل کارم کجاست...
                    این یه نمونه برنامه سادس که نوشتم

                    http://opload.ir/downloadf-e2846788b28b1-rar.html

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

                    کد:
                    #include <lpc17xx.h>
                    #include <stdio.h>
                    #include <string.h>
                    #define LCD_LPC1768    /* Char LCD definition */
                    #define LCD_PORT_2
                    #define LCD_RS   0
                    #define LCD_RW   1
                    #define LCD_E   2
                    #define LCD_DB4  4
                    #define LCD_DB5  5
                    #define LCD_DB6  6
                    #define LCD_DB7  7
                    
                    #include "lcd.h"
                    #include "uart.h"
                    char uart0_cunter=0;
                    char uart0_buffer[10];
                    
                    void UART0_IRQHandler(void) {
                    
                    		uart0_buffer[uart0_cunter]=LPC_UART0->RBR;
                    	    uart0_cunter += 1;
                    }
                    void delay_ms(int);
                    void delay_ms(int t){
                    	int j=0;
                    	while(t--){
                    		for(j=0;j<=20000;j++);
                    	}}
                    	int main(){
                    		int s;
                    		unsigned char sms[10]={'m','o','r','t','e','z','a','\n'};
                    		lcd_init();
                    		 SystemInit();
                    	  UART0_Init ();
                    		lcd_putsf("hello");//test lcd
                    		delay_ms(1000);
                    		lcd_clear();
                    		while(1){
                    		lcd_putsf(uart0_buffer);
                    			delay_ms(1000);
                      UART0_SendString(sms);
                    			lcd_clear();
                    
                    	
                    
                    		}
                    	}

                    دیدگاه


                      #11
                      پاسخ : دریافت چند داده پشت سرهم با uart

                      اینم هدر uart.c
                      دوستان ببینم کسی میتونه کمکم کنه
                      پروژه باید تحویل بدم نمیدونم مشکل کارم کجاست
                      کد:
                      /*-------------------------------------------------------------------------------
                      																 www.ECA.ir
                      												  LPC1768 Dev Board Rev.A
                      --------------------------------------------------------------------------------*/
                      #include "lpc17xx.h"               /* LPC17xx definitions  */
                      #include "uart.h"
                      
                      #define FPCLK     25000000             
                                                        
                      
                      #define UART0_BPS   9600                     /* 0 Serial communication baud rate      */
                      /*********************************************************************************************************
                      ** Function name:    UART0_Init
                      ** Descriptions:    By default initialize the serial port 0 pins and communication parameters. Set to 8 data bits, 1 stop bit, no parity
                      ** input parameters:  No
                      ** output parameters:  No
                      ** Returned value:   No
                      *********************************************************************************************************/
                      void UART0_Init (void)
                      {
                      	uint16_t usFdiv;
                        /* UART0 */
                      	 LPC_SC->PCONP |=(1<<3);
                        LPC_PINCON->PINSEL0 |= (1 << 4);       /* Pin P0.2 used as TXD0 (Com0) */
                        LPC_PINCON->PINSEL0 |= (1 << 6);       /* Pin P0.3 used as RXD0 (Com0) */
                       
                       	LPC_UART0->LCR = 0x83;           /* Allows you to set the baud rate        */
                       usFdiv = (FPCLK / 16) / UART0_BPS;      /* Set baud rate          */
                        LPC_UART0->DLM =usFdiv / 256;
                        LPC_UART0->DLL =usFdiv % 256;
                      	//LPC_UART0->FDR=0X43;
                        LPC_UART0->LCR = 0x03;           /* Locked baud rate          */
                        LPC_UART0->FCR =0x07;
                        LPC_UART0->IER = 0x01; 	
                      	 NVIC_SetPriority(UART0_IRQn,0);     /* Default priority group 0, can be 0(highest) - 31(lowest) */
                        NVIC_EnableIRQ(UART0_IRQn);
                      }
                      
                      /*********************************************************************************************************
                      ** Function name:    UART0_SendByte
                      ** Descriptions: send data from serial port 0
                      ** Input parameters: data: data sent
                      ** Output parameters: None
                      ** Returned value: None
                      *********************************************************************************************************/
                      int UART0_SendByte (int ucData)
                      {
                        while (!(LPC_UART0->LSR & 0x20));
                        return (LPC_UART0->THR = ucData);
                      }
                      
                      /*----------------------------------------------------------------------------
                       Read character from Serial Port  (blocking read)
                       *----------------------------------------------------------------------------*/
                      int UART0_GetChar (void) 
                      {
                       	while (!(LPC_UART0->LSR & 0x01));
                       	return (LPC_UART0->RBR);
                      }
                      
                      /*********************************************************************************************************
                      Write character to Serial Port
                      ** Function name: UART0_SendString
                      ** Descriptions: send a string to the serial port
                      ** Input parameters: s: pointer to send the string
                      ** Output parameters: None
                      ** Returned value: None
                      *********************************************************************************************************/
                      void UART0_SendString (unsigned char *s) 
                      {
                       	while (*s != 0) 
                      	{
                        		UART0_SendByte(*s++);
                      	}
                      }
                      
                      
                      void UART0_SendChar(uint16_t disp)
                      {
                      	uint16_t dispbuf[4];
                      	uint8_t i;
                      
                      	dispbuf[3] = disp%10 + '0';
                      	dispbuf[2] = disp/10%10 + '0';
                      	dispbuf[1] = disp/10/10%10 + '0';
                      	dispbuf[0] = disp/10/10/10%10 + '0';
                      	for(i=0;i<4;i++)
                      		UART0_SendByte(dispbuf[i]);	
                      }

                      دیدگاه


                        #12
                        پاسخ : دریافت چند داده پشت سرهم با uart

                        از پی سی چی به میکرو میفرستین، بیشتر از 10 حرف ؟
                        The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

                        دیدگاه


                          #13
                          پاسخ : دریافت چند داده پشت سرهم با uart

                          نوشته اصلی توسط hessam2013
                          از پی سی چی به میکرو میفرستین، بیشتر از 10 حرف ؟
                          همه چی امتحان کردم/از کارکتر خالی گرفته تا بیشتر از ده حرف وجمله طولانی
                          هیچکدوم نمیاد....
                          فقط گاهی اوقات کارکتر که با دستور
                          کد:
                          UART0_GetChar()
                          استفاده میکنم-یه سری عدد سه رقمی نشون میده به ازای هر کارکتر

                          دیدگاه


                            #14
                            پاسخ : دریافت چند داده پشت سرهم با uart

                            راستی چرا RBR رو می خونید، RDR رو نباید بخونید؟
                            The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

                            دیدگاه


                              #15
                              پاسخ : دریافت چند داده پشت سرهم با uart

                              نوشته اصلی توسط hessam2013
                              راستی چرا RBR رو می خونید، RDR رو نباید بخونید؟
                              RDRاصلا نمیدونم چیه
                              اما rbrبافری هست که آخرین مقدار دریافت شده داخلش قرار میگیره

                              دیدگاه

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