OSD на ATmega1281
Спасибо не не надо
Я забыл смайлик поставить… 😃 Хотя в OSD часто пользовался таким приемом, быстренько писал на си, компилил, смотрел что там CV наассемблировал и оптимизировал уже готовый асм-код. Быстрее получается, тем более с асмом меги никакого опыта нет.
это геометрическое построение или же зарание подготовленные изображения с разными углами
Конечно геометрия(считаются координаты) плюс графика(рисуются линии). Самое время-прожорливое,- отрисовка текста, пришлось все на асме оптимизировать…
Спасибо не не надо, разобраться в том что сгенерит компилятор без подробных комментариев, я все равно не смогу.
там код на С в коментах, а потом идёт его перевод на асм.
Например:
;// Прерывание срабатыает, когда таймер досчитывает до значения, записаного в 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
;
;
Это я в курсе, хотя такую солянку из АСМа, С и машинных кодов крайне тяжело читать не специалисту, так к тому же и проект листинг которого автор предлагал выложить (за исключением кусочка в посте 232) не содержит ни каких комментариев.
Решил проблему радикально.
Собрал себе комп для наземки на базе вот такого:
как сие называется, можно модель?
Самое время-прожорливое,- отрисовка текста, пришлось все на асме оптимизировать…
Если не секрет, в чем состояла оптимизация? т.е что не так делал С компилятор, и к чему вы привели это в асме?
Например, если объявить локальную переменную- указатель, а потом через него заполнять буфер, компилятор тупо модифицирует эту переменную и каждый раз ее копирует в X-регистр для косвенной адресации, даже если этот регистр больше в цикле не используется… Гораздо короче (ну и соответсвенно быстрее) сразу инициализировать X, и его же модифицировать.
Иногда анализ сгенерированного асма, позволяет существенно оптимизировать Си-шный код, переписав его на Си. Например, в нескольких функциях отказавшись в цикле использовать операцию остаток от деления индекса (один символ на Си, а его реализация весьма много кода за собой тянет), заменил его дополнительной переменной, скорость выполнения функции возросла в несколько раз.
LSR R18
OUT VIDPORT,R18 ; 0
NOPи т.д.
Я с мегами сильно не занимался,
но сам делал циклический сдвиг у ПИКов прямо в порту:)
rlf PORTA,F ;
rlf PORTA,F ;
rlf PORTA,F ;
-----------------------------------------------------
меги могут прямо в порту делать сдвиг 😒???
lsr VIDPORT ;
lsr VIDPORT ;
lsr VIDPORT ;
-----------------------------------------------------
Нет, сдвиг в порту системой команд не предусмотрен.
www.gaw.ru/html.cgi/txt/doc/micros/…/start.htm
У ПИКов то-же недокументированно нигде, а шуршит на всю 😁!!!
Значит будем счупать ручками еёйные ножки😁.
Да avrstud упирается и совсем не хочет понимать
lsr PORT*,
жаль конечно…😦,
пик погибче в этом плане.
Свершилось… 😦 Запалил-таки мегу… Как, наверное, обычно - по глупости и неосторожности… Ну буду оптимистом (а что еще остается…)- нет худа, без добра… Плата после всех изменений и настроек уже и на макетку мало похожа была…
Рискну объявить конкурс на разработку печатки (под ЛУТ). Победителю (и всем участникам!) приз- софт с исходниками…
ЗЫ Млин… так хотел завтра полетать по фпв… Уже практически все настроил и готово было… 😦
…
Рискну объявить конкурс на разработку печатки (под ЛУТ). Победителю (и всем участникам!) приз- софт с исходниками…
ЗЫ Млин… так хотел завтра полетать по фпв… Уже практически все настроил и готово было… 😦
для наземки плату? или под телеметрию?
Аа…, ну конечно… уточню… Речь о OSD-телеметрии, стабилизации, автопилоте… Схема - пост 222. Вопросы в личку или даже может лучше здесь…
ЗЫ Уже заказал проц на элитане. 457р+200р доставка.
к вечеру нарисую.
И чего проц дорогой какой?
Аа…, ну конечно… уточню… Речь о OSD-телеметрии, стабилизации, автопилоте… Схема - пост 222. Вопросы в личку или даже может лучше здесь…
ЗЫ Уже заказал проц на элитане. 457р+200р доставка.
Ну да, ткните носом где платка или гербер.
гербер это кто?
TO msv
платка на 50% готова
To msv
ЛУТ это конечно хорошо! Но хорошая маленькая платка с металлизацией наверно лучше, да и проект сделают сами, и не так это получается дорого.
Можно и с детальками заказать - только прошивку вливай.
Вот например с расценками
А вот сам производитель
а ещё проще купить “фишку20” 😉
И чего проц дорогой какой?
Не скажу, что все маги просмотрел, но те, где находил дешевле, или оптом продают или не признают рассылку простой почтой (доставка получается значительно дороже проца).
Ну да, ткните носом где платка или гербер.
Так все ждем Ивана… 😃
Но хорошая маленькая платка с металлизацией наверно лучше, да и проект сделают сами, и не так это получается дорого.
Без сомнения- достойнейший вариант! Но… для единичного экземпляра дороговато будет… Осваивать даже мелкую серию, нести затраты и риски, увы… ну не мое это… Там тоже все не так просто, как кажется на первый взгляд, и проблемы далеки от схемотехники и программирования, где более менее себя уютно чувствую. Увы, подвиг Тимофея не готов повторить…
Ну и само изделие, не уровня plug and play. Даже на пользовательском уровне очень много настроек, которые потребуют понимания всех деталей алгоритма, управления итп. Те. не для чистого пилота с кошельком, а именно для любителя повозиться…
Тем не менее надеюсь найдется народ, которому будет интересно своими руками сделать систему OSD+стабилизация+АП+RTH с возможностями по некоторым позициям большими, чем в любых подобных существующих системах (реклама однако… ну сам себя не похвалишь… 😃).
Иван, здорово что у Вас работа движется! Правда немного настораживает, что нет никаких вопросов…
Чем рисуете?
вопрос, есть - смысл использования lm311? может попроще вместо неё тразистор воткнуть?
ща доразведу бум косяки ловитЬ:)) SL
пока укладывается всё в 60*40мм 2мя слоями
В детстве мне один рассказывал как модели летают стреляют и сбрасывают бомбочки (думаю врал, сейчас это реальность), меня такие завидки взяли (да к тому же ему подарили набор инструментов а мне нет, правда потом ДВС 5 кубов, но я раскурочил сломал кольцо, да так и пропало это). Да уж, женский мир это подлянки а мужской войнушки. По мне так, войнушка более подходящее занятие.
Да ждем Ивана а то пора уже взлетать.Хотя, до фига чего еще надо, мож и получиться а мож и нет.