Альтернативная прошивка к FlySky/Turnigy/I-Max/Eurle (Кодер Fokus-a - MSV)
Начал разбираться с адаптированной прошивкой которую выложил Алексей в первом посте и потихонечку сделаю рефакторинг кода (это ни чьих прав не нарушает ?)
Для себя всегда комментирую код - и если кому будет интересно то могу выкладывать сюда результаты своих трудов…
Особенно будет интересно что скажет Алексей (чтобы мои комментарии были правильные, а может где то в код будет закладываться функциональность на будущее - чтобы я не переписал)
Кстати, Алексей, а зачем в процедуре калибровки сначала сохраняются калибровочные значения в EEPROM и только потом проверяются на верность ?
может быть поместить сохранение калибровочных значений после проверки ? - чтобы не перезаписывать EEPROM понапрасну… (хотя калибровка вроде как не самое часто выполняемое действие, но тем не менее)
Тайного смысла в этом нет ?
Если прошивка с 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;
На истину в последней инстанции не претендую (на работе я сейчас, и компилятора чтобы проверить нет под рукой) - но здесь нет ни умножения, ни деления… хотя в принципе быстродействие нам и не важно… но для меня конструкция была бы более понятной…
Тайного смысла в этом нет ?
Процедура проверки валидности калибровки вообщем-то вспомогательная функция, намекающая пользователю что надо-бы разобраться с его железом… Но возможность работать с теми значения калибровки, которые у него получились- его право… Мое дело ему напоминать об этом при каждом включении, а он типа вправе отказываться от повторных калибровок клавишей лево. Вообщем непринципиальный момент…
//–
“Мудреные вычисления” всего лишь решение пропорции для определения 10% от (ADmax[3]-ADmin[3]) - 100%. 😃
А вот используются индексы в ADm… канала рудера…
ну это я понял (про мудреные вычисления)… просто потом идет целочисленное деление… - и тут я без листочка с ручкой уже не смог проверить как оно будет работать 😦(
Про калибровку понял… тогда оставлю как есть…
Сергей, я вопросик задал (rcopen.com/forum/f8/topic207267/1090) подскажите ответ ?
насколько я помню сообщения той ветки - тот кусок кода вы писали 😃
Начал разбираться с адаптированной прошивкой которую выложил Алексей в первом посте и потихонечку сделаю рефакторинг кода (это ни чьих прав не нарушает ?)
Для себя всегда комментирую код - и если кому будет интересно то могу выкладывать сюда результаты своих трудов…
Особенно будет интересно что скажет Алексей
Больше будет интересно, что скажет Сергей! 😃 Моего то там и нет ничего… Лишь дефайны переписаны, да инициализация дисплея… и чуть цыферки в таймере поменял 😉
Ну как не крути, Алексей, но если бы вы не запустили эту прошивку на Турниге\Юрке - я бы точно в код не полез…
Я как то попытался пару раз - но мне сложно все показалось…
А сегодня сел и почти весь coder.c откомментировал… 😃
Правда до этого я разобрался в работе первого Фокусовского кодера на мега16… (думал собирать его… но теперь не вижу смысла - буду Юрку свою модернизировать)
Кстати а почему не задействовали трехпозиционный выключатель ? ИМХО там ничего сложно… постараюсь сегодня добраться до него… - если сделаю чтобы на SW2_1 и SW2_2 шли правильные значения - режимы будут переключаться ?
так режимы то переключаются. Просто второго трехпозиционного нет. Наверно сегодня со степаном сделаем его эмуляцию через крутилку 😃
лучше тогда сделать просто еще один пропорциональный канал…
Поправил ошибку на которую указал 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шников…
Ты сделаешь или мне потренироваться ? 😉
Алексей, а давай вместо трехпозиционного канала прикрутим крутилку ?
как раз будет их 2 для FPVшников…Ты сделаешь или мне потренироваться ? 😉
Можм вместе. Но лично я тумблер оставлю! двух крутилок фпвшникам должно хватить
какой тумблер ?
на аппе 3 крутилки и тумблер Gear… вот его можно и оставить…
кстати а трехпозиционник из крутилки легко делается кривыми !!!
ведь так ?
p.s. и не придется ничего в аппе менять и перепаивать (я так свою уже закрыл на все болтики… до этого жила на 2х 😃))
Да хоть кривыми, хоть чем. Я правда считаю, что и кривые на крутилках не нужны… И вобще на них никакой математики не надо, кроме расходов.
А тумблер поставлю вместо верхней. Хотя, опять таки, и крутилка как тумблер работать будет. Один “case” и все дела.
Алексей, а напомни мне по выключателям…
как было ?
2 - двух позиционника и 1 - трех позиционник ?
и еще вопрос а сколько примерно сейчас занимает таблица микшеров на 1 режим?
Было где? У МСВ? У него 2 трехпозиционника (SW2 и режимы полета) и 2 двухпозиционника (SW1 и SW3) Ну и даблрейты там всякие и т.д.
Было где? У МСВ? У него 2 трехпозиционника (SW2 и режимы полета) и 2 двухпозиционника (SW1 и SW3) Ну и даблрейты там всякие и т.д.
Лично моё мнение место одной крутилки точно надо поставить 3 позиционный тумблер :Pя не понимаю зачем 2 крутилки:( я бы оставил 1 а место 2 поставил тумблера, кстати вот тут их можно купить www.zip-2002.ru/?z=grey&i=98&p=325&id=56918( это не реклама)
Кстати, господа - а почему бы не задействовать тумблер в торце справа - т.е. который без фиксации? В принципе его или триггером, или даже физически заменить на тумблер с фиксацией. Или он как то используется, а эт я туплю???
Ну я его зацепил как SW3 кажется, но место ему скорее на глушилке газа.(если для ДВСок. Для электричек глушилка с фиксацией предпочтительней).
Ну я его зацепил как SW3 кажется, но место ему скорее на глушилке газа.(если для ДВСок. Для электричек глушилка с фиксацией предпочтительней).
Отличная идея с газом - а если “триггерный” сделать - одно нажатие - вкл, второе - выкл, индикация и так есть на дисплее! Тогда освободится левый тумблер!
Ну я его зацепил как SW3 кажется, но место ему скорее на глушилке газа.(если для ДВСок. Для электричек глушилка с фиксацией предпочтительней).
Лех ждёмс твоя аппу😒
Она уже с Ярославского вокзала сегодня уехала… Осталось чуть-чуть.
Ребят, чую скоро побежим в магазин вот за этим www.chip-dip.ru/product1/35636081.aspx