اطلاعیه

Collapse
No announcement yet.

فعال کردن uart2

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

    فعال کردن uart2

    من UART0/1/3 رو راه اندازی کردم و از اونها استفاده کردم. ولی UAR2 رو که فعال می کنم . مشکل داره. راه اندازی UART2 نکته داره؟
    همین مشکل رو با LPC1788 دارم.

    #2
    پاسخ : فعال کردن uart2

    سلام
    نه مشکلی نداره
    مثل باقیه است
    اول فعال کردن پاور بعد تنظیم pinsell و بعد سایر تنظیمات ...
    فيلم آموزشي ميکروکنترلر LPC1768
    فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
    فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
    فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

    دیدگاه


      #3
      پاسخ : فعال کردن uart2

      همه اینکارها رو انجام می دم، ولی فقط در مورد سایر uart ها جواب می گیرم، نه uart2، کسی نمونه برنامه برای راه اندازی uart2 داره؟

      دیدگاه


        #4
        پاسخ : فعال کردن uart2

        همین سمپل های برد لند تایگر یه کتابخونه گذاشته برای uart0 و uart2 که همان طور که گفتم بعد آن دو تنظیم تمام 0 های LPC_UART0 را کرده LPC_UART2 همین.
        فيلم آموزشي ميکروکنترلر LPC1768
        فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
        فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
        فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

        دیدگاه


          #5
          پاسخ : فعال کردن uart2

          من تمامی uart های میکرو رو جواب گرفتم به غیر از uart2. من اول uart رو تو شبیه ساز تست می کنم و اینکه می گم uart2 کار نمیکنه، در شبیه ساز کار نمیکنه، به نظر شما به شبیه ساز اعتماد کنم؟ بقیه uart ها توی شبیه ساز جواب میده.

          دیدگاه


            #6
            پاسخ : فعال کردن uart2

            خوب پس برنامت مشکل داره
            برنامتو کامل بزار اید یکی وقت کنه چکش کنه

            دیدگاه


              #7
              پاسخ : فعال کردن uart2

              من اومدم عملی UART2 رو تست کردم
              قبلا UART0,1 رو راه انداختم و اینتراپت دریافتشون هم کار می کنه

              برای UART2 در ارسال مشکلی ندارم. در دریافت هم وقتی فلگ RDA رو چک می کنم و بافر دریافت رو می خونم مشکلی نداره اما وقتی اینتراپت دریافت رو فعال می کنم به محض دریافت یک بایت میکرو هنگ می کنه و به این قسمت از فایل start up میره:

              کسی می تونه کمک کنه که هم کار ما راه بیفته هم کار این بنده خدا
              اینم برنامه
              کد:
              void Init_serial2 (void)                   
              {
              	uint16_t usFdiv;
              	LPC_PINCON->PINSEL0 |= (1 << 20);       /* Pin P0.10 used as TXD2 (Com2) */
              	LPC_PINCON->PINSEL0 |= (1 << 22);       /* Pin P0.11 used as RXD2 (Com2) */
              
              	LPC_SC->PCONP = LPC_SC->PCONP|(1<<24);	   /*Open UART2 power control bit	      */
              
              	LPC_UART2->LCR = 0x83;            /* Allows you to set the baud rate        */
              	usFdiv = (Fcpu / 16) / BaudRate;      /* Set baud rate          */
              	LPC_UART2->DLM = usFdiv / 256;
              	LPC_UART2->DLL = usFdiv % 256; 
              	LPC_UART2->LCR = 0x03;            /* Locked baud rate          */
              	LPC_UART2->IER = 0x01 ;      //can be changed only when DLAB=0
              	LPC_UART2->FCR = 0x07;
              	NVIC_SetPriority(UART2_IRQn,20);    // Default priority group 3, can be 0(highest) - 31(lowest) 
              	NVIC_EnableIRQ(UART2_IRQn);      // Enable UART0 Interrupt 
              }
              void UART2_IRQHandler (void) __irq 
              {
               unsigned char IIRValue, LSRValue;
              
               IIRValue = LPC_UART2->IIR;
              
               IIRValue >>= 1;			// skip pending bit in IIR
               IIRValue &= 0x07;			// check bit 1~3, interrupt identification 
              
               else if ( IIRValue == IIR_RDA )	// Receive Data Available 
               {
              		//Receive Data Available
              		UART2Buffer[UART2Count] = LPC_UART2->RBR;
              		sendchar2(UART2Buffer[UART2Count]);
               }
               else if ( IIRValue == IIR_CTI )	// Character timeout indicator 
               {
              		// Character Time-out indicator /
              		UART2Status |= 0x100;		// Bit 9 as the CTI error 
              		sendchar2(UART2Buffer[UART2Count]);
              		UART2Count++;
               }
              }
              int main (void) 
              {
              	unsigned int i;
              	Init_serial2();  
              	while(1)
              	{
              		i++;
              		sendchar2(i); 
              		delay_ms(1000);
              	}
              }

              دیدگاه


                #8
                پاسخ : فعال کردن uart2

                سلام دوستان من با uart0کار میکنم وصل به کامپیوتر کردم اما کارکتر ارسالی و دریافتی اشتباه میکنه.تمام کارکتر ها رو اشتباه میفرسته؟
                مشکل از چیه بود ریت هم 9600هست

                دیدگاه


                  #9
                  پاسخ : فعال کردن uart2

                  نوشته اصلی توسط morteza7090
                  سلام دوستان من با uart0کار میکنم وصل به کامپیوتر کردم اما کارکتر ارسالی و دریافتی اشتباه میکنه.تمام کارکتر ها رو اشتباه میفرسته؟
                  مشکل از چیه بود ریت هم 9600هست
                  مشکلتون رو از یک تاپیک پی گیری کنید سریعتر به جواب می رسید.
                  کاراکتری که می فرستین رو داخل کوتیشن بزارید.
                  مثلا:
                  کد:
                  UARTPutChar(UART_0,'a');
                  هر انسانی که احساس بی نیازی کند سرکش و طغیان گر می شود...

                  دیدگاه


                    #10
                    پاسخ : فعال کردن uart2

                    نوشته اصلی توسط حمید لطفعلی زاده
                    مشکلتون رو از یک تاپیک پی گیری کنید سریعتر به جواب می رسید.
                    کاراکتری که می فرستین رو داخل کوتیشن بزارید.
                    مثلا:
                    کد:
                    UARTPutChar(UART_0,'a');
                    مرسی،اینکار هم کردم،چون از برد آموزشی همین سایت استفاده میکنم از کتابخونه که برنامه نمونه داشت استفاده میکنم،اما باز اشتباه میشه

                    دیدگاه


                      #11
                      پاسخ : فعال کردن uart2

                      اگر همه کارکترها اشتباه میرن، مشکل از باودریت هستش.مظمئن بشید باودریت توی دو طرف یکی هستش.
                      ---------
                      .
                      .
                      ...........

                      دیدگاه


                        #12
                        پاسخ : فعال کردن uart2

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

                        دیدگاه


                          #13
                          پاسخ : فعال کردن uart2

                          تیکه کدی که برای تنظیم usart و ارسال داده استفاده می کنی رو بزار اینجا.
                          ---------
                          .
                          .
                          ...........

                          دیدگاه


                            #14
                            پاسخ : فعال کردن uart2

                            :nice:
                            کد:
                            #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
                            *********************************************************************************************************/
                            void UART0_SendByte (int ch)
                            {
                              while (!(LPC_UART0->LSR & 0x20));
                              LPC_UART0->THR =ch;
                            }
                            void UART0_SendChar(int disp)
                            {
                            	int dispbuf[4];
                            	int 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]);	
                            }
                            
                            /*----------------------------------------------------------------------------
                             Read character from Serial Port  (blocking read)
                             *----------------------------------------------------------------------------*/
                            int UART0_GetChar (void) 
                            {
                             	while (!(LPC_UART0->LSR & 0x01));
                             	return (LPC_UART0->RBR);
                            }
                            void UART0_SendString (unsigned char *s) 
                            {
                             	while (*s != 0) 
                            	{
                              		UART0_SendByte(*s++);
                            	}
                            }
                            نوشته اصلی توسط ajapyy

                            تیکه کدی که برای تنظیم usart و ارسال داده استفاده می کنی رو بزار اینجا.

                            دیدگاه


                              #15
                              پاسخ : فعال کردن uart2

                              LPC_UART0->FCR =0x07;
                              اینو بزار 0x06;
                              ---------
                              .
                              .
                              ...........

                              دیدگاه

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