 
 Взял код (из робовики) управления сервами при помощи 4017 счётчика
- Код: Выделить всё • Развернуть
 uint16_t servo_position[9] = {3000 //для среднего положения
 volatile uint32_t i;
 SIGNAL(SIG_OUTPUT_COMPARE1A)
 {
 
 static uint8_t current_servo = 1;
 
 
 static uint16_t pause = 40000;
 
 TCCR1A |= _BV(FOC1A);
 if (current_servo == 9) {
 current_servo = 0;
 OCR1A += pause;
 pause = 40000;
 } else {
 
 OCR1A += servo_position[current_servo];
 pause -= servo_position[current_servo];
 current_servo++;
 }
 }
Переделал все значения под частоту 7.3728
в итоге получилось
- Код: Выделить всё • Развернуть
- interrupt [TIM3_COMPC] void timer3_compc_isr(void)
 {
 static char current_servo=1;
 static unsigned int pause = 18432;
 TCCR3C|=(1<<FOC3C);
 
 if (current_servo == 9)
 {
 current_servo = 0;
 OCR3C += pause;
 pause = 18432;
 }
 else
 {
 OCR3C+=servo_position[current_servo];
 pause -= servo_position[current_servo];
 current_servo++;
 }
 }
 servo_position[9]={1382 //среднее положение
Пред делитель счётчика на 8
Серва работает некорректно дергается сдвигается в сторону при заданном среднем
положении
 
 Подскажите где ошибка?




 
 