اطلاعیه

Collapse
No announcement yet.

مشکل با UART1 میکرو LPX1768

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

    مشکل با UART1 میکرو LPX1768

    سلام
    من میکرو LPC1768 رو تو مد FIFO راه اندازی کردم. کد استفاده شده هم تقریبا شبیه این کد هست

    کد:
    dll = (pclk/16)/baudrate ;  /*baud rate */
     LPC_UART1->FDR = 0;               // Fractional divider not used
     LPC_UART1->LCR = 0x80 | lcr_d | lcr_p | lcr_s; // Data bits, Parity,  Stop bit
     LPC_UART1->DLL = dll;              // Baud Rate depending on PCLK
     LPC_UART1->DLM = (dll >> 8);          // High divisor latch
     LPC_UART1->LCR = 0x00 | lcr_d | lcr_p | lcr_s; // DLAB = 0
     LPC_UART1->IER = 0x03;             // Enable TX/RX interrupts
     
     LPC_UART1->FCR = 0x07;        /* Enable and reset TX and RX FIFO. */
     ser_txRestart = 1;

    کد:
    void UART0_IRQHandler(void) 
    { 
     volatile unsigned long iir;
     
     iir = LPC_UART0->IIR;
      
     if ((iir & 0x4) || (iir & 0xC)) {      // RDA or CTI pending
      while (LPC_UART0->LSR & 0x01) {         // Rx FIFO is not empty
       SER_BUF_WR(ser_in, LPC_UART0->RBR);      // Read Rx FIFO to buffer 
      }
     }
     if ((iir & 0x2)) {              // TXMIS pending
      if (SER_BUF_COUNT(ser_out) != 0) {
       LPC_UART0->THR = SER_BUF_RD(ser_out);     // Write to the Tx FIFO
       ser_txRestart = 0;
      }
      else {
       ser_txRestart = 1;
      }
     }
     ser_lineState = LPC_UART0->LSR & 0x1E;      // update linestate
     return;
    }
    همه چیز خوب کار میکنه بغیر از یک نکته. در ارسال یک رشته تنها کاراکتر آخری دریافت میشه. خیلی عجیب هست. جالب اینکه در صورتی که بین ارسال کاراکتر ها فاصله زمانی بندازی تمامی کاراکتر ها درست دریافت میشه. همه جور تست رو انجام دادم ولی نتیجه نداده.البته تو حالت دیباگ خود KEIL بخوبی کار میکنه !!!!!!!!!!

    #2
    پاسخ : مشکل با UART1 میکرو LPX1768

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

    دیدگاه

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