8 #include "pxmc_virtex2.h"
10 #define MOTOR_VECTOR 0
12 interrupt(MOTOR_VECTOR) motor_isr() {
17 cmd_des_t const **cmd_list;
19 cmd_des_t const cmd_des_help={
21 "HELP","prints help for commands",
22 cmd_do_help,{(char*)&cmd_list}};
25 cmd_des_t const cmd_des_val={
26 0, CDESM_OPCHR|CDESM_RW,
27 "VAL","use ':' or '?' to store/read value of an integer variable",
28 cmd_do_rw_int, {(char*)&val}};
30 cmd_des_t const cmd_des_halpos={0, CDESM_OPCHR|CDESM_RW,
31 "HALPOS?","HAL phase",cmd_do_reg_short_val,
32 {(char*)pxmc_state_offs(pxms_hal),
37 int cmd_do_mccpwm(cmd_io_t *cmd_io, const struct cmd_des *des, char *param[])
42 if(*param[2]!=':') return -CMDERR_OPCHAR;
44 if((mcs=cmd_opchar_getreg(cmd_io,des,param))==NULL) return -CMDERR_BADREG;
47 if(si_long(&p,&val,0)<0) return -CMDERR_BADPAR;
48 if(si_fndsep(&p,",")<0) return -CMDERR_BADSEP;
49 if(si_long(&p,&angle,0)<0) return -CMDERR_BADPAR;
51 if(*p) return -CMDERR_GARBAG;
52 printf("ptindx %d HAL %d\n\r",mcs->pxms_ptindx, pxmc_bdc_hal_rd(mcs));
53 //printf("HAL position: %d\n",(char*)pxmc_state_offs(pxms_hal));
54 pxmc_virtex2_set_valangle(mcs, val, angle);
59 cmd_des_t const cmd_des_mccpwm={0, CDESM_OPCHR|CDESM_RW,
60 "MCCPWM?","set PWM vector value and angle",cmd_do_mccpwm,
63 /*cmd_des_t const cmd_des_db={0, CDESM_OPCHR,
64 "DB","DB test",cmd_do_db,
71 cmd_des_t const *cmd_pxmc_list[] = {
76 CMD_DES_INCLUDE_SUBLIST(cmd_pxmc_base),
77 CMD_DES_INCLUDE_SUBLIST(cmd_pxmc_deb),
81 cmd_des_t const **cmd_list = cmd_pxmc_list;
83 extern cmd_io_t cmd_io_std_line;
87 WDTCTL = WDTPW | WDTHOLD;
88 puts("PXMC motion control running...\n");
95 cmd_processor_run(&cmd_io_std_line, cmd_pxmc_list);