본문 바로가기

[Microchip]/dsPIC33-SM

[dsPIC MotorDriver] QEI 테스트

[dsPIC MotorDriver] QEI 테스트


 
dsPIC33은 PPS기능을 제공해 Pin map을 PRx 핀에 원하는 형태로 설정할 수 있다.
입력과 출력에따라 설정 방법은 다른데 UART의 경우  RPINR18에 입력 RP를 설정하면 된다.
 
//U1RX를 RP20에 입력으로 연결
RPINR18bits.U1RXR = 20;
 
//RP19를 U1TX에 연결
RPOR9bits.RP19R = 3;
 
 
PPS제어를 위해서는 UNLOCK_PPS() 해서 설정하고, 설정후에는 LOCK_PPS() 를 해 주어야 한다.
이 설정은 런타임시 한번만 가능한것 같다. <- 좀더 알아볼 필요가 있음.
그래서 config.h 에 핀맵 정의을 한번에 할수 있도록 했다.
 
 
dsPIC33  QEI블록도
16비트라 약간의 아쉬움은 있지만 나름 편리하고 상당히 간단하게 제어 가능하다



dsPIC QEI 타이밍도




QEI 엔코더 구조





//QEI모듈 초기화 함수
void initQEI(void)
{
 QEI1CONbits.QEIM  = 5; // QEI_MODE_x2_MATCH
 QEI1CONbits.SWPAB  = 0; // QEI_INPUTS_SWAP
 QEI1CONbits.QEISIDL = 1; // QEI_IDLE_STOP
 QEI1CONbits.POSRES = 0; // QEI_INDEX_RESET_DISABLE
 QEI1CONbits.PCDOUT = 0; // QEI_NORMAL_IO
 QEI1CONbits.POSRES = 0; // POS_CNT_ERR_INT_DISABLE
 QEI1CONbits.TQCS = 0;
 QEI1CONbits.UPDN_SRC = 1;
 
 DFLT1CONbits.QECK = 6; // QEI_QE_CLK_DIVIDE_1_128
 DFLT1CONbits.QEOUT = 0; // QEI_QE_OUT_ENABLE
 
 MAX1CNT = 0xFFFF;
 POS1CNT = 0;
}
 
 
dsPIC QEI테스트 결과 시리얼 출력
dsPIC33 EVM test Program.
QEI=0
QEI=2
QEI=4
QEI=6
QEI=6
QEI=8
QEI=10
QEI=14
QEI=20
QEI=22
QEI=26

diPIC33 QEI 테스트 동영상

반응형