Cheerson CX-20 клон квадрокоптера DJI Phantom

drdupery
darkcats:

на сто процентную работоспособность…

отличия по программной памяти и оперативной, программной хватает
остаётся только вопрос по оперативной, но 512 байт по идее очень даже не мало
т.е. вероятность работоспособности я бы сказал очень высока и тем более, что при компиляции ошибок не было, а компилятор проверяет и использование оперативной памяти также

An_private

--------- Target Information ---------
AVR Model: atmega16u2
Board: USER
Clock: 16000000Hz CPU, 16000000Hz Master
--------------------------------------

Size after:
AVR Memory Usage
----------------
Device: atmega16u2

Program: 5512 bytes (33.6% Full)
(.text + .data + .bootloader)

Data: 510 bytes (99.6% Full)
(.data + .bss + .noinit)

darkcats
An_private:

Вот здесь на фото хорошо виден 32u2

надо свой вскрыть…

drdupery
An_private:

Data: 510 bytes (99.6% Full)

на пределе, возможны нюансы, нужно пробовать
куда ж они столько памяти сожрали 😃
но s-bus для cx-20 это хорошая тема для тех, кто сменил штатную аппаратуру

An_private
drdupery:

куда ж они столько памяти сожрали

Буфера под USB. Судя по тому, что в makefile штатно есть опции и для 16u2 и для 32u2 - всё должно работать и там и там.

drdupery
An_private:

всё должно работать и там и там.

я тоже так считаю, а на чём там затык в данный момент, ничего у MFer не заработало?

а он 32U2 влил в 16U2, думаю, что если зальёт 16U2 в 16U2, то всё будет ok
можно скомпилить 32U2 и посмотреть сколько байт используется и если > 512, то вот он и ответ

An_private

--------- Target Information ---------
AVR Model: atmega32u2
Board: USER
Clock: 16000000Hz CPU, 16000000Hz Master
--------------------------------------

Size after:
AVR Memory Usage
----------------
Device: atmega32u2

Program: 5512 bytes (16.8% Full)
(.text + .data + .bootloader)

Data: 510 bytes (49.8% Full)
(.data + .bss + .noinit)

drdupery
An_private:

Data: 510 bytes (49.8% Full)

тогда остаётся только гадать заработает или нет 😃
но раз автор предусмотрел 16U2 то скорее да, чем нет
если только китайцы не стали использовать другие линии передачи инфы из маленького чипа в большой 😃

An_private
drdupery:

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

С этим то разберёмся. Сейчас хотя бы добиться базовой работы - чтобы после перепрошивки увиделся по USB как com-порт.

drdupery:

раз автор предусмотрел 16U2

Там авторов - туева хуча - это же fork от ardupilot. А Кирилл добавил только отдельную библиотеку sbus вместо ppm.

drdupery
An_private:

Сейчас хотя бы добиться базовой работы

ждём, когда MFer зальёт 16U2 версию

MFer
drdupery:

ждём, когда MFer зальёт 16U2 версию

сорь затянул, т.к. сломался паяльник )))

итак, отчитываюсь:

  1. Arduino-usbdfu.hex - через USBAsp не заливается, выдает ошибку:

пришлось обратно шить нарытую в инете, которую я выкладывал выше в архиве (кстати убил на поиски подходящей часа два в прошлый раз - в оригинале она называлась Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex)…

  1. Arduino-usbserial.hex - через Flip в режиме DFU прошился, ком-порт определился, миссион планнер коннектится не захотел ни в какую, ни на каком баудрейте…

  2. Arduino-usbserial-sbus.hex - через Flip в режиме DFU прошился, ком-порт НЕ определился, но тут хотя бы в отличии от той проши (под 32-ю атмегу) устройство неопознанное определилось ))

оставил контроллер распаянным под дальнейшие эксперименты )))

An_private

У меня есть подозрение, что по мере развития проекта он просто перестал влезать в память 16u2 (занята практически вся оперативка, а еще должно быть место для стека и кучи). И на каком-то этапе на поддержку 16u2 просто забили. То есть старые прошивки существуют и шьются, а вот скомпилировать новую для 16u2 просто уже нельзя. Я сейчас скомпилировал обычную ppm прошивку под 16u2 из официального хранилища ardupilot (не sbus fork). Если она тоже не заработает, то я пас - значит для 16u2 надо искать старую работающую прошивку и реинтегрировать туда библиотеку s-bus от Кирилла. Это та еще работёнка, я ей заниматься не буду. Проще уж сдуть 16u2 и на её место поставить 32u2, либо поставить внешний конвертер s-bus -> ppm.

drdupery
An_private:

а еще должно быть место для стека и кучи

не знаю как в атмеге, а в других для стека специальная отдельная память, в слабеньких на максимум 4-5 вызовов
куча - это если мы выделяем память функциями в C, также переменные, но здесь это контролируется всё компилятором, так как в прошивке не используются сишные функции для выделения памяти

surfer_kz

А вся возня с Sbus только чтобы количество проводов уменьшить или еще какие-то плюсы есть?

darkcats
surfer_kz:

А вся возня с Sbus только чтобы количество проводов уменьшить или еще какие-то плюсы есть?

есть, помимо проводов, еще и 12 каналов! с приемника… на 10, и даже на 8… по PWM которые

An_private
drdupery:

не знаю как в атмеге, а в других для стека специальная отдельная память

Нет, здесь общая.

drdupery:

в прошивке не используются сишные функции для выделения памяти

Не проверял. Но вот на стек уже может и не хватить.

mfilitovich

Так ведь есть конвертер - микроплата sbus в ppm, попробую прикупить такую.
RCTimer Крошечные Конвертер SBUS ЧТОБЫ PPM или SpeSerial Приемник Freeshipping
www.aliexpress.com/item/…/32685683269.html
(from AliExpress Android)

MFer
An_private:

Так, а если вот это прошить?

Также как с предыдущим вариантом (без sbus) - шьется через Flip в режиме DFU, ком порт появляется, но при попытке законнектить в МП выдает таймаут.
Причем сначала как бы начинается коннект, а потом сразу таймаут - в конце ошибка - “получен только один пакет”…
i64.tinypic.com/2rruddw.png

Прошил обратно флипом раодную прошивку - все коннектится нормально…

При этом при нормальном коннекте диоды работают так:
i65.tinypic.com/2a27gi.jpg

При твоей прошивке - диоды приема/передачи данных не работают…