8 static struct servo servo_table[] = {
23 static volatile uint8_t rxbuf[16];
24 register uint8_t rxlen asm("r2");
25 register uint8_t done asm("r3");
26 register uint8_t portval asm("r4");
28 SIGNAL(TIMER1_COMPA_vect)
31 TIMSK1 &= ~_BV(OCIE1A);
35 static void poll_spi(void)
39 static void load_timer_at(uint16_t t)
42 TIMSK1 |= _BV(OCIE1A);
45 static void do_one_servo(struct servo *s)
51 //portval = PORTC | (1 << s->bit);
52 portval = (1 << s->bit);
54 load_timer_at(t + 150);
61 //portval = PORTC & (~(1 << s->bit));
62 load_timer_at(t + 150 + 8000 + s->command * 8);
75 /* start timer1 at clk/1 (8Mhz) */
79 /* start timer0 at clk/1024 (~8Khz) */
81 TCCR0B = _BV(CS02) | _BV(CS00);
87 for (i = 0; i < sizeof(servo_table)/sizeof(*servo_table); i++) {
88 do_one_servo(&servo_table[i]);