X-Git-Url: http://git.droids-corp.org/?p=aversive.git;a=blobdiff_plain;f=projects%2Fmicrob2010%2Fmainboard%2Fmain.h;h=00b6e8630b7e0d3abeae7d6d9cd5ebb196d9cc6b;hp=2fdd212c2551b74e165f534c51d8503518be411d;hb=f5502f60124c62801685777bb7c699bdfb7e1166;hpb=4fb57a4dab8bd564445e824696a2dab470af8628 diff --git a/projects/microb2010/mainboard/main.h b/projects/microb2010/mainboard/main.h index 2fdd212..00b6e86 100755 --- a/projects/microb2010/mainboard/main.h +++ b/projects/microb2010/mainboard/main.h @@ -19,6 +19,8 @@ * */ +/* was sensorboard in 2009 */ + #define LED_TOGGLE(port, bit) do { \ if (port & _BV(bit)) \ port &= ~_BV(bit); \ @@ -26,17 +28,40 @@ 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) -#define LED2_ON() sbi(PORTL, 7) -#define LED2_OFF() cbi(PORTL, 7) -#define LED2_TOGGLE() LED_TOGGLE(PORTL, 7) +#define LED2_ON() sbi(PORTJ, 3) +#define LED2_OFF() cbi(PORTJ, 3) +#define LED2_TOGGLE() LED_TOGGLE(PORTJ, 3) -#define LED3_ON() sbi(PORTJ, 3) -#define LED3_OFF() cbi(PORTJ, 3) -#define LED3_TOGGLE() LED_TOGGLE(PORTJ, 3) +#define LED3_ON() sbi(PORTL, 7) +#define LED3_OFF() cbi(PORTL, 7) +#define LED3_TOGGLE() LED_TOGGLE(PORTL, 7) #define LED4_ON() sbi(PORTL, 6) #define LED4_OFF() cbi(PORTL, 6) @@ -45,23 +70,25 @@ #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) @@ -94,7 +121,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 @@ -115,7 +143,7 @@ struct genboard { struct pwm_ng servo2; struct pwm_ng servo3; struct pwm_ng servo4; - + /* ax12 interface */ AX12 ax12; @@ -142,6 +170,7 @@ struct mainboard { #define DO_BD 16 #define DO_TIMER 32 #define DO_POWER 64 +#define DO_ERRBLOCKING 128 uint8_t flags; /* misc flags */ /* control systems */ @@ -165,8 +194,10 @@ struct mainboard { /* state of cobboard, synchronized through i2c */ struct cobboard { - uint8_t mode; + uint8_t mode; uint8_t status; + uint8_t lspickle; + uint8_t rspickle; int16_t left_cobroller_speed; int16_t right_cobroller_speed; uint8_t cob_count; @@ -174,13 +205,17 @@ struct cobboard { /* state of ballboard, synchronized through i2c */ struct ballboard { + volatile uint8_t mode; uint8_t status; + uint8_t ball_count; + uint8_t lcob; + uint8_t rcob; }; extern struct genboard gen; extern struct mainboard mainboard; -extern struct cobboard cobboard; -extern struct ballboard ballboard; +extern volatile struct cobboard cobboard; +extern volatile struct ballboard ballboard; /* start the bootloader */ void bootloader(void);