đây là đoạn chương trình khởi tạo và đọc QEI,các bác xem tham khảo,khi đọc encoder thường sử dụng chế độ đọc xung khi ở tốc độ cao,còn đọc theo kiểu capture thời gian sử dụng Timer5 chỉ nên dùng ở tốc độ thấp.
#byte QEICON=0xFB6
#byte POSCNTH=0xF67
#byte POSCNTL=0xF66
#byte MAXCNTH=0xF65
#byte MAXCNTL=0xF64
int16 Read_QEI() //doc QEI
{
int16 tmp=0;
tmp = make16(POSCNTH, POSCNTL);
POSCNTH = 0x3F;
POSCNTL = 0xFF;
return tmp;
}
void Init_QEI() //khoi tao QEI
{
set_tris_A(0xFF);
MAXCNTL=0xFF;
MAXCNTH=0xFF;
POSCNTH = 0x3F;
POSCNTL = 0xFF;
QEICON = 0b10111000;
}
|