X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=main.c;h=5d449de1b11efa5669f804e0c648bfff391b194c;hb=7550fa78c8354d1551266bb15e280d4dd6cefb50;hp=ad0af0546c064a85832edb87ff925aa29c354c36;hpb=f9f1d9f0311d8c84e8f2accac4ba5ea5f5481d6a;p=protos%2Frc_servos.git diff --git a/main.c b/main.c index ad0af05..5d449de 100644 --- a/main.c +++ b/main.c @@ -34,10 +34,10 @@ static struct servo servo_table[] = { }; #define NB_SERVO (sizeof(servo_table)/sizeof(*servo_table)) -static volatile uint8_t bypass; +static uint8_t bypass; static volatile uint8_t done; -static volatile uint8_t portval; -static volatile uint8_t rxidx; +static uint8_t portval; +static uint8_t rxidx; #define BYPASS_ENABLE 14 #define BYPASS_DISABLE 15 @@ -56,7 +56,7 @@ static volatile uint8_t rxidx; * Command 14 is to enable bypass mode. * Command 15 is to disable bypass mode. */ -static volatile union { +static union { uint8_t u8; struct { /* inverted: little endian */ @@ -66,7 +66,7 @@ static volatile union { }; } byte0; -static volatile union { +static union { uint8_t u8; struct { /* inverted: little endian */ @@ -158,6 +158,7 @@ int main(void) { uint8_t i; uint8_t t, diff; + uint8_t tmp; /* LED */ DDRB = 0x02; @@ -201,12 +202,18 @@ int main(void) poll_spi(); } /* bypass mode */ - while (bypass == 1) { + if (bypass == 1) { LED_ON(); - PORTD = (PINC & 0x3f) << 2; - poll_spi(); + + while (bypass == 1) { + tmp = PINC; + tmp &= 0x3f; + tmp <<= 2; + PORTD = tmp; + poll_spi(); + } + LED_OFF(); } - LED_OFF(); } return 0;