Có ai cấu hình đồng thời hai bộ QEI trong 33fj64mc802 chưa.các bác cho em hỏi em cấu hình sai ở chỗ nào mà 2 con encoder không thể hoạt động đông thời .cụ thể:
mạch cưng của em như sau: A1: rb5 ;b1:rb6; a2:rb8; b2:rb9
Assign QEA1 To Pin RP5 -- noi chan A cua encoder 1 voi chan rp5
//***************************
RPINR14bits.QEA1R = 5;
//***************************
// Assign QEB1 To Pin RP6 -- noi chan B cua encoder 1 voi chan rp6
//***************************
RPINR14bits.QEB1R = 6;
//***************************
// Assign QEA2 To Pin RP8 -- noi chan A cua encoder 2 voi chan rp8
//***************************
RPINR16bits.QEA2R = 8;
//***************************
// Assign QEB2 To Pin RP9 -- noi chan B cua encoder 2 voi chan rp9
//***************************
RPINR16bits.QEB2R = 9;
// cau hinh ban dau cho cac encoder:
/* QEI1 */
/*---------------------------------------------------------------------------*/
/*
OpenQEI(QEI_MODE_x4_MATCH & QEI_INPUTS_NOSWAP & QEI_IDLE_STOP
& QEI_NORMAL_IO & QEI_INDEX_RESET_DISABLE,
QEI_QE_CLK_DIVIDE_1_128 & QEI_QE_OUT_ENABLE & POS_CNT_ERR_INT_DISABLE);
*/
QEI1CONbits.QEIM = 7; // QEI_MODE_x4_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
DFLT1CONbits.QECK = 6; // QEI_QE_CLK_DIVIDE_1_128
DFLT1CONbits.QEOUT = 1; // QEI_QE_OUT_ENABLE
MAX1CNT = 7999;
POS1CNT = 0;
/*................................................. ......................QEI */
/*---------------------------------------------------------------------------*/
/* QEI2 */
/*---------------------------------------------------------------------------*/
/*
OpenQEI(QEI_MODE_x4_MATCH & QEI_INPUTS_NOSWAP & QEI_IDLE_STOP
& QEI_NORMAL_IO & QEI_INDEX_RESET_DISABLE,
QEI_QE_CLK_DIVIDE_1_128 & QEI_QE_OUT_ENABLE & POS_CNT_ERR_INT_DISABLE);
*/
QEI2CONbits.QEIM = 7; // QEI_MODE_x4_MATCH
QEI2CONbits.SWPAB = 0; // QEI_INPUTS_SWAP
QEI2CONbits.QEISIDL = 1; // QEI_IDLE_STOP
QEI2CONbits.POSRES = 0; // QEI_INDEX_RESET_DISABLE
QEI2CONbits.PCDOUT = 0; // QEI_NORMAL_IO
QEI2CONbits.POSRES = 0; // POS_CNT_ERR_INT_DISABLE
DFLT2CONbits.QECK = 6; // QEI_QE_CLK_DIVIDE_1_128
DFLT2CONbits.QEOUT = 1; // QEI_QE_OUT_ENABLE
MAX2CNT = 7999;
POS2CNT = 0;
em cấu hình như trên nhưng chi có encoder 1 hoạt động.(các encoder ,và chân chíp em đã test cẩn thận).khi em đảo encoder1 và 2 cho nhau thì con 2 lại hoạt động.
em nghĩ cấu hình hai chân rb8,rb9 của em có vẫn đề,nhưng em đọc data sheet chưa gỡ gì được.
|