New version of spejbl motor software
[LPC2xxx_and_RobotSpejbl.git] / app / spejbl_motor / constants.h
blob2d15e3238e51acf8b1e207948076a732beaaaa8b
1 /****************************************/
2 /* Constants definition for */
3 /* robot Spejbl - motor */
4 /****************************************/
6 /* CAN message IDs */
7 #define CAN_CLOCK_ID 0x401
8 #define CAN_CFGMSG_ID 0x4ab
9 #define CAN_UNDEF_ID 0xf800
11 #define CANLOAD_ID 0x481
12 //(*((volatile unsigned long *) 0x40000120))
13 #define MOTOR_ID CANLOAD_ID
15 /* CAN timing */
16 #define CAN_OVERSAMP 80
18 #define ADC_OVERSAMP 6
19 #define ADC_MA_LEN (2*ADC_OVERSAMP)
21 /* position limits */
22 #define POS_MIN 0x060
23 #define POS_MAX 0x3a0
25 /* input channels */
26 #define ADCIN_POS 0
27 #define ADCIN_CURRENT 1
29 /* reserved value for power-off */
30 #define CTRL_OFF 0xffff
31 #define CTRL_MAX SHRT_MAX
33 //#define CTRL_INT_DIV (1<<19)
34 #define CTRL_INT_DIV (1<<15)
35 #define CTRL_INT_MAX (CTRL_INT_DIV*PWM_PERIOD)
36 #define CTRL_AMP_MUL (20.0/(12*(1<<11)))
38 /*controler constants*/
39 #define CTRL_PI_Q ((4.0/7.0)*CTRL_INT_MAX*CTRL_AMP_MUL)
40 #define CTRL_PI_K (0.6*CTRL_PI_Q)
41 #define CTRL_PI_Kn (0.6*0.674*CTRL_PI_Q)
43 /* PWM and sampling timing */
44 #define PWM_PERIOD 3000
45 #define PWM_DEAD 60