Замена микроконтроллера в пульте Turnigy 9x

zidot

Нашел записи у себя в блокноте по починке спаленного TGY 9x и решил сюда выложить. Пригодится кому нибудь. Прошу прощения что без фоток и детальной пошаговой инструкции. Дело было давненько и разбирать уже работающую аппаратуру не очень хочется. Да и не за чем.

Не так давно, в результате экспериментов с передатчиком дальней связи, уничтожил контроллер в пульте. Вышло все очень просто: передатчик (модуль сзади пульта) был OpenLRS и требовал перепрограммирования для чего был изъят из корпуса. Как выяснилось, вставляя его без корпуса обратно в пульт можно легко промахнутся и установить его не на те пины (сместить вверх например). В итоге полное напряжение трехсекционной батареи попадает на PPM-выход микропроцессора. Также сам передатчик получил переполюсовку и из регулятора напряжения пошел “волшебный дым”.

В пульте стоит микроконтроллер ATMega64A. Он не выдержал 12 вольт на входе и молча скончался. Примечательно что программатор его видел и с него удалось снять прошивку.

Для починки понадобился паяльный фен, новый микроконтроллер (лучше именно ATMega64A, а не ATMega128) и программатор. У микрухи дофига ножек и выпаивать его обычным паяльником дело мазохистское. С помощью горячего воздуха микросхема была выпаяна. Настоятельно рекомендую раздобыть каптоновый термоскотч и заклеить им все компоненты вокруг выпаиваемой микросхемы. Когда я разогрел мертвый контроллер и пытался его изъять, то случайно задел резисторы рядом и они тоже все сместились. Пришлось их аккуратно паяльничком обратно впаять. Не приклеивайте их изолентой!!! Она начнет гореть еще до того как расплавится припой на контроллере. Как аккуратно выпаять smd-контроллер посмотрите на ютюбе.

Новую микросхему я впаял легко обычным маленьким паяльником без всякого фена. Просто нагревал ножку за ножкой под увеличительным стеклом и все получилось за несколько минут.

После впаивания необходимо запрограммировать новый контроллер.
Я не буду описывать как надо подключать к плате программатор так как таких описаний в интернете море.

Есть один нюанс: Микроконтроллер имеет внутренние настройки (fuses). С заводскими настройками некоторые программаторы не видят его вообще. У меня USBASP 2.0 и у него есть специальная перемычка для понижения скорости программирования. Нужно перемычку эту поставить при первичной настройке контроллера.
Я потратил уйму времени пока с этим разобрался. Ни где не нашел нормального описания.
Во-первых нужно запрограммировать фузы (fuses) самого контроллера.
Я пользовался маленькой программкой Khazama AVR Programmer.
Она может считать текущие фузы и позволяет их редактировать и записывать обратно. Дело было давно и скринов нету, простите, только описание из моего блокнота:

  1. Считать текущий набор настроек кнопкой Read All
    2. Выбрать самую нижнюю из третьего списка частоту контроллера в разделе L Fuse
    3.Отключить ATMega103 Compatibility Mode убрав вторую галочку справа в нижней части окна в строке E-Fuse.
  2. Записать обратно настройки нажав Write All.

Это обязательно для всех новых контроллеров!!! Иначе прошивку конечно можно залить, но с частотой 1 мегагерц вместо 18 она очень смешно работает.

После настройки фузов можно снять перемычку с программатора и он должен нормально видеть контроллер.

К сожалению мне не удалось воспользоватся этой-же программой для дальнейшей прошивки, но это и не нудно, поскольку далее надо просто прочитать инструкцию на сайте с прошивкой, а она для avrdude.

Сначала я пробовал родную прошивку. Если родную заливаете, то обязательна запись eeprom после записи прошивки. Если er9x, то епром шить не обязательно. Он его сам при включении прописывает.

Контроллеры и фен покупал в Китае на али. Стоимость за пять контроллеров как за один в ближайшем магазине… Фен то же там же. Самый дешевый.

Кстати модуль передатчика тоже починен. Но в нем только регулятор напряжения понадобилось поменять. Очень дорогая деталь. Почти как весь модуль стоит. Пробовал заменить аналогом и в общем-то получилось, но пришлось вынести регулятор наружу и прикрутить к нему радиатор 40*40*10. Грелся как печка. Но в итоге все же поставил родную деталь.

Удачи. Спрашивайте если кому-то нужна дополнительная информация по этой теме. С удовольствием отвечу.

experimentator

Вообще говоря, в теме по er9x это уже обсуждалось. Возможно, не было такого краткого описания всего процесса в одном сообщении, но зато вариантов было гораздо больше, причем варианты обсуждались интереснее, чем замена штатного микроконтроллера на такой же.

Ну, например, вместо Atmega64 можно ставить Atmega128 или Atmega2561 - памяти будет больше:
Atmega64: 64K Flash, 2K EEPROM
Atmega128: 128K Flash, 4K EEPROM
Atmega2561: 256K Flash, 4K EEPROM

Настройки моделей хранятся в EEPROM, Сама прошивка - во Flash. Таким образом, 128-я мега обладает в два раза большим объемом памяти как для прошивки, так и для моделей. А 2561-я - еще в два раза большим объемом памяти для самой прошивки.

Естественно, это все имеет смысл лишь при использовании er9x или OpenTX. Штатная прошивка если и запустится на 128-й меге, все равно не сможет использовать больший объем памяти.

По поводу фьюзов - верно подмечено. Но можно воспользоваться “штатной” программой eePe и не разбираться с другим софтом. eePe и фьюзы сама устанавливать умеет, т.е. пользователю даже не обязательно разбираться в деталях. Опять же, программатор USBasp можно замедлить добавлением ключа “-B 10” в avrdude (которым, в частности, пользуется и eePe - так что ключ можно просто прописать в настройках). Не все программаторы это понимают (зависит от прошивки программатора), но и не все имеют джампер для замедления.

В общем, резюме получилось неплохое, но информации в основной ветке больше и она дает больше вариантов для достижения цели. Поэтому не уверен, что имеет смысл вести еще одну ветку на похожую тему.

P.S. А флуда - что там много, что тут будет полно… Так что это - не аргумент. 😃

zidot

122 страницы в теме. Жесть. Пока прочтешь и найдешь нужное, легко получишь перманентное повреждение мозга. Я пока чинил, три недели вчитывался в аналогичные темы на разных языках. Если бы я нашел аналогичное описание на одной страничке, то управился бы за пару-тройку часов. После удачного ремонта записал все в блокнотик пока помнил. “Умельцев”, как я, запаливших пульт по криворукости море. Готовые-бы рецепты в отдельную тему выкладывать. А чтобы тут флуд не развели эту тему надо просто закрыть. Если кто-то захочет что-то спросить то в личку напишет.

p.s.
…кстати eePe было первым что я пробовал и по каким-то причинам ничего с ним не вышло. сам он не понимает что фузы не верные, а из команд по фузам там только “заводсткие настройки” и “защить eeprom”. ну или я, кривоглазый, чего-то не нашел ))
…тип контроллера не стал менять потому что не было желания еще искать (компилить) другие прошивки под не стандартный контроллер. Меня и родная вполне устраивала. Хотя в итоге я поставил er9x. Она шекарна. )
…и я полностью согласен что способов все это сделать есть еще сотня-другая.

ну вот. сам и начал флудить…

experimentator
zidot:

из команд по фузам там только “заводсткие настройки” и “защить eeprom”

Именно! Опция “Заводские настройки” в данном случае приводит фьюзы к тому состоянию, в котором Turnigy приходит с завода. При этом с каждым обновлением прошивки содержимое EEPROM затирается. Опция “защитить EEPROM” включает в себя необходимые “заводские” настройки и еще устанавливает бит, при котором содержимое EEPROM не стирается при перепрошивке. Тут каждый может выбрать тот вариант, который ему больше нравится. При этом, в зависимости от типа MCU (микроконтроллера), установленного в настройках eePe, правильные значения устанавливаемых фьюзов для каждого MCU выбираются автоматически.

termaltake

а количественно при смене на мега 128 сколько моделей вбить мижно будет?
и стоит ли вообще замарачиваться перепайкой?

Vladimir_Dubyk
termaltake:

а количественно при смене на мега 128 сколько моделей вбить мижно будет?
и стоит ли вообще замарачиваться перепайкой?

Количество слотов всё также 16, но больше свободной памяти, то есть можно сохранять более сложные в настройках модели с бОльшим количеством полетных режимов и т.д.

3 months later
zidot

На Хоббикинге появилась в продаже плата для 9X в виде запчасти:
hobbyking.com/…/__78696__Turnigy_9X_Replacement_Mo…

Если желания паять нет, то можно просто купить замену. Цена на момент публикации около 14$ (деталь + доставка). Это скорее всего дешевле чем ремонт перепайкой, но не так спортивно ))

9 days later
romushock
zidot:

На Хоббикинге появилась в продаже плата для 9X в виде запчасти:
hobbyking.com/…/__78696__Turnigy_9X_Replacement_Mo…

Если желания паять нет, то можно просто купить замену. Цена на момент публикации около 14$ (деталь + доставка). Это скорее всего дешевле чем ремонт перепайкой, но не так спортивно ))

Пришли вчерась, стоит АТмега 128. А про спорт - после перепайки трёх процессоров с удовольствием купил готовое. Сильно экономит время и предотвращает анальные кровотечения…

zidot
romushock:

Пришли вчерась, стоит АТмега 128. А про спорт - после перепайки трёх процессоров с удовольствием купил готовое. Сильно экономит время и предотвращает анальные кровотечения…

этт точно

2 months later
termaltake

захотел все же перепаять на другой чип, atmega128a-ua подойдет?

1 month later
termaltake

народ помогите! короче перепаял я мк. теперь как обычно надо подключить к программатору и выставить фьюзы я так понял? а какие фьюзы выставлять для ATmega128A-AU? или открыть eePe там нажать считать фьюзы? в общем детально расскажите или отправьте где почитать, желательно с картинками…

experimentator

Можно просто выбрать в EEPE “Burn --> Set fuses to protect EEPROM” (или Reset fuses to factory default).

Предварительно в Burn --> Configure надо выбрать тип установленного MCU = m128

termaltake

вродь перешился нормально, прошивка для атмега128 работает нормально памяти для моделей прибавилось. теперь буду настраивать.
правда стандарт не понравился меню глупое. а вот которая с поддержкой телеметрии от фриски, там и меню нормальное. версию поставил 819

experimentator

Шить следовало er9x-128.hex. Для m128 есть только одна версия прошивки, наличие или отсутствие телеметрии задается через меню.