[Microchip]/dsPIC33E2014. 4. 5. 21:30

dsPIC33E - UART 테스트

dsPIC33E - UART 테스트





dsPIC33E UART 블록도




dsPIC33E UART 초기화 코드

UART도 약간의 레지스터 변화가 있어 코드수정이 필요하다.


void U0_Init(unsigned char baud)

{

U0_TXINIT();

U0_RXINIT();


U0_SetBaud(baud);


U1MODEbits.STSEL = 0; // 1 스톱 비트

U1MODEbits.PDSEL = 0; // No 패리티, 8비트  데이터 전송

U1MODEbits.ABAUD = 0; // Autobaud 중지

U1MODEbits.BRGH = 1;


U1STAbits.UTXISEL1 = 1; //인터럽트 사용 중지

U1STAbits.UTXISEL0 = 1; //인터럽트 사용 중지

U1STAbits.URXISEL  = 0; //1 문자 수신후, 인터럽트 발생


U1MODEbits.UARTEN   = 1; //UART1 모듈 동작 시작 설정

U1STAbits.UTXEN     = 1; //UART1 Tx 동작 설정


IFS0bits.U1TXIF = 0; //UART1 송신 인터럽트 플래그 클리어

IFS0bits.U1RXIF = 0; //UART1 수신 인터럽트 플래그 클리어


IEC0bits.U1TXIE = 0; //UART1 송신 인터럽트 중지

IEC0bits.U1RXIE = 0; //UART1 수신 인터럽트 중지


IEC4bits.U1EIE = 0; //UART1 에러 인터럽트 중지

}




dsPIC33E UART 송수신 함수

#define u0_WaitForReceive() while(!IFS0bits.U1RXIF);(IFS0bits.U1RXIF = 0)

#define u0_RxData() (U1RXREG)


#define u0_TxData(Data) (U1TXREG = Data)

#define u0_WaitForSend() while(!U1STAbits.TRMT)


#define u0_IsReceiveData() (IFS0bits.U1RXIF)



unsigned char U0_GetByte(void)

{

u0_WaitForReceive();

return u0_RxData();

}


void U0_PutByte(unsigned char Data)

{

u0_TxData(Data);

u0_WaitForSend();

}




Posted by nexp

댓글을 달아 주세요