PDA

View Full Version : Receive data trên PIC24 ???


ThaoBinh90
14-08-2009, 06:01 PM
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.


#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!