Прошивки CleanFlight/BetaFlight для полетников
С банггуда кто-нибудь заказывал мозг CK racing F3?
Я неделю назад его импульсивно заказал, а вот сейчас только заметил что там 6050 гиря, соответственно подключение по i2c, или есть надежда на СПИ? Есть ли способ проверить?
скачал по новой и прошил. всё заработало. пойду пробовать.
Нет, в 2.7.1 Нужно писать: set fast_pwm_protocol = ONESHOT125
проверил в GLI уже всё включено.
Зачищать МГТФ надо зажигалкой. Неэстетично, но эффективно.
Мало того, что не эстетично, так еще и вредно. МГТФ при этом выделяет фосген, слыхали о такой няке?
Можно делать только под хорошей вытяжкой, а лучше все же приноровиться ножичком: аккуратно и безопасно 😃
К сожалению этот вопрос не ко мне, а к разработчикам платы sprf3. Почему они использовали MPU6050 вместо MPU6000? Наверно из-за того, что i2c шина требует всего 2 пина, когда SPI требует минимум 3, а реально и того больше. А SPI шина в разы быстрее шины i2c. Вот поэтому и приходится контроллеру дольше “ждать” данных с гироскопа по i2c.
Хотя в ветке про RaceFlight RS2K говорил, что знает как считывать i2c на скорости 8кгц, но на практике пока никто ещё этого не сделал (вроде как нет смысла, всё равно данные не смогут поступать с такой скоростью по i2c).
Павел
Шина I2C большинства акселерометров и гироскопов работает на частоте 100 КГц, примерно 0.01мкс. А у Вас время прогона программы 500мс. Даже если по прерываниям реализовать опрос , то скорости этой шины с головой.
400kHz Fast Mode I2C for communicating with all registers
1MHz SPI serial interface for communicating with all registers (MPU-6000 only)
20MHz SPI serial interface for reading sensor and interrupt registers (MPU-6000 only)
SPI - на “медленных” контроллерах пока понты. ИМХО.
Шина I2C большинства акселерометров и гироскопов работает на частоте 100 КГц
Я не помню точно даташит mpu6050, давно читал. Но вряд ли там данные считываются без команды от мк - “читаем данные с такого то регистра”, причем регистров наверняка два. Плюс за один такт можно передать 1 бит команды или данных насколько я понимаю, спецификацию i2c тоже давно читал ))
проверил в GLI уже всё включено.
Вы меня извините, может вы опечатались. Не GLI, а CLI - сокращение от Command Line Interface (интерфейс командной строки). Ну просто очень глаз режет.
Шина I2C большинства акселерометров и гироскопов работает на частоте 100 КГц, примерно 0.01мкс. А у Вас время прогона программы 500мс. Даже если по прерываниям реализовать опрос , то скорости этой шины с головой.
400kHz Fast Mode I2C for communicating with all registers
1MHz SPI serial interface for communicating with all registers (MPU-6000 only)
20MHz SPI serial interface for reading sensor and interrupt registers (MPU-6000 only)
SPI - на “медленных” контроллерах пока понты. ИМХО.
Посмотрел по даташиту на MPU-6000 и MPU-6050 www.cdiweb.com/…/MPU-6050_DataSheet_V3 4.pdf#page1… выходит что интерфейс I2C в MPU-6050 тактовая частота 400кГц и время данных 0,9 микросекунд, а у интерфейса SPI в MPU-6000 - 1МГц и длина данных 0,1 микросекунда. Т.е. I2C где-то в 9 раз медленнее, если все правильно понял. Я так понял что дело не в шине а в том что процессор не может быстро работать с шиной I2C. программно долго обрабатывает считывание, а так он не только этим занимается, то приходится жертвовать частотой считывания данных из MPU.
Так что шина I2C должно хватать за глаза. Но наверное в процессоре нужен аппаратный контролер шины, а не заниматься программной обработкой. Надо будет посмотреть по исходники как работа идёт с MPU-6050. Может я много ещё не знаю.
Посмотрел по даташиту на MPU-6000 и MPU-6050 www.cdiweb.com/…/MPU-6050_DataSheet_V3 4.pdf#page1… выходит что интерфейс I2C в MPU-6050 тактовая частота 400кГц и время данных 0,9 микросекунд, а у интерфейса SPI в MPU-6000 - 1МГц и длина данных 0,1 микросекунда. Т.е. I2C где-то в 9 раз медленнее, если все правильно понял. Я так понял что дело не в шине а в том что процессор не может быстро работать с шиной I2C. программно долго обрабатывает считывание, а так он не только этим занимается, то приходится жертвовать частотой считывания данных из MPU.
Так что шина I2C должно хватать за глаза. Но наверное в процессоре нужен аппаратный контролер шины, а не заниматься программной обработкой. Надо будет посмотреть по исходники как работа идёт с MPU-6050. Может я много ещё не знаю.[/QUOTE]
Все верно, еще фильтрация , отработка ПИД-регулятора…Так , что я не думаю , что I2C не узкое место. Тем более , что контроллер будет делать с этой информацией, если использовать ее не может ввиду того, что даже раскрутить пропеллер мгновенно не может.Да и положение квадрика не так уж быстро меняется.
Все верно, еще фильтрация , отработка ПИД-регулятора…Так , что я не думаю , что I2C не узкое место.
А ещё входной PPM или SBUS расшифровать. Короче у процессора работы хватает.
Добрый день. Кто нибудь пробовал откомпилировать исходники CleanFlight/BetaFlight ?
Добрый день. Кто нибудь пробовал откомпилировать исходники CleanFlight/BetaFlight ?
Да. Легко. скачиваешь SDK для STM32 и собираешь.
В документации по CleanFlight все подробно расписано как собирать. В BetaFlight документации нет, считается тоже самое как и CleanFlight
Спасибо, собрал. Теперь можно и в коде покопаться .
люди ,помогите настроить файл сейф на клинфлайте, прош последняя 1.12 , никак моторы не хотят останавливаться при файлсейфе, работают на холостых! поделитесь рабочими значениями , где чего нужно включить или выключить (кажеться все перепробовал)
на старой прошивке работало четко, а сдесь не понимаю в чем дело.
скатываться на старую прошивку не хочеться,
почему так странно PID_P
У меня так же было , откатился на 2.7.1
И еще rcCommand так редко обновляется, это нормально?
У вас RC deadband не включен случаем?
У вас RC deadband не включен случаем?
У меня должно быть все по дефолту, я поменял только Fast_PWM=Multishot, Looptime=250, Motor_PWM_Rate=16000.
Но ща гляну Deadband.
Да может быть еще это по тому что подключено по PPM ?
Т.е. I2C где-то в 9 раз медленнее, если все правильно понял. Я так понял что дело не в шине а в том что процессор не может быстро работать с шиной I2C. программно долго обрабатывает считывание, а так он не только этим занимается, то приходится жертвовать частотой считывания данных из MPU.
Так что шина I2C должно хватать за глаза.…
SPI - на “медленных” контроллерах пока понты. ИМХО.
К слову о понтах. Борис посчитал время вычисления PID Rewrite контроллера на разных мозгах:
1 F3 SPI 70us
2 F1 CC3D 166us
3 F3 I2C 190us
4 F1 I2C 230us
(www.rcgroups.com/forums/showpost.php?p=34724577&po…)
Выходит, что второе место у F1 c SPI. 😃
I2c шина - именно она и есть самое узкое место. Она вносит примерно 130 микросекунд задержки по сравнениюс SPI (www.rcgroups.com/forums/showpost.php?p=34698233&po…).
Ведь после того как данные посчитаны гироскопом, их же ещё надо передеть в контроллер. И эта передача и есть узкое место. I2c передаёт информацию по капле, а SPI струйкой (елси проводить аналогии). Поэтому, даже если процессор и ничем не занят, он всё равно получит данные с i2c на 130 микросекунд позже (пока ему там накапает). 😃
Павел
[QUOTE=nppc;6414074]К слову о понтах. Борис посчитал время вычисления PID Rewrite контроллера на разных мозгах:
1 F3 SPI 70us
2 F1 CC3D 166us
3 F3 I2C 190us
4 F1 I2C 230us
Спасибо за информацию.Никто не спорит о том какая шина быстрее.Тут ключевое, если контроллер ничего не делает, а он все время что-то делает,вот когда временем “делать” можно будет пренебречь,мы и будем говорить, что контроллер упирается в шину.Тем более это 8битный pid-контроллер,который будет чаще оперировать одинаковыми цифрами из-за небольшой точности.
Только я не совсем понимаю зачем так часто считывать показания гироскопа. Чтобы pid-регулятор чаще управлял медленными моторами?Мало считывать данные, их нужно ещё и обработать,и выработать управляющее воздействие.
Борис недавно приводил список ПК с SPI (www.rcgroups.com/forums/showpost.php?p=34695503&po…)
Colibri Race
Lux Race
Motolab Cyclone
SPRACINGF3EVO
DOGE
CC3D (this is F1 board though…performs slightly better than i2c F3 board on rewrite)
Alienflight
это исчерпывающий список или есть еще варианты?
какая шина у всяких клонов SPRACING с БГ?
как онаять какая версия протокола у каждого конкретного ПК? например X-Racer F303? ведь производители эту инфу не выкладывают
по версии гиры? тогда какие модели используют какую шину?
Андрей, вы немного не так представляете себе работу прошивки BetaFlight (не помню, Cleanflight уже работает по схеме Бетафлайта или нет…).
Так вот, процессы обработки различных событий разделены т.н. task scheduler-ом. Например, опрос гироскопов запускается каждые 250мкс., расчёт PID-ов каждые 500мкс, SBUS каждые 1000мкс и т.д.
Поэтому управление моторами не обязательно будет происходить после каждого опроса гироскопа. А вот, чтобы получать более точные данные гироскопа, нам нужно его опрашивать как можно чаще. вот и получается, в моём примере мы имеем уже два значения гироскопа, усредненных до одного, чтобы использовать его в расчётк PID.
Павел.