Ардупилот на платах OpenPilot Revolution / RevoMini (записей: 1756)

  • Аватар профиля kozin Алексей Козин в 8 г., 11 мес. назад

    я в их беседах не участвовал, по коду подумалось что с ваншотом125 бага при силянии из двух источников, кто то делал колекторники и сделал третий енум, а там третим уже добавили ваншот125 а слили неглядя

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 11 мес. назад
    [2017-01-11 14:41:30] kozin писал(а): особенно хорошо для всяких лодок чтоб по камышам не ломились и роверов

    Для летающих тоже неплохо - одно дело спокойно лететь в ущелье над рекой, и совсем другое - ломиться через километровые горы. Для чего собственно и...

    [2017-01-11 14:47:21] kozin писал(а): да, бред собачий.

    Угу-с. Че там у них происходить последнее время я понять уже не могу. То ли после банкротства 3DR совсем похужело и все занялись хлебом насуЧным, то ли зимнее обострение - но за 125 шагов PWM ногами бить нада.

    Я делаю таймер на 16МГц, 1000 шагов, остановка по прерыванию UPDATE, запуск по push()

    [2017-01-11 14:51:17] kozin писал(а): кто то делал колекторники

    Простите мне мой французский, но нахерали коллекторники на Арду? Их ниша - контроллеры весом 1-2 грамма а в этот размер даже RevoMini  не укладывается

  • Аватар профиля kozin Алексей Козин в 8 г., 11 мес. назад

    if (_pwm_type == PWM_TYPE_ONESHOT125 && (_motor_fast_mask & (1U<<chan))) {

            // OneShot125 uses a PWM range from 125 to 250 usec

            pwm /= 8;

            /*

              OneShot125 ESCs can be confused by pulses below 125 or above

              250, making them fail the pulse type auto-detection. This

              happens at least with BLHeli

            */

            if (pwm < 125) {

                pwm = 125;

            } else if (pwm > 250) {

                pwm = 250;

            }

        }

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 11 мес. назад

    ужс.

    я читал их обсуждение "делать ли ваншот", там все были решительно против, и похоже просто сделали "на отвяжись", типО вот увидите что еще хуже все стало :-/

    UPD. нашел поискком - так это даже не в HALе а в MotorMatrix! то есть вытянуть нормальный сигнал в этом режиме вообще не получится - шкала априори урезана!

    Ну все, пойду делать свою давнюю хотелку - конфигурируемые параметры для HAL-а...

  • Аватар профиля kozin Алексей Козин в 8 г., 10 мес. назад

    Если можно пара идей - пожеланий.

    возможно ли (может даже планируется) вынести все определения назначеия пинов в конфиг платы. тоесть нетолько шины, но и остальное, втч пвм выходы, ориентация датчиков.

    примерно как визвестном проекте клинфлайт. польза будет в том что при добавлении кастомной платы не будет необходимости вносить правки в основной код, поддерживать такой проект будет проще.

    и еще идея под добавление праты сделать скрипт, которому на входе передаешь тип проца, частоту кварца а он генерит необходимые для платы файлы и мэйк таргет

    кстати в клинфлайте еще ништяк что все порты задаются не по номерам по названию  например PE5

    этот подход упрощает создание своего конфига под новую плату

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 10 мес. назад
    [2017-01-12 10:20:13] kozin писал(а): озможно ли (может даже планируется) вынести все определения назначеия пинов в конфиг платы

    ни малейших проблем - делается нужный дефайн в конфиге платы #define BOARD_чтототам и потом в нужном месте используется для локального дефайна. Например так я вынес ноги SoftI2C и USB_SENSE, и имено так я и собираюсь даже список SPI-устройств задавать.

    Но собирать это по разным файлам проще всего именно при попытке портировать на ДРУГУЮ плату, на этой-то и так работает :)

    [2017-01-12 10:20:13] kozin писал(а): в клинфлайте еще ништяк что все порты задаются не по номерам по названию

    Дело вкуса, мне наоборот по номерам больше нравится ибо универсальнее - никто не мешает их задефайнить обратно в имена.  Если уж на то пошло то в клинфлайте вообще все кишки на поверхности :)

    mpuSpi6000CsPin = IOGetByTag(IO_TAG(MPU6000_CS_PIN));

        IOInit(mpuSpi6000CsPin, OWNER_MPU, RESOURCE_SPI_CS, 0);

    вместо кошерного _pinMode(MPU6000_CS_PIN, OUTPUT) ;   :roll:

     UPD. Какой такой конфиг платы если у Ардушников адрес и номер(!) шины I2C задается прямо в ToshibaLED_I2C.cpp  :evil:

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 10 мес. назад
    [2017-01-11 15:02:49] kozin писал(а): if (_pwm_type == PWM_TYPE_ONESHOT125

    Посмотрел я все это безобразие внимательно.  Тут остается либо пытаться добиться отмены этого ужаса дабы HAL получал полный сигнал, либо ставить в настройках обычный OneShot  а в HALе уже игнорить в этом режиме все остальное и генерировать самостоятельно честный OneShot125. И второй путь явно проще...

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 10 мес. назад
    • OneShot готов для тестирования
    • начальная поддержка параметров для HAL
  • Аватар профиля kozin Алексей Козин в 8 г., 10 мес. назад

    по интервалам обновления ваншот удобно отслеживать частоту маин лупа. не смотрели осцилографом 400гц стабильно?

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 10 мес. назад

    Пока не смотрел, ибо как уже говорил обработка (в прерывании!) данных с гиракселя может занимать 1286uS, а еще 2 обработчика имеют среднее время 632 и 442uS, так что пока обработка датчиков не будет хоть немножко оптимизирована о строгом соблюдении времени можно и не думать.

    Прочитал про ваши успехи, шикарный щелчок по носу официалам :) Но не могу не удивиться режиму ULTRAPWM8х - от меня ускользает его тайный смысл... Если и придумывать улучшательства то IMHO куда-то в эту сторону.

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 10 мес. назад

    Испытал сегодня когнитивный диссонанс. Условия: 

    Обработка прерываний от таймера, функция dispatch_general_h(). Если строку сброса флагов прерывания "dev->regs->SR &= ~dsr" расположить после всех вызовов "handle_irq()"  то все замечательно работает. Но если эту строку перенести перед вызовами "handle_irq()"  то не будет вызван ни один обработчик. Хотя казалось бы какая разница - установленные битовые флаги прерываний мы ведь уже получили!

     Однако если в любое место этой функции ДО вызова нужного обработчика поставить точку отладки то все самым магическим образом снова работает... Ничего не понимаю :(

  • Аватар профиля An_private An_private в 8 г., 10 мес. назад
    [2017-01-16 04:55:38] night_ghost писал(а): Но если эту строку перенести перед вызовами "handle_irq()"  то не будет вызван ни один обработчик.
    Надо внутрянки хендлеров смотреть. Насколько я помню (правда давно это было) внутри хендлеров тоже есть проверка флагов.
  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 10 мес. назад

    Не понял. Тех что вызываются по ссылке как handler()? В них нет никакой проверки, все отдано в драйвер. И вобщем-то до них дело не доходит -  вызова обработчика не производится, брекпоинт на "blx Rn" не срабатывает пока нет брекпоинта выше.

    Тут самый цимес вобщем-то в том что отладка влияет на исполнение программы... Таковое обычно говорит о временах, но каким боком оно к исполнению программы в проце?!

  • Аватар профиля An_private An_private в 8 г., 10 мес. назад
    [2017-01-16 07:27:51] night_ghost писал(а): В них нет никакой проверки, все отдано в драйвер.

    А, хорошо. Просто помню была как-то подобная проблема.

     

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 10 мес. назад
    [2017-01-16 07:48:46] anprivate писал(а): А, хорошо

    Что ж хорошего в том что кусок кода нельзя отлаживать пошагово?

  • Аватар профиля kozin Алексей Козин в 8 г., 10 мес. назад
    [2017-01-14 20:50:32] night_ghost писал(а): Прочитал про ваши успехи, шикарный щелчок по носу официалам

    эх как бы нам за такие щелчки самим не нащелкали, с поддержкой в маинстриме )))

  • Аватар профиля kozin Алексей Козин в 8 г., 10 мес. назад
    [2017-01-14 20:50:32] night_ghost писал(а): Но не могу не удивиться режиму ULTRAPWM8х - от меня ускользает его тайный смысл... 
    смысл в том что это режим совместим с ваншот125 по длительности управляющего импульса, но с регулируемым 400гц -3,3кгц, равномерным  периодом обновления, это дает возможность принимающей стороне (контроллеру мотора или высокоскоростного сервопривода) работать в синхронном режиме.
  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 10 мес. назад
    [2017-01-16 10:44:00] kozin писал(а)равномерным  периодом обновления

    вот это-то и непонятно - зачем контроллеру передавать снова и снова ТЕ ЖЕ САМЫЕ данные? Он ведь уже их получил, и до следующего перерасчета  и сам будет держать установленный единожды газ. Никакой пользы кроме вреда от отвлечения процессора регулятора на прерывания.

  • Аватар профиля kozin Алексей Козин в 8 г., 10 мес. назад

    дублирование при помехе?

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 10 мес. назад

    Если помеха такая что заметно наводится на PWM то лучше экранированного кабеля нет ничего :) 

    Это кстати еще один момент в пользу отдельного контроллера "угловое положение+моторы" - протокол DSHOT c контрольной суммой.

  • Аватар профиля kozin Алексей Козин в 8 г., 10 мес. назад

    у дшота достаточно высокая частота сигнала, чем она выше, тем труднее защитить от помехи. допустим у сигнала дшот есть контрольная сумма , а смысл? несошлось - такт управления все равно упущен, до следующего такта петли измерения гироскопов и передачи имульса данных не будет. дшот думаю тоже надо нарисовать, зачем пользователя ограничивать в выборе

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 10 мес. назад
    [2017-01-17 06:18:29] kozin писал(а): до следующего такта петли измерения гироскопов и передачи имульса данных не буде

    На высоких частотах обновления изменения от такта к такту незначительные, и лучше пропуск импульса чем ложное значение. Где-то на импортном форуме это обсуждалось.

    [2017-01-17 06:18:29] kozin писал(а): дшот думаю тоже надо нарисовать

    Было бы полезно, ежели Наттикс позволит

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 10 мес. назад

    Последние новости:

    • починен баг с RC_Output, все работает.
    • сделан ремап между системными режимами PWM и реальными, сейчас вместо Normal включен OneShot, вместо OneShot - OneShot125
    • сделана поддержка перезагрузки в DFU загрузчик через "reboot to PX4 bootloader" в МиссионПланнер
    • также плата загрузится в DFU на следующую загрузку после любого HardFault и Panic()  - больше не надо добираться до платы если что пошло не так.
    • сделана (но пока не протестирована как следует) поддержка второго PPM/DSM/SBUS приемника в режиме diversity
    • внесены последние изменение из апстрима
  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 10 мес. назад

     

    Обновление!

    • diversity на RC_Input работает!!!
    • отменены идиотские изменения в mainline по отношению к интерфейсу Periodic
    • Все используемые драйверы доработаны чтобы использовать возможность "перепланировать меня"  из этого HAL
    • Добавлено использование вывода Компаса DataReady

     

    также добавлены бинарники версии «Франкенштейн» - основа из Copter 3.4 и части из текущей версии,  лежат в Copter-3.4.

    также добавлена прошивка Plane, собранная на этой версии "Франкенштейна"

     

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 10 мес. назад

    Добавлена поддержка Failsafe приемника DEVO-RX719 (от Walkera-Aibao). На мой взгляд это сейчас наилучший RC приемник с модуляцией DSSS

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 10 мес. назад

    Новая версия.

    • Логи наконец-то работают!
    • убраны "франкенштейн-версии"
    • настройки таймеров в RC_IN перенесены в конфигурирование платы
  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 10 мес. назад

    Волей случая протестировал анонсированный ранее вход в  режим DFU после HardFault и Panic() - и ведь работает!

    Без батарейного питания, даже без отвязанного накопительного конденсатора регистры BackupDomain сохраняют свое состояние больше секунды после выключения питания! Это открывает неплохие возможности повышения надежности контроллеров - как минимум хранить там флаг "мы заармлены" с калибровочными данными сенсоров, и при перезагрузке в этом состоянии отрабатывать какой-то алгоритм экстренного спасения.

     

  • Аватар профиля macrokernel macrokernel в 8 г., 10 мес. назад

    Вот интересный ПК на Ф4 с барометром, OSD и SD-картой: http://shop.myairbot.com/index.php/flight-control/omnibusf4v2.html

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 10 мес. назад

    Ага, ко мне такой уже едет :) Только вот он во-первых несовместим с Revo по ногам ибо SPI2 используется, и во-вторых жутковато спроектирован - две шины SPI использованы как внутри, так и выведены наружу, а все датчики питаются от того же 3.3 что и проц - со всеми шумами. Так что при его цене лучше взять оригинальный Revolution, еще и на ОСД останется.

    Также не стоит забывать, что все рейсерские контроллеры напрочь лишены какой-то развязки от шумов STM32, оттого без доработки пригодны только для полетов вокруг себя - шумы процессора глушат радиоуправление, мой DSSS приемник потерял связь в ~300 метрах вместо привычных 2х километров.

    И пикс лайт тоже пришлось экранировать (смотрим на цвет), но у него хоть свой корпус есть.

    OpenPilot Revolution Mini и Pixhawk Lite

     

  • Аватар профиля DChernov DChernov в 8 г., 10 мес. назад

    Приветствую!

    Правильно ли я понимаю процесс заливкт прошивки под Windows?

    1.Преобразую .HEX в .DFU с помощью СТМовской утилиты

    2. С помощью DFU demonstrator заливаю полученный файл в процессор

    Не пойму, где косячу.

    Плата Airbot F4Acro  (stm32f405 + mpu6000) c подцепленными на I2C барометром и компасом после прошивки быстро моргает светодиодом, никакой активности на портах.

    НЕХ брал с Вашего житхаба из архива latest

    Спасибо.

← Форум группы   Все форумы К последней записи
Постов на странице:

Вы автоматически вступите в эту группу, когда ответите в теме.

Добавить ответ:

-
Рейтинг@Mail.ru