Самодельный передатчик (часть 2)

Aleksey_Gorelikov
ВитГо:

v=-channel->epa[0];

Что делает операция “->”?

чтото про “лево предрасположенный выбор” ??!!

Надо просто посмотреть к чему это относится и понятнее станет 😃

Вот к чему:

typedef struct {
signed char subtrimmer;
signed char epa[2];
signed char reverse;
}CHANNEL;

mega_john
ВитГо:

Что делает операция “->”?

это не операция, это оператор доступа по указателю, к члену структуры(класса)

ВитГо

Спасибо !!

Вы бы знали в какие я дебри залез !!! 😃))

Aleksey_Gorelikov:

Что-то я сомневаюсь, что MSV будет этим заниматься… Женя Fokus - аналогично. У него сейчас времени нет не то что на это, а в интернет выползти… Я его изредка в аське вылавливаю, и то с мобильника. Да и живут они гараздо дальше 50км от МКАДа.😁
Можете предложить MSV какой-либо процент и заниматься этим сами, или даже (возможно) использовать прошивку некомерчески, а деньги брать непосредственно за свою работу (плату и т.д), если Сергей даст вам на это (использование прошивки) свое разрешение. И даже если не даст - можете торговать одним “железом” никого не спрашивая. Беретесь?

Кстати а цены на изготовление плат (по ссылке на предыдущей странице) действительно небольшие…
брал 100 на 50 мм… 2 стороны 10 плат - 1250 рублей при первом заказе (125 руб. штука) и 850 рублей при повторном (85 рублей штука)…

Жаль что в ХК 6 кан. нет ЖК экрана штатно… а то можно было бы для него платы делать да продавать желающим…

p.s. хотя все таки ситуацию нужно обдумать 😃)

dollop
Kappitoshka:

Посмотрел схемы которые Omegats выкладывал…

Нет. Поправляем… Какой вы глазастый 😛. Я только С31 и С15 увидев насторожился…
Спасибо.

Andrej100
Lordik5:

Вот читаю ваши мнения по поводу новой v1.9, и облизываюсь- дисплей-то у меня “перевёрнутый”,и залить 1.9 я не могу.Может,кто уже скомпиллил её под перевёрнутый 3310 ?Поделитесь,пожалуйста…😦

Вот 😒

Coder.rar

dollop

Исправил плату для HK-T6A и ему подобных.
Там в архиве два варианта. Оличаются организацией питания кодера и ВЧ блока.

  1. на двух импульсных стабилизаторах LM2674-5.0
  2. на двух линейных стабилизаторах 7805 и одном P-Ch MOSFET.

Все замеченные (спасибо Kappitoshka) ошибки исправлены.
Возможно (как это часто бывает) добавлены новые 😛 - шутка, конечно, но до “массовых заказов для всех обладателей подобных пультов” желательно проверить живьем.

Coder_msv_HK-T6A.zip

omegats

Спасибо за замеченные ошибки. Не буду цитировать, т.к. с мобильного, но по возникшим вопросам… LM2674-5.0 брал в Имраде, резюки и кондеры 1206 (0805 влазят почти везде), кнопки и переключатель - разводил под те что были в наличии. Разъемы сначала пропаивал с одной стороны, потом приподнимал пластик и с другой стороны, где надо. Переключатель - сначала перемычку между слоями, а потом его впаял. Плату делал по ЛУТ. Еще не запускал - успел сделать програматор на FT232RL+МЕГА8 и сдох ноут 😦. Так что…

ВитГо

Еще один вопросик по синтаксису СИ (я понимаю что наверное не совсем то место… но других у меня пока нет)

Описал структуру
typedef struct {
unsigned char itemcol; // Количество пунктов меню
unsigned char *items[]; // пункты меню
unsigned char upitemnum; // указатель на вышестоящий пункт меню
}MENU_STRUCT;

Теперь мне нужно ее проинициализировать значениями

__flash const MENU_STRUCT menu_info[3]={
// Cтартовое меню - 0
{ 2, { “MODEL”, “SYSTEM” }, 255 },

// Меню MODEL - 1
{ 5, { “NEW”, “SELECT”, “EDIT”, “COPY”, “DELETE” }, 0 },

// Меню MODEL - EDIT - 2
{ 6, { “TYPE”, “NAME”, “TIMERS”, “CHANNELS”, “UCH”, “FLY_MODES” }, 0 }
};

вроде так ?
но на строчку
{ 5, { “NEW”, “SELECT”, “EDIT”, “COPY”, “DELETE” }, 0 },
codeVisionAVR ругается что мол пропущена }

мозг уже плавиться… как правильно ?

p.s. эх, как же тяжко переходить на СИ с Паскаля и Дельфей 😦

EagleB3

Я не могу себя назвать продвинутым программером, но, КМК, причина в том, что есть в CVAVR (или вообще в ANSI C?) какое-то ограничение на штуку, которая, вроде как, называется динамическим массивом. Если ее в CVAVR и можно задать, то, видимо, не так, как делаешь ты. И как ее можно задать я не знаю.

Для экспериментов я обычно преобразовываю участки к более “растянутому” виду, тогда становится понятно на что именно ругается компилятор. Например:

// Cтартовое меню - 0
    {   2,
        { "MODEL", "SYSTEM" },
        255
    }
    ,
    {   1,
        "AB",
        "CD",
        "EF",
        5}
    ,
    {   6,
        { "TYPE", "NAME", "TIMERS", "CHANNELS", "UCH", "FLY_MODES" },
        0
    }
};

Теперь изменяй количество “пунктов” для второго раздела меню (удаляя сначала строку “EF”, а потом строки “CD” и “EF”) - и все будет очень наглядно.
Ощущение такое, что компилятор определяет количество элементов массива по первой строке, и обижается, если в последующих строках это количество изменяется.

И в самом деле, если в описании типа сказать либо unsigned char *items[6];, либо unsigned char *items[0];, то проканает вот такая инициализация:

__flash const MENU_STRUCT menu_info[3]={
// Cтартовое меню - 0
    {2, { "MODEL", "SYSTEM", "", "", "", ""}, 255 },
    {1, { "AB", "CD", "EF", "", "", ""},        5 },
    {6, { "TYPE", "NAME", "TIMERS", "CHANNELS", "UCH", "FLY_MODES" }, 0 }
};
ВитГо

фиксированную длинну массива знаю… но хотелось по короче… а то у меня есть менюха в которой 28 пунктов… 😃))))

EagleB3

Почитай встроенный хелп - там довольно много и довольно толково.
Еще могу прислать мануал на CVAVR v.2.03.5. Или выложить его и еще несколько толковых мануалов по CVAVR, по Си вообще и по микроконтроллерному Си в частности. Или в сети поищи, например, “CodeVisionAVR пособие для начинающих, Лебедев М.Б.” - практически перевод мануала; причем из 250 страниц автор умудрился сделать 600…

ВитГо

переделал на фиксированное количество элементов… все компилится…

остальное в личку

EagleB3
ВитГо:

у меня есть менюха в которой 28 пунктов… 😃))))

Это жесть! Это обязательно надо разбивать на подпункты, КМК.

ВитГо

Я просто боюсь что разбив сделаю путанным меню…
28 пунктов это конечные точки каждого из органов управления. их 13 плюс еще одна пара нужна…
сейчас поделил на Stick (4 элемента) , Vario (3), Switch(5), Buttons(1)…

DD

ВитГо, можно вручную выделять память с помощью getmem, и потом с помощью указателей обращаться к элементам массива в этой памяти

ВитГо
DD:

ВитГо, можно вручную выделять память с помощью getmem, и потом с помощью указателей обращаться к элементам массива в этой памяти

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

свой вопрос закрываю…

Всем помогающим большое спасибо !!! приятно осознавать что твоему кипящему мозгу помогают ! 😃

Modris

Jest lji vozmozhnostj pereklju4itj Dual Rate s odnjim viklu4ateljem na 1,2,4 kanal , kak eto sdelano v Futaba 7C?

dollop

Конечно. Но только на hardware уровне. То есть программно этот режим в имеющеся прошивке на тумблер не повесить (разве что в виде микшеров каких-нить) А на постоянно сделать можно - вместо трех тумблеров поставить один и запараллелить соответствующие входы микроконтроллера

Aleksey_Gorelikov

Выходы (точнее входы) можно и програмно запаралелить… Хотябы в def.h одну и ту-же ногу указать.

EagleB3

Совершенно согласен!
И, более того, если есть хотя бы минимальные навыки программирования (да или просто желание разобраться с программой - на уровне определения ног никаких сложностей вообще нет!), то, IMHO, это и надо делать программно.

Отдавать три ноги контроллера под то, что можно отлично делать одной ногой - расточительство!

Кстати, как вариант, при желании/необходимости: один из неиспользуемых переключателей (SA14…SA16) можно отдать под команду “Все двойные”. И рулить двойными расходами либо по отдельности существующими переключателями, либо всеми сразу.

msv

Для этого (в тч. групповое переключение расходов одним щелчком) существуют режимы полета.