dsPIC33FJ802MC 를 이용하여 여러가지 테스트를 하던중에 UART설정에 오류가 있는걸 확인했다.
dsPIC33은 PPS기능을 제공해 Pin map을 PRx 핀에 원하는 형태로 설정(remap)할 수 있다.
입력과 출력에따라 설정 방법은 다른데 UART의 경우 RPINR18에 입력 RP를 설정하면 된다.
//U1RX를 RP20에 입력으로 연결
RPINR18bits.U1RXR = 20;
//RP19를 U1TX에 연결
RPOR9bits.RP19R = 3;
PPS제어를 위해서는 UNLOCK_PPS() 해서 설정하고, 설정후에는 LOCK_PPS() 를 해 주어야 한다.
그리고 만약 포트가 ADC와 겹쳐있다면 ADC기능을 disable해 주어야 한다.
#define U0_RXINIT() (AD1PCFGL = 0xFFFF)
테스트 동영상
MPLAB 컴파일러를 업데이트하면 [pps.h]가 추가되는데 이것을 이요하면 쉽게 설정 가능하다.
#define PPSUnLock __builtin_write_OSCCONL(OSCCON & 0xbf)
#define PPSLock __builtin_write_OSCCONL(OSCCON | 0x40)
#define PPSLock __builtin_write_OSCCONL(OSCCON | 0x40)
반응형