PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Giao tiếp cổng COM và LPT (http://www.picvietnam.com/forum/forumdisplay.php?f=44)
-   -   Receive data trên PIC24 ??? (http://www.picvietnam.com/forum/showthread.php?t=4745)

ThaoBinh90 14-08-2009 06:01 PM

Receive data trên PIC24 ???
 
Mình mới tìm hiểu giao tiếp UART trên PIC24.
Khi thực hiện truyền dữ liệu từ PIC lên PC thì được nhưng khi thực hiện nhận dữ liệu từ PC truyền xuống PIC thì không thấy có giá trị nào được ghi xuống.
Không biết trường hợp này là do cấu hình sử dụng PIC hay do vấn đề khác.

Code:

#include <p24FJ256GB106.h>
#include <uart.h>

//Configs, EC clock, No protect, Watchdog Off
_CONFIG1 (
          JTAGEN_OFF
        & GCP_OFF
        & GWRP_OFF
        & BKBUG_OFF
        & COE_OFF
        & ICS_PGx1
        & FWDTEN_OFF
        & WINDIS_OFF
        & FWPSA_PR128
        & WDTPS_PS1
      &nbsp;)
_CONFIG2 (
          IESO_OFF
        & PLLDIV_DIV5
        & PLL_96MHZ_ON
        & FNOSC_PRIPLL
        & FCKSM_CSDCMD
        & OSCIOFNC_ON
        & IOL1WAY_OFF
        & DISUVREG_OFF
        & POSCMOD_HS
      &nbsp;)
#define BRATE  103          // 9600 Bd (BREGH=0)
//#define BRATE  103          // 115200 Bd (BREGH=0)
#define U_ENABLE 0x8000    // enable UART, BREGH=0, 1 stop, no parity
#define U_TX  0x0400        // enable transmission, clear all ?  ags


void initU1( void)
{
        //Unclock thanh ghi OSCCON
    OSCCON = 0x0046;
    OSCCON = 0x0057;
    _IOLOCK = 0;
    // Assign U1RX To Pin RP0
    RPINR18bits.U1RXR = 0;
    // Assign U1CTS To Pin RP1
    RPINR18bits.U1CTSR = 1;
    // Assign U1TX To Pin RP2
    RPOR1bits.RP2R = 3;
    // Assign U1RTS To Pin RP3
    RPOR1bits.RP3R = 4;
    OSCCON = 0x0046;
    OSCCON = 0x0057;
    _IOLOCK = 1;
   
    OpenUART1(U_ENABLE , U_TX , BRATE);
    //putsUART1((unsigned int *)"UART SAMPLE CODE\r\n");
} // initU1


int main (void);

int main (void)
{
    unsigned int status;
    unsigned int *rData;
    unsigned long i, j;
   
    initU1();   
    while ( 1 )
    {
          //status = ReadUART1();
        //status = getsUART1(10, *rData, 100000);
        for(i=0; i<600000; i++)
        {
            for(j = 0; j < 2; j++);
            asm("nop");
        }
        if(U1MODEbits.PDSEL == 3)
        {
            WriteUART1(0x66);       
            WriteUART1(U1RXREG);
            //return (U1RXREG);
          }     
        else
        {
            WriteUART1(0x77);
            WriteUART1(U1RXREG);
            //return (U1RXREG & 0xFF);
          }
    } // main loop
    return 1;
}

khi truyền dữ liệu từ PC xuống thì kết quả trả về PC luôn là 0x77 0x00.

có ai biết vấn đề do đâu help me!


Múi giờ GMT. Hiện tại là 04:11 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam