Альтернативная прошивка к FlySky/Turnigy/I-Max/Eurle (Кодер Fokus-a - MSV)
Решил собрать в одну кучу материалы с разных веток форума. Надеюсь, администраторы не против.
Немного о прошивке Флайскаев и их ребрендов:
Собственно, проц не “закрыт”, обычная атмега 64. Для тех, кто знаком с атмегами никаких трудностей возникнуть не должно.
Это сообщение скорее для тех, кто не знаком, но хочет познакомиться.
-
Программатор. Их море. От примитивных из одного разъема и 5 проводов до… тоже примитивных на одной\двух микросхемах. Для “попробовать” - 5 проводов достаточно. Понравится - определитесь сами чего вам хочется. Собственно, по этому пункту - просите у гугла “программатор AVR” и выбирайте на вкус и цвет.
-
Подключаем программатор к аппаратуре.
Хотя, на схеме аппаратуры разъем указан, в действительности его нет. Придется подпаиваться прямо к контактам на плате. Благо это не сложно и проводов у нас всего 5.
- GND ( у меня - черный, на фотке плохо видно.)
- MISO (PDO) ( фиолетовый)
- MOSI (PDI) ( синий )
- CLK (Желтый)
- Reset (Белый)
Еще у меня видно красный - это +5, питание проца. (я аккумуляторы не вставлял, а взял питание от усб)
Готово. Можно подключить программатор к компу и включить передатчик
3а). Прога программатора.
Я пользуюсь avrprog из комплекта avr studio.
Запускаем, тычем кнопку advanced, нажимаем read. У нас считались лок-биты, фьюзы. Запоминаем как было. Может пригодится.
Ничего не меняем!!!
Жмем Close.
В основном окне - все понятно. Имя файла, и кнопки “read eprom”,“write eprom”,“read flash”,“write flash”.
read - считать, write - записать. Рекомендую считать и сохранить в файле ваш “родной” флешь и епром.
Зачем это надо? Если соберетесь эксперементировать с прошивками, то вполне возможно вам захочется потом вернуть все назад “как было”.
Вполне возможна ситуаций, когда при записи епрома микроконтроллером-сядет аккумулятор и содержимое епрома испортится. Имея копию вы сможете его восстановить сами. В противном случае - передатчик будет противно пищать, писать “eprom error” и ждать, когда вы его отправите в сервис.
(аналогично “BackUP error” в спектрумах DX7.
Последовательность действий: придумали имя файла, нажали реад епром. Дождались окончания процесса. Изменили имя файла, нажали реад флешь. Теперь у вас есть полная копия содержимого памяти микроконтроллера. Даже если вы вдруг сожгете проц - все что вам нужно для восстановления у вас есть. Надо будет лишь впаять новый микроконтроллер и нажать заветные кнопочки “врайт флешь”, “врайт епром”.
4а) Многие пользуются встроенным программатором из CodeVision. Приложу скриншоты из него. Смысл тот же самый, различия лишь в оформлении фьюзов.
Считываем фьюзы
Нажимаем “Yes”. Посмотрели? Запомнили? Снимаем галочку “program fuse” чтобы ничего не испортить.
Теперь немного о прошивках. Прошивки отличаются. Я заливал прошивки, выложенные ранее на форуме. Они работают только со своим епромом. Раз структура епрома менялась, значит китайцы что-то доробатывали. Возможно у многих появится желание попробовать прошивки поновее. Пробуйте, но на свой страх и риск. Дело в том, что обычно в епроме хранятся константы калибровки стиков. Если другая прошивка не заработает с вашим епромом - залейте ее родной епром. Но при этом обязательно проверьте калибровку стиков и работоспособность самой аппы при крайних положениях стиков и включенных микшерах. Возможно придется подгонять нейтрали стиков механически. Как откалибровать стики програмно или сбросить епром в “настройки по умолчанию” - я не знаю.
Помните, вы эксперементируете на свой страх и риск!
Чуток поковырялся с прошивкой MSV. Она показала личико.
Немного поправил внешний вид. Совсем чуточку.
Во вложении то, что получилось.
А получилось: программа “передатчик Fokus-а в ревизии MSV 1.9” с урезанным функционалом.
Отсутвует измеритель тока в антене, термометр, тахометр, трехпозиционный переключатель SW-2. Работает одна “крутилка” из имеющихся во флайскае трех. Увы, в варианте MSV в eeprom процессора влезло только 3 модели. Возможно я увеличу это кол-во до 7-8. Если не хотите ждать - поменяйте процессор на ATmega128 и перекомпилируйте проект. Будет 7 моделей.
Список “литературы”:
rcopen.com/forum/f8/topic28745
rcopen.com/forum/f8/topic152759
rcopen.com/forum/f4/topic139588
Хочу выразить благодарности всем участникам данных конференций. Отдельные благодарности Fokus-у, MSV, Vad64.
Как уже писал ранее - я не буду развивать и поддерживать этот проект. Рассматривайте его как отправную точку.
Я не несу ни какой ответвенности за последствия использования данного програмного обеспечения и “кривых ручек”.
Желаю всем удачи.
З.Ы. Я ничего не тестировал. Наткнетесь на баги - пишите, возможно поправлю…
Александр! Огромное спасибо за вашу работу! Собираюсь прошить свою Турнигу 9.
Подскажите программатор с данного ресурса avr.nikolaew.org/progr.htm, COM портовый подойдет?
И еще, можно ли закрепить DB 9 колодку на корпусе передатчике постоянно для смены прошивок, на работе микроконтроллера это не скажется?
Заранее спасибо.
Пойдет !
Только компорт должен быть настоящий на компе, а не эмулируемый (обычно на нотиках)
на счет колодки - не скажется…
осталось только для нее найти место и красиво закрепить…
Ну что, так никто и не попробовал? 😃 Один “баг” нашел. Точнее наткнулся на него. Исправлять еще не лез. (никому ж не нужно…)
нужно Алексей!
просто некогда было…
сегодня полетаю (в 19-00) на старой прошивке а потом попробую ту что ты выложил…
Нужно, обязательно нужно!
Мне вот железяка, стараниями нашей почты все никак не придет, чтоб нормально все опробовать, а не в протеусе…
баг не особо критичный. Не запоминаются настройки алармов батарейки. Но может есть еще…
Александр, очень нужна прошивка. Приступил к изготовлению программатора и сегодня наверное запаяю разъем на передатчик, будет он у меня как спутниковый тюнер - всегда готов к прошивке. К концу недели буду тестировать.
Та версия прошивки что на моей турниги - глючная, летать мешает. Глюк такой - при переключении миксера eleflap сбивается триммер руля высоты. Тестером еще не лазил может там банально напряжение прыгает на потенциометрах, но вашу прошивку залью обязательно.
это не прошивка, это глюки в контактах/резисторах.
Установил разъем 9 ти штырьковый от ком порта.
Место нашлось рядом с тренерским разъемом. Встал как родной.
Вот кому понравиться дарю ноу хау. Прижимаем разъём с обратной стороны и начинаем греть железяку паяльником одновременно надавливая. Железка разъема проходит насквозь до ушек - отверстие получается идеальное. Мощный паяльник ненужен достаточно 40 ватт.
2 lookeech бага проявляет себя только если в меню активирован данный микс. Если он не активен реакции на действия тумблера нет.
Спаял программатор на ком порт, не работает. Нет ответа микроконтроллера. Кто какими программаторами пользуется для прошивки LPT / COM ?
Какие установки компорта ставить по умолчанию 9600.
Памагите!😁
getchip.net/…/delaem-lpt-programmator-dlya-avr-mik…
в прошлом году когда начинал собрал такой
у меня заработал сразу, даже без резюков - напрямую
а сейчас шью FTDI кабелем в bitbang режиме
Насколько он чувствителен к длине провода?
У меня внутри передатчика 15 см шлейф от разьема.
Посмотрел исходники альтернативной прошивки с code.google.com/p/th9x
Многие вещи стали и понятнее 😃
Если Алексей не против - может кидать сюда найденные и придуманные наработки ?
Например вот конфигурация портов для меги в аппе:
взято отсюда -> code.google.com/p/th9x/source/browse/…/th9x.h
Под номером бита порта указано направление работы:
O - Оut (выход)
i - In (вход)
- - не подключено
//PORTA 7 6 5 4 3 2 1 0
// O O O O O O O O
// ------------------------ LCD_DAT -----------------------
//
//PORTB 7 6 5 4 3 2 1 0
// O i i i i i i O
// light KEY_LFT KEY_RGT KEY_UP KEY_DWN KEY_EXT KEY_MEN PPM
//
//PORTC 7 6 5 4 3 2 1 0
// - - O O O O O -
// NC NC LCD_E LCD_RNW LCD_A0 LCD_RES LCD_CS1 NC
//
//PORTD 7 6 5 4 3 2 1 0
// i i i i i i i i
// TRM_D_DWN _UP TRM_C_DWN _UP TRM_B_DWN _UP TRM_A_DWN _UP
//
//PORTE 7 6 5 4 3 2 1 0
// i i i i O i i i
// PPM_IN ID2 Trainer Gear Buzzer ElevDR AileDR THRCT
//
//PORTF 7 6 5 4 3 2 1 0
// ai ai ai ai ai ai ai ai
// ANA_ BAT PITT_TRM HOV_THR HOV_PIT STCK_LH STCK_RV STCK_LV STCK_RH
// rud thro elev aile
//PORTG 7 6 5 4 3 2 1 0
// - - - O i i i
// SIM_CTL ID1 NC RF_POW RuddDR
Если Алексей не против - может …
Я всегда только “ЗА”. Конечно, не против.
Например вот конфигурация портов для меги в аппе:
Я вроде бы сконфигурировал. 😃
З.Ы. Передатчик отдал хозяину. Так что теперь буду учавствовать лишь советами. На крайний случай - в протеусе посимулировать попробую.
Алексей, разбираюсь тут в lcd.cpp - и вижу один вызов который никак не могу найти 😦
for(char i=5; i!=0; i--){
uint8_t b = pgm_read_byte(q++); // вызов !
if(p<pmax) *p++ = inv ? ~b : b;
}
Умом понимаю что это просто чтение байта из памяти (причем судя по написанному в simpgmspace.h - чтение из программной памяти) - а вот как найти эту подпрограмму ?
p.s. я почти все что касается вывода на экран собрал в lcd.cpp чтобы можно было использовать в своих целях… а вот с этим вызовом чтото никак 😦
файла simpgspace.cpp на сайте нет 😦 спрятан или его может и не быть и достаточно только .h файла ?
p.s. не пиннайте сильно… просто для AVR не программировал поэтому хочу найти уже готовые подпрограммы которые потом можно будет логикой связывать
в simpgspace.h написано только
#define PROGMEM
#define pgm_read_byte(address_short) (*(uint8_t*)(address_short))
По синтаксису С, pgm_read_byte используется как наглядный макрос, т.е. в выше приведенном примере pgm_read_byte(q++) и (*(uint8_t*)(q++)) есть абсолютно одинаковые и взаимозаменяемые вещи.
Точно так же, через #define задаются псевдонимы констант, портов и пр.
ааа, понял !! то есть этого #define достаточно и его просто нужно включить в текст lcd.cpp ?
а нужно влключать только
#define pgm_read_byte(address_short) (*(uint8_t*)(address_short))
или все таки две строчки:
#define PROGMEM
#define pgm_read_byte(address_short) (*(uint8_t*)(address_short))
эхх… жду не дождусь окончания рабочего дня… чтобы дома загнать то что получилось в компилятор и проверить…
Достаточно одной строки.
#define PROGMEM видимо нужен для флагов компиляции и где-нибудь дальше по тексту есть {ifdef PROGMEM}
(Все это лишь по моему мнению, я исходники их пока не читал)