OSD на ATmega1281

msv
korall:

Спасибо не не надо

Я забыл смайлик поставить… 😃 Хотя в OSD часто пользовался таким приемом, быстренько писал на си, компилил, смотрел что там CV наассемблировал и оптимизировал уже готовый асм-код. Быстрее получается, тем более с асмом меги никакого опыта нет.

korall:

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

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

Dikoy
korall:

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

там код на С в коментах, а потом идёт его перевод на асм.
Например:

;// Прерывание срабатыает, когда таймер досчитывает до значения, записаного в OCR1A.
;interrupt [TIM1_COMPA] void timer1_compa_isr(void)
; 0000 0067 {
_timer1_compa_isr:
ST -Y,R26
ST -Y,R27
ST -Y,R30
ST -Y,R31
IN R30,SREG
ST -Y,R30
; 0000 0068 PORTD INV_B(4);
IN R30,0x12
LDI R26,LOW(16)
EOR R30,R26
OUT 0x12,R30
; 0000 0069
; 0000 006A if(completed_flag == SET) {
LDI R30,LOW(238)
CP R30,R2
BRNE _0x9
; 0000 006B temp = dobavka; // если данные готовы, обновляем значение temp
MOVW R6,R8
; 0000 006C completed_flag = FREE; // помечаем флаг, что данные получены
CLR R2
; 0000 006D }
; 0000 006E
; 0000 006F
; 0000 0070 if((compA + temp) > 0xFFFF ) { // проверяем, не превосходит ли сумма значения таймера с добавкой максимального значения FFFF
_0x9:
MOVW R26,R6
ADD R26,R10
ADC R27,R11
LDI R30,LOW(65535)
LDI R31,HIGH(65535)
CP R30,R26
CPC R31,R27
BRSH _0xA
; 0000 0071 compA = ((compA + temp) - 0xFFFF); // если да, вычисляем значение с учётом переполнения.
MOVW R30,R6
ADD R30,R10
ADC R31,R11
SUBI R30,LOW(65535)
SBCI R31,HIGH(65535)
MOVW R10,R30
; 0000 0072 } else {
RJMP _0xB
_0xA:
; 0000 0073 compA = (compA + temp); // если нет - просто складываем.
__ADDWRR 10,11,6,7
; 0000 0074 }
_0xB:
; 0000 0075 OCR1A = compA; // записываем в таймер новый порог срабатывания.
__OUTWR 10,11,42
; 0000 0076
; 0000 0077 }
LD R30,Y+
OUT SREG,R30
LD R31,Y+
LD R30,Y+
LD R27,Y+
LD R26,Y+
RETI
;
;

korall

Это я в курсе, хотя такую солянку из АСМа, С и машинных кодов крайне тяжело читать не специалисту, так к тому же и проект листинг которого автор предлагал выложить (за исключением кусочка в посте 232) не содержит ни каких комментариев.

Prodigy
Lazy:

Решил проблему радикально.
Собрал себе комп для наземки на базе вот такого:

как сие называется, можно модель?

Pantryk
msv:

Самое время-прожорливое,- отрисовка текста, пришлось все на асме оптимизировать…

Если не секрет, в чем состояла оптимизация? т.е что не так делал С компилятор, и к чему вы привели это в асме?

msv

Например, если объявить локальную переменную- указатель, а потом через него заполнять буфер, компилятор тупо модифицирует эту переменную и каждый раз ее копирует в X-регистр для косвенной адресации, даже если этот регистр больше в цикле не используется… Гораздо короче (ну и соответсвенно быстрее) сразу инициализировать X, и его же модифицировать.
Иногда анализ сгенерированного асма, позволяет существенно оптимизировать Си-шный код, переписав его на Си. Например, в нескольких функциях отказавшись в цикле использовать операцию остаток от деления индекса (один символ на Си, а его реализация весьма много кода за собой тянет), заменил его дополнительной переменной, скорость выполнения функции возросла в несколько раз.

avisenja
abalex:

LSR R18
OUT VIDPORT,R18 ; 0
NOP

и т.д.

Я с мегами сильно не занимался,
но сам делал циклический сдвиг у ПИКов прямо в порту:)

rlf PORTA,F ;
rlf PORTA,F ;
rlf PORTA,F ;
-----------------------------------------------------
меги могут прямо в порту делать сдвиг 😒???

lsr VIDPORT ;
lsr VIDPORT ;
lsr VIDPORT ;

-----------------------------------------------------

avisenja

У ПИКов то-же недокументированно нигде, а шуршит на всю 😁!!!
Значит будем счупать ручками еёйные ножки😁.

avisenja

Да avrstud упирается и совсем не хочет понимать

lsr PORT*,

жаль конечно…😦,
пик погибче в этом плане.

10 days later
msv

Свершилось… 😦 Запалил-таки мегу… Как, наверное, обычно - по глупости и неосторожности… Ну буду оптимистом (а что еще остается…)- нет худа, без добра… Плата после всех изменений и настроек уже и на макетку мало похожа была…
Рискну объявить конкурс на разработку печатки (под ЛУТ). Победителю (и всем участникам!) приз- софт с исходниками…
ЗЫ Млин… так хотел завтра полетать по фпв… Уже практически все настроил и готово было… 😦

Иван
msv:


Рискну объявить конкурс на разработку печатки (под ЛУТ). Победителю (и всем участникам!) приз- софт с исходниками…
ЗЫ Млин… так хотел завтра полетать по фпв… Уже практически все настроил и готово было… 😦

для наземки плату? или под телеметрию?

msv

Аа…, ну конечно… уточню… Речь о OSD-телеметрии, стабилизации, автопилоте… Схема - пост 222. Вопросы в личку или даже может лучше здесь…
ЗЫ Уже заказал проц на элитане. 457р+200р доставка.

Иван

к вечеру нарисую.
И чего проц дорогой какой?

Vlado
msv:

Аа…, ну конечно… уточню… Речь о OSD-телеметрии, стабилизации, автопилоте… Схема - пост 222. Вопросы в личку или даже может лучше здесь…
ЗЫ Уже заказал проц на элитане. 457р+200р доставка.

Ну да, ткните носом где платка или гербер.

Иван

гербер это кто?
TO msv
платка на 50% готова

msv
Иван:

И чего проц дорогой какой?

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

Vlado:

Ну да, ткните носом где платка или гербер.

Так все ждем Ивана… 😃

avisenja:

Но хорошая маленькая платка с металлизацией наверно лучше, да и проект сделают сами, и не так это получается дорого.

Без сомнения- достойнейший вариант! Но… для единичного экземпляра дороговато будет… Осваивать даже мелкую серию, нести затраты и риски, увы… ну не мое это… Там тоже все не так просто, как кажется на первый взгляд, и проблемы далеки от схемотехники и программирования, где более менее себя уютно чувствую. Увы, подвиг Тимофея не готов повторить…
Ну и само изделие, не уровня plug and play. Даже на пользовательском уровне очень много настроек, которые потребуют понимания всех деталей алгоритма, управления итп. Те. не для чистого пилота с кошельком, а именно для любителя повозиться…
Тем не менее надеюсь найдется народ, которому будет интересно своими руками сделать систему OSD+стабилизация+АП+RTH с возможностями по некоторым позициям большими, чем в любых подобных существующих системах (реклама однако… ну сам себя не похвалишь… 😃).
Иван, здорово что у Вас работа движется! Правда немного настораживает, что нет никаких вопросов…
Чем рисуете?

Иван

вопрос, есть - смысл использования lm311? может попроще вместо неё тразистор воткнуть?
ща доразведу бум косяки ловитЬ:)) SL

пока укладывается всё в 60*40мм 2мя слоями

Vlado

В детстве мне один рассказывал как модели летают стреляют и сбрасывают бомбочки (думаю врал, сейчас это реальность), меня такие завидки взяли (да к тому же ему подарили набор инструментов а мне нет, правда потом ДВС 5 кубов, но я раскурочил сломал кольцо, да так и пропало это). Да уж, женский мир это подлянки а мужской войнушки. По мне так, войнушка более подходящее занятие.
Да ждем Ивана а то пора уже взлетать.Хотя, до фига чего еще надо, мож и получиться а мож и нет.