вполне хватит. А желающие могут и на 16ти разрядный таймер все
перевесить, и будет у них точность до долей градуса.
Так как сервомашинки надо сортировать, то я сделал еще массив указателей
Servo_sorted. Чем ворочать в памяти неповоротливые структуры, я лучше
перетасую в порядке возрастания поля Position их указатели. Сожрёт
лишнюю память, но выиграет вы быстродействии.
Впрочем, в данном случае, когда структура имеет всего два восьмибитных
поля, экономия выглядит сомнительной, т.к. тот же указатель занимает те же
самые два байта. В лучшем случае баш на баш. Но кто сказал, что структура
будет неизменной? Может, что еще захотим добавить! Поэтому пусть лучше
сортируются указатели.
Для начала указатели и структуры инициализируются нужными данными:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Присваиваем указателям адреса наших структур.
Servo_sorted[0] = &Servo[0];
Servo_sorted[1] = &Servo[1];
Servo_sorted[2] = &Servo[2];
Servo_sorted[3] = &Servo[3];
Servo_sorted[4] = &Servo[4];
Servo_sorted[5] = &Servo[5];
Servo_sorted[6] = &Servo[6];
Servo_sorted[7] = &Servo[7];
// Заполняем битмаски
Servo[0].Bit = 0b00000001;
Servo[1].Bit = 0b00000010;
Servo[2].Bit = 0b00000100;
Servo[3].Bit = 0b00001000;
Servo[4].Bit = 0b00010000;
Servo[5].Bit = 0b00100000;
Servo[6].Bit = 0b01000000;
Servo[7].Bit = 0b10000000;
// Выставляем все положения на нейтраль --
точно посредине диапазона.
Servo[0].Position = 50;
Servo[1].Position = 50;
Servo[2].Position = 50;
Servo
[3].Position = 50;
Servo[4].Position = 50;
Servo[5].Position = 50;