Создание собственной системы стабилизации

strizhmax

Хоть я и не Сергей.
Инвертор уже есть на плате. Маленькая черная 6ногая микросхема. Возле usart 4, кажется.

ExIM

Вопросы отпали сами собой.
В полученном мануале опечаток много: два раза USART 3 описан, и не указан USART4. 😃

SergDoc
ExIM:

Сергей, не подскажете, что подразумевается под инвертором? Для подключения s.bus

На s.bus (не путать с s.port) инвертор нужен! делается примерно так:

in - это выход с приёмника
out - 4-й вход на плате, перемычка для запуска s.bus на входы 2-3

ExIM:

В полученном мануале опечаток много: два раза USART 3 описан, и не указан USART4.

Создайте пожалуйста кто-нибудь отдельную тему по данному девайсу, а то эта тема здоровая и не для этого…

alexeykozin
SergDoc:

Создайте пожалуйста кто-нибудь отдельную тему по данному девайсу, а то эта тема здоровая и не для этого…

а есть, правда в другом форуме,
для этого нужна редактируемая шапка
forum.apmcopter.ru/forums/f4by/

oleg70
djdron:

попробую, может в таком расположении будет нормально

Смело можно ставить… проверял даже на ЛУТ плате с сомнительной топологией - всё работает.

8 days later
oleg70

Искурив весь даташит на F407, всёж заставил его работать как аппаратный OSD (использование ядра - 0%), таким образом имеем контроллер полёта+OSD в одном флаконе, цена вопроса: 38 килобайт ОЗУ (640х480 монохром), LM1881 и 74HC08…
Кому интересны подробности, поделюсь…

alexeykozin

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

rual
oleg70:

как аппаратный OSD (использование ядра - 0%),

ну там не совсем 0% наверно? Запуск нового кадра и строки ведь программно?

alexeykozin:

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

Это возможно, не знаю как у Олега сделано, можно сделать автономное формирование синхроимпульсов с ног таймеров проца, сами таймеры обвязать петлёй ФАПЧ с задачей от ЛМ1881.
Вот только ног у проца на полетнёг уже не хватит, на ОСД нужен отдельный.

oleg70
rual:

ну там не совсем 0% наверно?

Именно - 0… (из за этого и возился, почти месяц).

rual:

Вот только ног у проца на полетнёг уже не хватит

И ног хватило: весь полётник (6 каналов) + DAC говорилка + MICRO/SD + ADC(2 канала)… всё пашет.

strizhmax
oleg70:

Именно - 0… (из за этого и возился, почти месяц).

0 - это на вывод картинки. а сколько уходи на генерацию картинки?

oleg70
strizhmax:

а сколько уходи на генерацию картинки?

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

SergDoc

Чёт мне не верится… допустим даже не надо перерисовывать всю картинку а только вносить изменения - их нужно взять и перенести - когда - ну допустим когда проц “курит” между циклами, это опять же при условии, что петля не слишком “страшная” типа вий марг… если что-то посерьёзней - будет не есть гуд, далее заряжаем ПДП SPI, а там х.з. во, вернёмся к нашим баранам - в пресловутом Pixhawk с его 428-м процем при использовании ИНС на EKF (50Гц) и полного логирования - петля впритык 400Гц и есть предупреждения, что цикл не стабилен! (можно любой лог с пикса взять) И вы утверждаете что загрузка ОСД = 0% времени ядра? сомневаюсь…
стоп а ПДП из памяти в память можно?

oleg70
SergDoc:

загрузка ОСД = 0% времени ядра?

Сам процесс отрисовки у большинства OSD требует прерывания с наивысшим приоритетом (15625 Гц) как раз для “перезарядки” DMA SPI, которое несмотря на навороченный NVIC, происходит с с разной задержкой в зависимости от того - чего оно прерывает… таким образом про другие реалтайм прерывания можно забыть…
А у меня теперь проц даже не знает, что три его таймера сами выводят картинку на экран, моё дело теперь - только в видеобуфер кидать точки… типа “видеокарты stm” получилось…

djdron

DMA на OSD все равно немного мешает остальному т.к. держит шину данных

alexeykozin
djdron:

DMA на OSD все равно немного мешает остальному т.к. держит шину данных

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

Shrizt
oleg70:

Кому интересны подробности, поделюсь…

Конечно интересны, делись! Я так понимаю, теперь весь вопрос в создании ПО, с этим может чем поможем!

djdron
alexeykozin:

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

Ну в F4 помойму не такая SRAM и еще + busmatrix

oleg70
Shrizt:

Конечно интересны, делись!

Это схема, если нужно, скину файлик с инициализацией таймеров и функциями вывода графики/текста…

alexeykozin
oleg70:

Это схема, если нужно, скину файлик с инициализацией таймеров и функциями вывода графики/текста…

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

oleg70
alexeykozin:

да. без программной части замысел не ясен

Если коротко, - то таймерами из смеси синхроимпульсов выделяются только строчные, причем осуществляется их сдвиг в видимую область экрана, SPI в <slave> режиме тактируется от таймера 9, DMA ессно в <Circular> режиме…
Кстати, если не заморачиваться с объединением полетника и OSD и делать OSD отдельно, то можно второй SPI параллельно подрубить и запросто сделать двухцветный OSD (ч/б)… (в принципе можно и третий SPI использовать 😃)