X-Git-Url: http://git.droids-corp.org/?p=aversive.git;a=blobdiff_plain;f=projects%2Fmicrob2010%2Fmainboard%2Fmain.h;h=48655eb0024f9263e9caa0741c9ac10cb270682c;hp=78fccc4685c1cdb2355407d213baf5c8c2bc9e1a;hb=fa8546ea39c7442ad3bf5a822a72a2b50a41045d;hpb=5918edd6f4f713ef3c8b0b0020dd30a4fb8222ae diff --git a/projects/microb2010/mainboard/main.h b/projects/microb2010/mainboard/main.h index 78fccc4..48655eb 100755 --- a/projects/microb2010/mainboard/main.h +++ b/projects/microb2010/mainboard/main.h @@ -26,6 +26,29 @@ port |= _BV(bit); \ } while(0) +#ifdef HOST_VERSION +#define LED1_ON() +#define LED1_OFF() +#define LED1_TOGGLE() + +#define LED2_ON() +#define LED2_OFF() +#define LED2_TOGGLE() + +#define LED3_ON() +#define LED3_OFF() +#define LED3_TOGGLE() + +#define LED4_ON() +#define LED4_OFF() +#define LED4_TOGGLE() + +#define BRAKE_DDR() +#define BRAKE_ON() +#define BRAKE_OFF() + +#else + #define LED1_ON() sbi(PORTJ, 2) #define LED1_OFF() cbi(PORTJ, 2) #define LED1_TOGGLE() LED_TOGGLE(PORTJ, 2) @@ -45,35 +68,42 @@ #define BRAKE_DDR() do { DDRJ |= 0xF0; } while(0) #define BRAKE_ON() do { PORTJ |= 0xF0; } while(0) #define BRAKE_OFF() do { PORTJ &= 0x0F; } while(0) +#endif /* only 90 seconds, don't forget it :) */ #define MATCH_TIME 89 /* decrease track to decrease angle */ -#define EXT_TRACK_MM 302.0188 +#define EXT_TRACK_MM 304.61875 #define VIRTUAL_TRACK_MM EXT_TRACK_MM -#define ROBOT_LENGTH 320 +#define ROBOT_HALF_LENGTH_FRONT 130 +#define ROBOT_HALF_LENGTH_REAR 120 #define ROBOT_WIDTH 320 -/* it is a 2048 imps -> 8192 because we see 1/4 period - * and diameter: 55mm -> perimeter 173mm - * 8192/173 -> 473 */ +/* it is a 1024 imps -> 4096 because we see 1/4 period + * and diameter: 55mm -> perimeter 134mm + * dist_imp_mm = 4096/134 x 10 -> 304 */ /* increase it to go further */ -#define IMP_ENCODERS 2048 -#define WHEEL_DIAMETER_MM 55.0 +#define IMP_ENCODERS 1024 +#define WHEEL_DIAMETER_MM 42.9 #define WHEEL_PERIM_MM (WHEEL_DIAMETER_MM * M_PI) #define IMP_COEF 10. #define DIST_IMP_MM (((IMP_ENCODERS*4) / WHEEL_PERIM_MM) * IMP_COEF) -#define LEFT_ENCODER ((void *)1) -#define RIGHT_ENCODER ((void *)0) +#define RIGHT_ENCODER ((void *)0) +#define LEFT_ENCODER ((void *)1) +#define LEFT_COBROLLER_ENCODER ((void *)2) +#define RIGHT_COBROLLER_ENCODER ((void *)3) + +#define RIGHT_PWM ((void *)&gen.pwm1_4A) +#define LEFT_PWM ((void *)&gen.pwm2_4B) +#define LEFT_COBROLLER_PWM ((void *)&gen.pwm3_1A) +#define RIGHT_COBROLLER_PWM ((void *)&gen.pwm4_1B) -#define LEFT_PWM ((void *)&gen.pwm1_4A) -#define RIGHT_PWM ((void *)&gen.pwm2_4B) +#define SUPPORT_BALLS_R_SERVO ((void *)&gen.servo2) +#define SUPPORT_BALLS_L_SERVO ((void *)&gen.servo3) -#define LEFT_PUMP1_PWM ((void *)&gen.pwm3_1A) -#define LEFT_PUMP2_PWM ((void *)&gen.pwm4_1B) /** ERROR NUMS */ #define E_USER_STRAT 194 @@ -89,7 +119,8 @@ #define I2C_POLL_PRIO 20 #define EEPROM_TIME_PRIO 10 -#define CS_PERIOD 5000L +#define CS_PERIOD 5000L /* in microsecond */ +#define CS_HZ (1000000. / CS_PERIOD) #define NB_LOGS 4 @@ -110,7 +141,7 @@ struct genboard { struct pwm_ng servo2; struct pwm_ng servo3; struct pwm_ng servo4; - + /* ax12 interface */ AX12 ax12; @@ -142,6 +173,8 @@ struct mainboard { /* control systems */ struct cs_block angle; struct cs_block distance; + struct cs_block left_cobroller; + struct cs_block right_cobroller; /* x,y positionning */ struct robot_system rs; @@ -154,54 +187,28 @@ struct mainboard { volatile int16_t speed_d; /* current dist speed */ int32_t pwm_l; /* current left pwm */ int32_t pwm_r; /* current right pwm */ - uint8_t enable_pickup_wheels; /* these PWM are on sensorboard */ - }; -/* state of mechboard, synchronized through i2c */ -struct mechboard { - uint8_t mode; +/* state of cobboard, synchronized through i2c */ +struct cobboard { + uint8_t mode; uint8_t status; - int8_t lintel_count; - uint8_t column_flags; - - /* pwm */ - int16_t pump_left1; - int16_t pump_right1; - int16_t pump_left2; - int16_t pump_right2; - - /* currents (for left arm, we can just read it on adc) */ - int16_t pump_right1_current; - int16_t pump_right2_current; - - /* pwm for lintel servos */ - uint16_t servo_lintel_left; - uint16_t servo_lintel_right; + int16_t left_cobroller_speed; + int16_t right_cobroller_speed; + uint8_t cob_count; }; -/* state of sensorboard, synchronized through i2c */ -struct sensorboard { +/* state of ballboard, synchronized through i2c */ +struct ballboard { + uint8_t mode; uint8_t status; - /* opponent pos */ - int16_t opponent_x; - int16_t opponent_y; - int16_t opponent_a; - int16_t opponent_d; - - /* scanner */ -#define I2C_SCAN_DONE 1 - uint8_t scan_status; -#define I2C_COLUMN_NO_DROPZONE -1 - int8_t dropzone_h; - int16_t dropzone_x; - int16_t dropzone_y; + uint8_t ball_count; }; extern struct genboard gen; extern struct mainboard mainboard; -extern struct mechboard mechboard; -extern struct sensorboard sensorboard; +extern struct cobboard cobboard; +extern struct ballboard ballboard; /* start the bootloader */ void bootloader(void);