اطلاعیه

Collapse
No announcement yet.

مشکل با بافر سریال در lpc1768

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

    مشکل با بافر سریال در lpc1768

    سلام به همگی
    من برای دریافت یک عدد 3 تا 5 رقمی با پورت سریال 1768 مشکل دارم
    بافر FIFO هم فعال هست
    برای تست یه برنامه نوشتم که هرچه در ورودی دریافت شد در خروجی نمایش داده بشه
    حالا هر عددی که به میکرو میفرستم، فقط رقم پرارزش اون دریافت میشه و مابقی اعداد دریافت نمیکنه
    لطفا راهنمایی کنید
    ---------------------------------------------------ویرایش----------------------------------------------------------------
    کد:
    #include <lpc17xx.h> 
    #include "stdio.h"
    #include "lpc17xx_pinsel.h"
    #include "lpc17xx_gpio.h"
    #include "lpc17xx_uart.h"
    #include "lpc17xx_pwm.h"
    #include "lpc17xx_clkpwr.h"
    #include "debug_frmwrk.h"
    
    int u0 = 0;
    unsigned int t;
    uint8_t input0;
    
    
    void Delay (uint32_t Time)
    {
      uint32_t i;
      
      i = 0;
      while (Time--) {
        for (i = 0; i < 5000; i++);
      }
    }
    
    void UART2_IRQHandler(void)
    {
    		t = UARTGetChar(LPC_UART2);
    //		t = UART_ReceiveByte(LPC_UART2);
    		u0 = 1;
    }
    
    int main(void)
    {
    
    //*********************************************************UART2 Configuration structure variable
    	PINSEL_CFG_Type PinCfg2;
    	UART_CFG_Type UARTConfigStruct2;
    	UART_FIFO_CFG_Type UARTFIFOConfigStruct2;
    //*********************************************************Initialize UART2 Pin Connect : P0.10 , P0.11 ( pins 48 & 49 Of Micro )
    	PinCfg2.Funcnum = 1; 
    	PinCfg2.OpenDrain = 0;
    	PinCfg2.Pinmode = 0;
    	PinCfg2.Pinnum = 10;
    	PinCfg2.Portnum = 0;
    	PINSEL_ConfigPin(&PinCfg2);
    	PinCfg2.Pinnum = 11;
    	PINSEL_ConfigPin(&PinCfg2);
    	
    	UARTConfigStruct2.Baud_rate = 38400;
    	UARTConfigStruct2.Databits = UART_DATABIT_8;
    	UARTConfigStruct2.Parity = UART_PARITY_NONE;
    	UARTConfigStruct2.Stopbits = UART_STOPBIT_1;
    
    
    	CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCUART2, ENABLE);
    //*********************************************************Initialize UART2 peripheral with given to corresponding parameter
    	UART_Init(LPC_UART2,&UARTConfigStruct2);
    	UART_FIFOConfigStructInit(&UARTFIFOConfigStruct2);
    //*********************************************************Initialize FIFO for UART2 peripheral
    	UART_FIFOConfig(LPC_UART2, &UARTFIFOConfigStruct2);
    
    	UART_IntConfig(LPC_UART2, UART_INTCFG_RBR, ENABLE);
    //*********************************************************Enable Interrupt for UART2 channel
    	NVIC_EnableIRQ(UART2_IRQn);
    //*********************************************************Enable UART2 Transmit
    	UART_TxCmd(LPC_UART2, ENABLE);
    
    //___________________________________________________________________________
    
    	while (UART_CheckBusy(LPC_UART2));
    	UARTPuts_(LPC_UART2, "In The Name Of God");
    
    		while (1)
    		{
    			if (u0==1)
    			{
    				UARTPuts_(LPC_UART2, &t);
    				u0 = 0;
    			}
    		}
    }
    پناه بر تو که بی واژه مرا می شنوی

    #2
    پاسخ : مشکل با بافر سریال در lpc1768

    با سلام
    برنامه باشه بهتر میشه راهنمایی کرد
    The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

    دیدگاه


      #3
      پاسخ : مشکل با بافر سریال در lpc1768

      نوشته اصلی توسط hessam2013
      با سلام
      برنامه باشه بهتر میشه راهنمایی کرد
      پست اول ویرایش شد
      پناه بر تو که بی واژه مرا می شنوی

      دیدگاه


        #4
        پاسخ : مشکل با بافر سریال در lpc1768

        صرفا برای نمایش چگونگی دریافت از یوزارت برنامه رو ویرایش کردم، و فقط باید روی قسمت اینتراپتش مطالعه داشته باشین وگرنه main رو همین طوری نوشتم و اپلیکیشن درستی نیست، تست کنید ببینید که درست دریافت میشه یا نه،
        [code=c]
        #include <lpc17xx.h>
        #include "stdio.h"
        #include "lpc17xx_pinsel.h"
        #include "lpc17xx_gpio.h"
        #include "lpc17xx_uart.h"
        #include "lpc17xx_pwm.h"
        #include "lpc17xx_clkpwr.h"
        #include "debug_frmwrk.h"

        int u0 = 0;
        //unsigned int t;
        uint8_t buffer[100];
        uint8_t bufIndex=0;
        uint8_t input0;


        void Delay (uint32_t Time)
        {
        uint32_t i;

        i = 0;
        while (Time--) {
        for (i = 0; i < 5000; i++);
        }
        }

        void UART2_IRQHandler(void)
        {
        // t = UARTGetChar(LPC_UART2);
        // t = UART_ReceiveByte(LPC_UART2);
        buffer[bufIndex++] = UARTGetChar(LPC_UART2);
        buffer[bufIndex] = 0;//null termination

        // u0 = 1;
        }

        int main(void)
        {

        //************************************************** *******UART2 Configuration structure variable
        PINSEL_CFG_Type PinCfg2;
        UART_CFG_Type UARTConfigStruct2;
        UART_FIFO_CFG_Type UARTFIFOConfigStruct2;
        //************************************************** *******Initialize UART2 Pin Connect : P0.10 , P0.11 ( pins 48 & 49 Of Micro )
        PinCfg2.Funcnum = 1;
        PinCfg2.OpenDrain = 0;
        PinCfg2.Pinmode = 0;
        PinCfg2.Pinnum = 10;
        PinCfg2.Portnum = 0;
        PINSEL_ConfigPin(&PinCfg2);
        PinCfg2.Pinnum = 11;
        PINSEL_ConfigPin(&PinCfg2);

        UARTConfigStruct2.Baud_rate = 38400;
        UARTConfigStruct2.Databits = UART_DATABIT_8;
        UARTConfigStruct2.Parity = UART_PARITY_NONE;
        UARTConfigStruct2.Stopbits = UART_STOPBIT_1;


        CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCUART2, ENABLE);
        //************************************************** *******Initialize UART2 peripheral with given to corresponding parameter
        UART_Init(LPC_UART2,&UARTConfigStruct2);
        UART_FIFOConfigStructInit(&UARTFIFOConfigStruc t2);
        //************************************************** *******Initialize FIFO for UART2 peripheral
        UART_FIFOConfig(LPC_UART2, &UARTFIFOConfigStruct2);

        UART_IntConfig(LPC_UART2, UART_INTCFG_RBR, ENABLE);
        //************************************************** *******Enable Interrupt for UART2 channel
        NVIC_EnableIRQ(UART2_IRQn);
        //************************************************** *******Enable UART2 Transmit
        UART_TxCmd(LPC_UART2, ENABLE);

        //__________________________________________________ _________________________

        while (UART_CheckBusy(LPC_UART2));
        UARTPuts_(LPC_UART2, "In The Name Of God"

        while (1)
        {
        // if (u0==1)
        // {
        // UARTPuts_(LPC_UART2, &t);
        // u0 = 0;
        // }
        Delay(1000);
        UARTPuts_(LPC_UART2, buffer);
        }
        }
        [/code]
        The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

        دیدگاه

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