View Single Post
Old 15-09-2009, 11:55 AM   #18
thanhgand
Nhập môn đệ tử
 
Tham gia ngày: Jun 2009
Bài gửi: 5
:
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.
thanhgand vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn