//----------------------------------------------------------- // demo2.cpp Chao Chi-Mou // // This program can test the ENC600 performance, // STEP200 card will output pulse and receive from ENC600 // to measure the pulse // // compiled under large mode, Turbo C++ // // v1.0 01/10/2002 //----------------------------------------------------------- #include #include #include #include #include "enc600.h" #include "mstep2.h" #define ENC600_CARD1 0 #define STEP200_CARD1 0 //----------------------------------------------------------------------- typedef struct { unsigned long x1_value; unsigned long x2_value; unsigned long x3_value; unsigned long x4_value; unsigned long x5_value; unsigned long x6_value; unsigned char x1_index; unsigned char x2_index; unsigned char x3_index; unsigned char x4_index; unsigned char x5_index; unsigned char x6_index; unsigned char op; }ENC600card_parameter; ENC600card_parameter card1; typedef struct { unsigned char DDA; unsigned char AD; unsigned int LSP; unsigned int HSP; unsigned char xmode,ymode; unsigned char xdir; unsigned char ydir; unsigned char xson; unsigned char yson; }STEP200card_parameter; STEP200card_parameter card2; //----------------------------------------------------------------------- void main() { long pulse; unsigned char status; clrscr(); if (ENC6_REGISTRATION(ENC600_CARD1, 0)!=YES) cprintf("PISO_ENC600 doesn't exist!\r\n"); ENC6_INIT_CARD(ENC600_CARD1, ENC_CW_CCW , ENC_CW_CCW , ENC_CW_CCW , ENC_CW_CCW , ENC_CW_CCW , ENC_CW_CCW); ENC6_RESET_ENCODER(ENC600_CARD1,X1_axis); ENC6_RESET_ENCODER(ENC600_CARD1,X2_axis); ENC6_RESET_ENCODER(ENC600_CARD1,X3_axis); ENC6_RESET_ENCODER(ENC600_CARD1,X4_axis); ENC6_RESET_ENCODER(ENC600_CARD1,X5_axis); ENC6_RESET_ENCODER(ENC600_CARD1,X6_axis); //---------------------------------------------------------- card2.DDA = 1; card2.AD = 10; card2.LSP = 20; card2.HSP = 2040; card2.xmode = CW_CCW; card2.ymode = CW_CCW; card2.xdir = NORMAL_DIR; card2.ydir = NORMAL_DIR; card2.xson = OFF; card2.yson = OFF; MSTEP2_REGISTRATION(STEP200_CARD1, 0x300); MSTEP2_RESET_SYSTEM(STEP200_CARD1); MSTEP2_SET_VAR(STEP200_CARD1, card2.DDA, card2.AD, card2.LSP, card2.HSP); MSTEP2_SET_DEFDIR(STEP200_CARD1, card2.xdir, card2.ydir); MSTEP2_SET_MODE(STEP200_CARD1, card2.xmode, card2.ymode); MSTEP2_SET_SERVO_ON(STEP200_CARD1, card2.xson, card2.yson); delay(200); //---------------------------------------------------------- pulse=50000000; MSTEP2_HSP_PULSE_MOVE(STEP200_CARD1, X_axis, pulse); do { status=MSTEP2_IS_X_STOP(STEP200_CARD1); card1.x1_value = ENC6_GET_ENCODER(ENC600_CARD1,X1_axis); card1.x2_value = ENC6_GET_ENCODER(ENC600_CARD1,X2_axis); card1.x3_value = ENC6_GET_ENCODER(ENC600_CARD1,X3_axis); card1.x4_value = ENC6_GET_ENCODER(ENC600_CARD1,X4_axis); card1.x5_value = ENC6_GET_ENCODER(ENC600_CARD1,X5_axis); card1.x6_value = ENC6_GET_ENCODER(ENC600_CARD1,X6_axis); card1.x1_index = ENC6_GET_INDEX(ENC600_CARD1,X1_axis); card1.x2_index = ENC6_GET_INDEX(ENC600_CARD1,X2_axis); card1.x3_index = ENC6_GET_INDEX(ENC600_CARD1,X3_axis); card1.x4_index = ENC6_GET_INDEX(ENC600_CARD1,X4_axis); card1.x5_index = ENC6_GET_INDEX(ENC600_CARD1,X5_axis); card1.x6_index = ENC6_GET_INDEX(ENC600_CARD1,X6_axis); gotoxy(15,9); cprintf(" X1 : %12lu HR,INDEX:%x", card1.x1_value, card1.x1_index); gotoxy(15,10); cprintf(" X2 : %12lu HR,INDEX:%x", card1.x2_value, card1.x2_index); gotoxy(15,11); cprintf(" X3 : %12lu HR,INDEX:%x", card1.x3_value, card1.x3_index); gotoxy(15,12); cprintf(" X4 : %12lu HR,INDEX:%x", card1.x4_value, card1.x4_index); gotoxy(15,13); cprintf(" X5 : %12lu HR,INDEX:%x", card1.x5_value, card1.x5_index); gotoxy(15,14); cprintf(" X6 : %12lu HR,INDEX:%x", card1.x6_value, card1.x6_index); delay(20); } while ((status==NO) && !kbhit()); while (!kbhit()); MSTEP2_RESET_SYSTEM(STEP200_CARD1); }