Однажды вышла из строя Mega328P-AU на MultiWii 328P с поддержкой FTDI и DSM2. Ну что-ж надо менять, не покупать же из-за этого целый контроллер!

Оригинальная статья здесь. Статью пришлось несколько переработать под эту плату, но тем не менее большое спасибо автору за проделанную работу
http://gokerze.blogspot.ru/2012/12/bootloader-atmega328p-pu-atmega-328-lpt.html

Принцип простой: для начала надо во флеш память контроллёра загрузить программу-загрузчик.

Делать это будем через LPT порт
Для этого вам понадобятся четыре вещи:
1. Mega328P-AU
2. LPT программатор
3. Программное обеспечение поддерживающее Mega328P-AU
4. Прошивка с загрузчиком. Файл прошивки и Fuses взяты из новой платы и отличаются от тех, что в оригинальной статье. Это надо помнить.

Вот сама Mega328P-AU в корпусе TQFP32

 

1)   Метод описанный в посте так же подойдет для банальной заливки прошивок в микросхему. Если у вас есть подходящий hex-файл с программой – читайте и заливайте.
         Для начала аккуратно выпаиваем неисправный чип и впаиваем новый, не тронутый даже мухами. Сделать это лучше всего паяльной станцией, но если у Вас с руками все в порядке, то можно и обычным маломощным паяльником с острым жалом. Обратите внимание как был установлен чип, т.е. где первая нога. На плате есть метка в виде маааленького круглишка, она должна совпасть с точкой на чипе (см. стрелку на рисунке). Если вдруг самим страшно все это делать, обратитесь к тому, кто умеет. После пайки не забудьте очистить все от флюса и просмотреть внимательно в лупу качество пайки каждого контакта !!!!!!!!.
          Далее необходимо впаять в плату разъем ISP, именно к нему мы будем подключать наш программатор и через него вливать загрузчик. Говоря простым языком, загрузчик - эта такая маленькая программка, которая активизирует работу платы через USB порт. Вот он разъём, обведён на рисунке:

 

А вот его распиновка:

 

2) Теперь соберем LPT программатор
В отличие от оригинальной статьи я использовал вот такую схему программатора.
Слева на схеме разъём DBR-25F, подключается в LPT порт, справа XS2 ISP, этот к нашей плате.

 

В этой схеме есть буфер на 74hc244. Поскольку я не рискую подключать что-либо напрямую к LPT. Но можно воспользоваться и той схемой, что есть в оригинальной статье.

3) Программное обеспечение поддерживающее mega328p-au и программатор
3.1) Скачивание
1) Первым делом устанавливаем Java машину из архива в конце статьи или с официального сайт http://java.com/ru/. (p.s. на win2000 не хочет вставать)
2) Вторым делом WinAVR с sourceforge.net или тоже из архива .
3) Третьим делом AVR8 Burn-O-Mat с brischalle.de или опять же из архива.
4) Четвертым делом драйвер для LPT порта – giveio с web.mit.edu или из архива.
5) Прошивка под эту плату mwc_328p_dsm2_ftdi.hex есть в архиве

3.2) Установка
1) Java машину устанавливаем как ей самой хочется.
2) WinAVR устанавливаем в корень и даем папке лаконичное название:

 

3) AVR8 Burn-O-Mat устанавливаем как ему хочется.

4)    Папку giveio кладем в корень (C:\giveio). Открываем терминал и вводим следующие команды:
1. cd C:\giveio – переходим в папку с драйвером LPT
2. ginstall.bat – запускаем батник устанавливающий драйвер LPT

 

У вас ответы системы будут выглядеть несколько иначе.

4) Прошивка загрузчиком
Мы уже собрали программатор и скачали/установили всё необходимое. Пора запустить и настроить AVR8 Burn-O-Mat, им мы и будем прошивать нашу mega328p-au

1) Подключаем программатор к LPT и запускаем AVR8 Burn-O-Mat
2) Выбираем тип контроллера, указываем путь к файлу mwc_328p_dsm2_ftdi.hex и его тип.

 

2) Открываем меню Settings -> AVRDUDE, проверяем верность путей к WinAVR, выбираем программатор STK200 и порт LPT1 (или тот, к которому вы подключили программатор, если у вас много LPT портов), применяем изменения и закрываем окно.

 

3) Нажимаем кнопку Write, глядим на появляющиеся надписи и ждем… И если Вы увидели окно с надписью Flash Successfully Written значит все идёт по плану.

 

     4) Необходимо установить фьюзы (fuses) в соответствии с нашим загрузчиком и контроллером. Обратите внимание, значения Fuses для нашей платы отличаются от Fuses оригинальной статьи.
Итак: Кликаем по кнопке Fuses, выбираем вкладку Fuse Hex Editor, устанавливаем фьюзы (efuse = 05, hfuse =DA, lfuse = FF), обязательно нажимаем кнопку Apply и жмем кнопку write fuses. Должно быть Fuses Successfully Written!

 

Если всё прошло гладко, то, после всех этих манипуляций, можно смело загонять в плату скетчи (sketch) уже обычным способом через USB. Должно работать. Если не работает – опишите вашу проблему в комментариях.

Архив :   (Prog.rar)