X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=main.c;h=c89b6373065d32ce23503e9ae27fab192238ca96;hb=5cf087f7d27e0c7e565a1a7591020cedb6a9bcbf;hp=657e54d35fe67c4279924b24e83a2f8564d61f3e;hpb=face7352ff4e497c17590266455bda126f35d842;p=protos%2Frc_servos.git diff --git a/main.c b/main.c index 657e54d..c89b637 100644 --- a/main.c +++ b/main.c @@ -21,10 +21,13 @@ static struct servo servo_table[] = { }; #define NB_SERVO (sizeof(servo_table)/sizeof(*servo_table)) -register uint8_t bypass asm("r2"); -register uint8_t done asm("r3"); -register uint8_t portval asm("r4"); -register uint8_t rxidx asm("r5"); +static volatile uint8_t bypass; +static volatile uint8_t done; +static volatile uint8_t portval; +static volatile uint8_t rxidx; + +#define BYPASS_ENABLE 14 +#define BYPASS_DISABLE 15 /* * SPI protocol: @@ -37,22 +40,24 @@ register uint8_t rxidx asm("r5"); * Command 14 is to enable bypass mode. * Command 15 is to disable bypass mode. */ -register union { +static volatile union { uint8_t u8; struct { - uint16_t zero:1; - uint16_t cmd_num:4; - uint16_t val_msb:3; + /* inverted: little endian */ + uint8_t val_msb:3; + uint8_t cmd_num:4; + uint8_t zero:1; }; -} byte0 asm("r6"); +} byte0; -register union { +static volatile union { uint8_t u8; struct { - uint8_t one:1; + /* inverted: little endian */ uint8_t val_lsb:7; + uint8_t one:1; }; -} byte1 asm("r7"); +} byte1; SIGNAL(TIMER1_COMPA_vect) { @@ -94,10 +99,10 @@ static void poll_spi(void) val += byte1.val_lsb; servo_table[byte0.cmd_num].command = val; } - else if (byte0.cmd_num == 14) { + else if (byte0.cmd_num == BYPASS_ENABLE) { bypass = 1; } - else if (byte0.cmd_num == 15) { + else if (byte0.cmd_num == BYPASS_DISABLE) { bypass = 0; } } @@ -157,6 +162,7 @@ int main(void) sei(); + bypass = 1; while (1) { t = TCNT0; for (i = 0; i < NB_SERVO; i++) {