Альтернативная прошивка к FlySky/Turnigy/I-Max/Eurle (Кодер Fokus-a - MSV)

Stepan_M

2 ВитГо Поздравляю с удачной прошивкой! Для завершения процесса калибровки надо погонять туда сюда все крутилки, так было в моем случае. Потом для выхода + или - не помню точно.

Ура! Процесс пошел.

Aleksey_Gorelikov
msv:

Алексей, не дает покоя вопрос, как ты собираешься уместить 8 моделей?? Или в этой аппе нет и не будет режимов полета?

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

ВитГо

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

Для себя всегда комментирую код - и если кому будет интересно то могу выкладывать сюда результаты своих трудов…

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

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

ВитГо
msv:

Если прошивка с 1.9, то там есть ошибочка с определением мин. газа, исправленная в последнем фиксе. Алексей без проблем разберется…
Алексей, не дает покоя вопрос, как ты собираешься уместить 8 моделей?? Или в этой аппе нет и не будет режимов полета?

Да нет на первый взгляд все там правильно… мудрено правда очень

void VerReady(void)
{
unsigned int i;

while(1)
{
i=read_adc(ch_Throttle); // взяли положение ручки газа
if(i>ADmin[3]) i-=ADmin[3]; else i=0; // посчитали его положение от мин.

i*=10; i/=(ADmax[3]-ADmin[3]); // мудреные вычисления 😃

if(i==0) break; //<10% // в общем если стик газа далеко от минимума
LCD_clear(); // то выводим ошибку
LCD_setxy(8,20);
LCD_wrsf(“Down throttle!”, 1);
LCD_refresh();
beep_start(error_starting, 3, 0); // и противно пищим
delay_ms(1500);
}
}

ИМХО понятнее было бы

i=read_adc(ch_Throttle); // взяли положение ручки газа

i-=ADmin(3)+3; // вычтем из положения минимум чтобы получить абсолютную величину отклонения, прибавляем 3 (или 5 или 10 - попробовать нужно) чтобы не выпасть в отрицательные числа - например из за того что немного не точно была проведена калибровка канала газа и ручка может давать еще меньшие значения чем мы запомнили при калибровке

k=(ADmax[3]-ADmin[3])>>4 - сдвиг на 4 тоже самое что деление на 16… если кому много сделайте сдвиг на 3 (будет деление на 8)

if (i<k) break;…
ну и далее по тексту

ну а если печатать лень то можно все в одну строку
if ((i-ADmin[3]+3)<((ADmax[3]-ADmin[3])>>4)) break;

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

msv

Тайного смысла в этом нет ?

Процедура проверки валидности калибровки вообщем-то вспомогательная функция, намекающая пользователю что надо-бы разобраться с его железом… Но возможность работать с теми значения калибровки, которые у него получились- его право… Мое дело ему напоминать об этом при каждом включении, а он типа вправе отказываться от повторных калибровок клавишей лево. Вообщем непринципиальный момент…
//–
“Мудреные вычисления” всего лишь решение пропорции для определения 10% от (ADmax[3]-ADmin[3]) - 100%. 😃
А вот используются индексы в ADm… канала рудера…

ВитГо

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

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

Сергей, я вопросик задал (rcopen.com/forum/f8/topic207267/1090) подскажите ответ ?

насколько я помню сообщения той ветки - тот кусок кода вы писали 😃

Aleksey_Gorelikov
ВитГо:

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

Для себя всегда комментирую код - и если кому будет интересно то могу выкладывать сюда результаты своих трудов…

Особенно будет интересно что скажет Алексей

Больше будет интересно, что скажет Сергей! 😃 Моего то там и нет ничего… Лишь дефайны переписаны, да инициализация дисплея… и чуть цыферки в таймере поменял 😉

ВитГо

Ну как не крути, Алексей, но если бы вы не запустили эту прошивку на Турниге\Юрке - я бы точно в код не полез…

Я как то попытался пару раз - но мне сложно все показалось…
А сегодня сел и почти весь coder.c откомментировал… 😃
Правда до этого я разобрался в работе первого Фокусовского кодера на мега16… (думал собирать его… но теперь не вижу смысла - буду Юрку свою модернизировать)

Кстати а почему не задействовали трехпозиционный выключатель ? ИМХО там ничего сложно… постараюсь сегодня добраться до него… - если сделаю чтобы на SW2_1 и SW2_2 шли правильные значения - режимы будут переключаться ?

Aleksey_Gorelikov

так режимы то переключаются. Просто второго трехпозиционного нет. Наверно сегодня со степаном сделаем его эмуляцию через крутилку 😃

ВитГо

лучше тогда сделать просто еще один пропорциональный канал…

ВитГо

Поправил ошибку на которую указал MSV с каналом рудера вместо канала газа…

Исправил процедуру инициализации дисплея (взял с немецкой прошивки) - теперь аппа включается с первого раза (в принципе она и раньше включалась всегда, только вот экран работал со второго раза)

результат калибровки сохраняется только в случае ее успешности… а при неуспешности при следующем старте снова будет запрошена…

кого то прошивка интересует или выкладывать не спрашивая ?

файл для прошивки narod.ru/disk/…/Coder-VitGo-2010-05-24.hex.html

вот исходники с моими комментариями (почти весь coder.c в комментариях)
narod.ru/disk/…/source-VitGo-2010-05-24.zip.html

Алексей, а давай вместо трехпозиционного канала прикрутим крутилку ?
как раз будет их 2 для FPVшников…

Ты сделаешь или мне потренироваться ? 😉

Aleksey_Gorelikov
ВитГо:

Алексей, а давай вместо трехпозиционного канала прикрутим крутилку ?
как раз будет их 2 для FPVшников…

Ты сделаешь или мне потренироваться ? 😉

Можм вместе. Но лично я тумблер оставлю! двух крутилок фпвшникам должно хватить

ВитГо

какой тумблер ?
на аппе 3 крутилки и тумблер Gear… вот его можно и оставить…

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

ведь так ?

p.s. и не придется ничего в аппе менять и перепаивать (я так свою уже закрыл на все болтики… до этого жила на 2х 😃))

Aleksey_Gorelikov

Да хоть кривыми, хоть чем. Я правда считаю, что и кривые на крутилках не нужны… И вобще на них никакой математики не надо, кроме расходов.

А тумблер поставлю вместо верхней. Хотя, опять таки, и крутилка как тумблер работать будет. Один “case” и все дела.

ВитГо

Алексей, а напомни мне по выключателям…
как было ?
2 - двух позиционника и 1 - трех позиционник ?

и еще вопрос а сколько примерно сейчас занимает таблица микшеров на 1 режим?

Aleksey_Gorelikov

Было где? У МСВ? У него 2 трехпозиционника (SW2 и режимы полета) и 2 двухпозиционника (SW1 и SW3) Ну и даблрейты там всякие и т.д.

Вячеслав_Михеев
Aleksey_Gorelikov:

Было где? У МСВ? У него 2 трехпозиционника (SW2 и режимы полета) и 2 двухпозиционника (SW1 и SW3) Ну и даблрейты там всякие и т.д.

Лично моё мнение место одной крутилки точно надо поставить 3 позиционный тумблер :Pя не понимаю зачем 2 крутилки:( я бы оставил 1 а место 2 поставил тумблера, кстати вот тут их можно купить www.zip-2002.ru/?z=grey&i=98&p=325&id=56918( это не реклама)

Catsw

Кстати, господа - а почему бы не задействовать тумблер в торце справа - т.е. который без фиксации? В принципе его или триггером, или даже физически заменить на тумблер с фиксацией. Или он как то используется, а эт я туплю???

Aleksey_Gorelikov

Ну я его зацепил как SW3 кажется, но место ему скорее на глушилке газа.(если для ДВСок. Для электричек глушилка с фиксацией предпочтительней).

Catsw
Aleksey_Gorelikov:

Ну я его зацепил как SW3 кажется, но место ему скорее на глушилке газа.(если для ДВСок. Для электричек глушилка с фиксацией предпочтительней).

Отличная идея с газом - а если “триггерный” сделать - одно нажатие - вкл, второе - выкл, индикация и так есть на дисплее! Тогда освободится левый тумблер!

Вячеслав_Михеев
Aleksey_Gorelikov:

Ну я его зацепил как SW3 кажется, но место ему скорее на глушилке газа.(если для ДВСок. Для электричек глушилка с фиксацией предпочтительней).

Лех ждёмс твоя аппу😒