2 * C Implementation: main_test
8 * Author: Petr Kovacik <kovacp1@feld.cvut.cz>, (C) 2006
13 #define _USE_EXR_LEVELS 1
17 #include <periph/sci_rs232.h>
18 #include <system_def.h>
23 #include <pxmc_h2638.h>
29 /*struktury prikazu cmd*/
30 cmd_des_t const cmd_des_help={0, 0,"HELP","prints help for commands",
31 cmd_do_help,{(char*)&cmd_rs232}};
33 cmd_des_t const *cmd_rs232_default[]={
36 CMD_DES_CONTINUE_AT, /* list continues at new address */
37 (cmd_des_t*)cmd_pxmc_default,
40 cmd_des_t const **cmd_bth=cmd_rs232_default; /*cmd prikazy pro bth*/
41 cmd_des_t const **cmd_rs232=cmd_rs232_default; /*cmd prikazy pro PC*/
44 /*struktury charakterizujici motor 0*/
54 pxms_rs:0, //pxms_subdiv:8,
55 pxms_md:8000l<<8, pxms_ms:5000, pxms_ma:10,
56 pxms_inp_info:(long)TPU_TCNT1,//TPU_TCNT1 /*chanel TPU A,B*/
57 pxms_out_info:(long)PWM_PWBFR1A, /*chanel PWM A,B*/
58 pxms_ene:0, pxms_erc:0,
59 pxms_p:40, pxms_i:0, pxms_d:1, pxms_s1:0, pxms_s2:0,
60 pxms_me:0x1800, //6144
61 pxms_ptirc:40, // 2000 irc per rev, 200/4 steps /
65 pxms_cfg:PXMS_CFG_MD2E_m|PXMS_CFG_HLS_m|
66 PXMS_CFG_HPS_m|PXMS_CFG_HDIR_m|0x1
70 /*struktury charakterizujici motor 1*/
80 pxms_rs:0, //pxms_subdiv:8,
81 pxms_md:8000l<<8, pxms_ms:5000, pxms_ma:10,
82 pxms_inp_info:(long)TPU_TCNT2, /*chanel TPU C,D*/
83 pxms_out_info:(long)PWM_PWBFR1C, /*chanel PWM C,D*/
84 pxms_ene:0, pxms_erc:0,
85 pxms_p:40, pxms_i:0, pxms_d:1, pxms_s1:0, pxms_s2:0,
86 pxms_me:0x1800, //6144
87 pxms_ptirc:40, // 2000 irc per rev, 200/4 steps /
91 pxms_cfg:PXMS_CFG_MD2E_m|PXMS_CFG_HLS_m| //FIXME: nastavit spravne priznaky pro dalsi motorove struktur
92 PXMS_CFG_HPS_m|PXMS_CFG_HDIR_m|0x1
95 pxmc_state_t *pxmc_main_arr[] = {&mcsX0,&mcsX1};
97 pxmc_state_list_t pxmc_main_list = {
98 pxml_arr:pxmc_main_arr,
99 pxml_cnt:sizeof(pxmc_main_arr)/sizeof(pxmc_main_arr[0])
104 //*******************************************************
106 void unhandled_exception(void) __attribute__ ((interrupt_handler));
108 /*Interrupt routines*/
109 void unhandled_exception(void)
112 //********************************************************
115 int cmd_rs232_processor_run(void)
120 cmd_io=&cmd_io_rs232;
121 if(cmd_rs232_line_out(cmd_io))
124 if(cmd_rs232_line_in(cmd_io)<=0)
128 val=proc_cmd_line(cmd_io, cmd_rs232, cmd_io->priv.ed_line.in->buf);
133 if(cmd_io->priv.ed_line.out->inbuf){
134 cmd_io_putc(cmd_io,'\r');
135 cmd_io_putc(cmd_io,'\n');
139 cmd_io_write(&cmd_io_rs232,"ERROR ",6);
141 cmd_io_write(cmd_io,s,strlen(s));
142 cmd_io_putc(cmd_io,'\r');
143 cmd_io_putc(cmd_io,'\n');
148 extern void _print(char *str);
154 /********************************************************************************/
155 *DIO_PJDDR=0xff; /*output gate*/
156 *DIO_PEDDR=0xff; /*output gate*/
157 *DIO_PEDR=0x60; /*0x0-LED - light all; 0x6 -ENA,ENB=1, LE33CD=0*/
158 *DIO_PJDR=0x00; //rozsviceni vsech diod na */
161 /*priority preruseni - SCI > TPU*/
162 /* *SYS_SYSCR|=SYSCR_INTM1m; */
163 /* *INT_IPRA=0x22; *INT_IPRB=0x22; *INT_IPRC=0x04; */
164 /* *INT_IPRD=0x40; *INT_IPRE=0x44; *INT_IPRF=0x55; */
165 /* *INT_IPRG=0x55; *INT_IPRH=0x55; *INT_IPRJ=0x06; */
166 /* *INT_IPRK=0x67; *INT_IPRM=0x66; */
168 /*povoleni vsech preruseni atd...*/
170 excptvec_initfill(unhandled_exception, 0);
172 /*nastaveni seriovych linek - Bth, PC*/
173 //sci_rs232_setmode(RS232_BAUD_RAW | 3, 0, 0, 2); // HCI - hardcoded 115200
174 //sci_rs232_setmode(115200, 0, 0, 2); // HCI
175 sci_rs232_setmode(19200, 0, 0, sci_rs232_chan_default); //PC
180 /*nastaveni HW (TPU, PWM)*/
183 /*nastaveni DC motoru*/
184 pxmc_add_pservice_and_mode(4); /*Macro - mod=4 tj. all motors are DC*/
186 /*nekonecna smycka obsluhujici bth, pc ...*/
188 /* cmd_rs232_processor_run(); /\*sber + odesilani cmd prikazu PC*\/ */
194 long int before = get_timer();
197 cmd_rs232_processor_run(); /*sber + odesilani cmd prikazu PC*/
199 long int now = get_timer();
204 pxmc_spd(&mcsX0,a*400,0);
205 pxmc_spd(&mcsX1,-a*700,0);
208 pxmc_spd(&mcsX0,a*700,0);
209 pxmc_spd(&mcsX1,-a*400,0);
212 pxmc_spd(&mcsX0,a*2000,0);
213 pxmc_spd(&mcsX1,-a*1200,0);
216 pxmc_spd(&mcsX0,a*1200,0);
217 pxmc_spd(&mcsX1,-a*2000,0);
220 pxmc_spd(&mcsX0,a*1300,0);
221 pxmc_spd(&mcsX1,-a*1000,0);
224 pxmc_spd(&mcsX0,a*1300,0);
225 pxmc_spd(&mcsX1,-a*1000,0);
228 pxmc_spd(&mcsX0,a*100,0);
229 pxmc_spd(&mcsX1,-a*300,0);
232 pxmc_spd(&mcsX0,a*300,0);
233 pxmc_spd(&mcsX1,-a*100,0);
236 pxmc_spd(&mcsX0,a*2000,0);
237 pxmc_spd(&mcsX1,-a*100,0);
240 pxmc_spd(&mcsX0,a*4000,0);
241 pxmc_spd(&mcsX1,-a*4000,0);