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

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

    Почистил

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

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

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

    Да, с 55 до 99 дырень. Перенумеровывать лениво

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

    сверяю масив пинмап со своим процом, пока все сходится недаром файл назван stm32f4xx

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

      {&gpioa, &timer1,NULL,  8, 1, ADCx}, /* D22/PA8  2 */

        {&gpioe, &timer1,NULL,  9, 1, ADCx}, /* D75/PE9  */

    исодя из данных проги стмовской что праильно во вротом случае.

    в случае если использовать d22  с таймером скорее всего будет задействована другая нога

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 7 г., 10 мес. назад
    [2017-01-04 21:03:49] kozin писал(а): сверяю масив пинмап со своим процом, пока все сходится недаром файл назван stm32f4xx

    Ага, это из LeafLabs/ArduinoSTM32 одолжено.

    [2017-01-04 21:03:49] kozin писал(а): один и тот же таймер в одной и той же конфигурации с одним и тем же каналом используется на двух пинах

    Нога D75 не используется а значит и не инициализируется - то есть эта настройка не применяется. 

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

    в идеале, если делать "универсальный хал" под стм32ф4 контроллеры было бы замечательно (если это возможно) если бы из одного файла дефайнов задавались не только пины выборки чипов, спиай шины и сериал портов но и выбор сенсоров и их шин. нашел некоторый фиксированный хардкод в i2c,  небольшой беспорядок с порядком юсартов при инициализации хал.

    было бы красивши чтобы юсарты по порядку инициализировать, а в хале проверять не сколько выходов используется и свободны ли пины, а задефайнены ли rx tx пины юсарта.

    собственно если прошивка не квайд и не три то логично не определять в пиндефайнах платы rx tx пины конкурирующих юсартов

     

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 7 г., 10 мес. назад
    [2017-01-05 06:56:03] kozin писал(а): если делать "универсальный хал" под стм32ф4 контроллеры

    Тут с одним бы разобраться окончательно, потом можно про остальное думать.

    [2017-01-05 06:56:03] kozin писал(а): но и выбор сенсоров и их шин

    I2c автодетектится так что можно всей кучей держать, для SPI есть в TODO и есть мысЕль как это сделать дешево.

    [2017-01-05 06:56:03] kozin писал(а): небольшой беспорядок с порядком юсартов

    Это не беспорядок а попытка соответствовать "умолчальному" назначению УСАРТов как в МП так и в доке OpenPilot

    [2017-01-05 06:56:03] kozin писал(а): если прошивка не квайд и не три

    УСАРТ инициализируется при первом использовании, поэтому никому такая конкуренция не мешает, зато позволяет не инклудить юзерские настройки в низкоуровневый код

     

    Жесткое назначение SoftI2C пинов убрал

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

    пара наблюдений. еклипс показывает что fpu фпу не включается.

    inline void enableFPU(void){
    #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
        SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));    // set CP10 and CP11 Full Access
    #endif
    }

    т.к. расчетное __FPU_USED ==0 . попытался разобраться но там куча непонятных мне условий.

    немного не понял как рабтотает установка делителей кварца. вроде как просто задается целевая частота 168. но непонятно расчет идет исходя из какихто типовых значений кварца, т.е 25 мгц? или само вычислит что у меня снаружи 8 мгц?

     

     

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 7 г., 10 мес. назад
    [2017-01-05 07:51:27] kozin писал(а): немного не понял как рабтотает установка делителей кварца

    Скопировано как есть после СТМного генератора, даже не разбирался. Внешняя частота задана 8.

    [2017-01-05 07:51:27] kozin писал(а): еклипс показывает что fpu фпу не включается.

    В коде команды ФПУ используются и работают если по шагам идти.

              Vector3::operator*=(float):
    0804e1cc:   vldr    s13, [r0]
    0804e1d0:   vldr    s14, [r0, #4]
    0804e1d4:   vldr    s15, [r0, #8]
    0804e1d8:   vmul.f32        s13, s13, s0
    0804e1dc:   vmul.f32        s14, s14, s0
    0804e1e0:   vmul.f32        s0, s15, s0
    0804e1e4:   vstr    s13, [r0]
    0804e1e8:   vstr    s14, [r0, #4]
    0804e1ec:   vstr    s0, [r0, #8]
    283       }
    0804e1f0:   bx      lr
    
  • Аватар профиля kozin Алексей Козин в 7 г., 10 мес. назад

    /*
     *  add new boards steps 
     *  lets name of new board is
     *  in folder  wirish/boards make directory
     *  copy to this folder all files from revomini_MP32V1F4
     *  rename files part revomini_MP32V1F4 -change to
     *  change in .h  pin definitions. see pin number in PIN_MAP array
     *  example 'D2' = 2 = cpu pin named 'PB12'
     *  in folder /mk file board_REVOMINI.mk copy to ,
     *  inside this file change constant BOARD  ?= revomini_MP32V1F4 to  BOARD  ?=
      */

    куданить бы вставить памятку .

    а как определять таргет для своей платы или выбирать ее?

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

    Readme в каталоге ХАЛа подойдет?

    ЗЫ. Ужал количество исключений из оптимизации до двух заголовков и одного CPP. Но до сих пор не понимаю что ему не хватает.

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

    размер буфера достаточен?

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 7 г., 10 мес. назад
    [2017-01-05 12:24:26] kozin писал(а): размер буфера достаточен

    Какого буфера? Все определяется вызывающей стороной.

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

    Как это видится с дилетантской точки зрения: SPI порт вроде как сдвигает байт побитно из паралельного состояния в последовательное, теоретически реализация может быть с буффером когда пишешь в буффер массив байт а он сам по мере опустошения сдвигового регистра пишет в него из буффера. если в реализации такого буффера его размер меньше чем в него записывают в быстром оптисмизированом коде- то на выходе мусор. если он успевает освободить буффер сдвинув данные в последовательную шину то все нормально

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

    Все может быть, только вот в коде есть принудительная синхронизация по переданным и принятым байтам, так что независимо от скорости исполнения поток принимаетс/передается строго синхронно. Если драйвер заказал у ХАЛ прием и предоставил буфер меньшего размера то он ССЗБ, но от уровня оптимизации это никак не зависит.

    Тут самое забавное что наикапризнейшая I2С  прекрасно работает с чистА софтверным драйвером, а типО беспроблемная SPI загадки загадывает...

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

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

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

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