8 static struct servo servo_table[] = {
22 static volatile uint8_t rxbuf[16];
23 static volatile uint8_t rxlen;
24 static volatile uint8_t portval;
25 static volatile uint8_t done;
27 SIGNAL(TIMER1_COMPA_vect)
30 TIMSK1 &= ~_BV(OCIE1A);
34 static void poll_spi(void)
38 static void load_timer_at(uint16_t t)
41 TIMSK1 |= _BV(OCIE1A);
44 static void do_one_servo(struct servo *s)
50 //portval = PORTC | (1 << s->bit);
51 portval = (1 << s->bit);
53 load_timer_at(t + 150);
60 //portval = PORTC & (~(1 << s->bit));
61 load_timer_at(t + 150 + 8000 + s->command * 8);
74 /* start timer1 at clk/1 (8Mhz) */
78 /* start timer0 at clk/1024 (~8Khz) */
80 TCCR0B = _BV(CS02) | _BV(CS00);
86 for (i = 0; i < sizeof(servo_table)/sizeof(*servo_table); i++) {
87 do_one_servo(&servo_table[i]);