Замеры показали, что основной цикл выполняется на частоте 70Гц. Похоже, что в основное время уходит на чтение данных с акселерометра по i2c. В оригинальном железе apm:copter аксель подключён по spi.
Я сегодня попытался поднять частоту i2c до 400 kHz, стало хуже, но, кажется, из-за длинных проводов от виртурилки до макетки. Попробую укоротить до минимума.
В общем, есть что оптимизировать. Как выяснилось, что опрос ADC жрёт много ресурсов. В apm:copter ADC используется для общения с аналоговым сонаром, я же его использую только для мониторинга заряда батареи, так что можно катастрофически уменьшить частоту опроса ADC.
Вообще, для чтения "в час по чайной ложке" из файла /dev/v2r_adc достаточно, в случае частого опроса - это ад и израиль. Я вроде реализовывал ioctl для /dev/v2r_adc, надо будет найти код....
Ещё у меня появился вопрос опытным мультикоптероводам про расположение GPS-приёмников. На многих видео/фото видно, что приёмник располагается на выносной штанге. С чего бы это?
Гугл выдаёт много картинок с вынесенным приёмником.
https://www.google.ru/search?q=dji+gps+mount&tbm=ischЯ понимаю, что встраивать в основной модуль не стоит ибо неизвестно куда он будет засунут,
но штанга-то зачем?
Просто на верхней плоскости расположить что-то мешает? Возникло предположение, что винты могу задеть, но хз...