View Single Post
Old 14-08-2009, 06:01 PM   #1
ThaoBinh90
Đệ tử 1 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 19
:
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!

thay đổi nội dung bởi: phamminhtuan, 14-08-2009 lúc 06:19 PM. Lý do: định dạng code
ThaoBinh90 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn