Залить bootloader в ATmega328P-AU TQFP

mephy
Offline
Зарегистрирован: 16.01.2016

Добрый день.

Помогите разобраться.

Есть: Камень ATmega328P-AU (SMD), плата разводки по пинам, USBasp 3.3v (https://ru.aliexpress.com/item/USBasp-USB-ISP-3-3V-5V-AVR-Programmer-USB-ATMEGA8-ATMEGA128-New-10PIN-Wire-Support/2036402518.html)

Надо залить туда модифицированный optiboot (есть уже готовый архив с батником, осталось запустить =D)

avrdude -Cavrdude.conf -patmega328p -cusbasp -Pusb -e -Ulock:w:0x3F:m -Uefuse:w:0x05:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xFF:m
avrdude -Cavrdude.conf -patmega328p -cusbasp -Pusb -Uflash:w:optiboot_atmega328.hex:i -Ulock:w:0x0F:m

Но никак не могу найти схему подключения именно для моей атмеги.

Вижу: MOSI, MISO, SCK.

Что непонятно:

1) RST не нашел в пинах

2) VCC/GND аж две штуки, к какой подключать?

3) Нужен ли кварцевый резонатор? Какой? Куда его подключать?

4) Нужно ли еще что? (подтягивающие резисторы?)

5) подключу все, воткну USB в компьютер и запускаю батник? Все? (ну с учетом драйверов usbasp).

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

mephy пишет:

Что непонятно:

1) RST не нашел в пинах

Аббревиатура RST расшифровывается как RESET.

mephy пишет:

2) VCC/GND аж две штуки, к какой подключать?

Вообще, все линии питания МК должны быть задействованы в схеме. Но для прошивки, возможно, достаточно только одного VCC и GND. Например, когда я прошивал атмегу в DIP-корпусе, то AVCC (питание аналоговой части) и GND рядом не подключал. Только VCC и GND на противиположной стороне чипа. Но у чипа в корпусе TQFP с одной стороны аж по два VCC и GND. Честно сказать, я не уверен, нужно ли их все подключать для прошивки.

mephy пишет:

3) Нужен ли кварцевый резонатор? Какой? Куда его подключать?

Нет, новый МК с завода настроен на внутренний осциллятор. Но если надумаете ставить, то кварц подкючается к пинам XTAL.

mephy пишет:

4) Нужно ли еще что? (подтягивающие резисторы?)

Не обязательно.

mephy пишет:

5) подключу все, воткну USB в компьютер и запускаю батник? Все? (ну с учетом драйверов usbasp).

Ну кроме батника и сама утилита Avrdude нужна.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Мой совет:

1.  Купите USBASP. 2 штуки.  Очень нужная в хозяйстве вещь.

2.  Купите паяльную станцию с феном.  Ещё более нужная в хозяйстве вещь.

3.  Прошивайте одним программатором другой ( там перемычка selfprog есть )  "сдувая" процессоры феном.

mephy
Offline
Зарегистрирован: 16.01.2016

trembo пишет:

Мой совет:

1.  Купите USBASP. 2 штуки.  Очень нужная в хозяйстве вещь.

2.  Купите паяльную станцию с феном.  Ещё более нужная в хозяйстве вещь.

3.  Прошивайте одним программатором другой ( там перемычка selfprog есть )  "сдувая" процессоры феном.

Да мне 2 камня прошить и все :) Так то socket tool есть, еще удобнее. 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Да хоть и один....

USBASP - это готовая макетка под пайку для программирования   ;)

Впаиваете и шьёте, выпаиваете,  впаиваете и шьёте......

А если аккуратно почистить то место откуда выпаяли-
то можно, прижимая канцелярской прищепкой,  шить процы  не припаивая.....

mephy
Offline
Зарегистрирован: 16.01.2016

Прошу прощения за глупый вопрос :-)

Можно ли прошить бутлоадер с FTDI232?

USBAsp едет и едет, а ftdi давно лежит.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

mephy пишет:
Прошу прощения за глупый вопрос :-) Можно ли прошить бутлоадер с FTDI232? USBAsp едет и едет, а ftdi давно лежит.

нет - я запретил.

mephy
Offline
Зарегистрирован: 16.01.2016

Все воткнул, но программатор чип не видит. 

Куда стоит посмотреть? :)

Пины все проверил много раз.  VCC/GND пробовал подключать и по отдельности (3+4, 5+6, 18+21) так и все вместе. Выходы прозвонил.

Сейчас подумал - запускаю на 3.3В, может надо 5? =D По даташиту должен работать, но вдруг что :-)

 

avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude.exe: error: programm enable: target doesn't answer. 1 
avrdude.exe: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.

Если ставлю -F (пропустить проверки), считывает код чипа, получает 0x000000.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Все выводы VCC/GND нужно подключать. На USBasp'е поставь джампер JP3 для уменьшения частоты SCK, т.к. с завода МК настроен на маленькую тактовую частоту - 1МГц.

mephy
Offline
Зарегистрирован: 16.01.2016

Китай же, не уверен что JP3 найду (маркировки точно нет).

Тут скорее вариант к XTAL подключить. Вопрос какой кварц =)

Т.е. с вольтажом нормально, при 3.3 должен работать?

 

 

diger67
Offline
Зарегистрирован: 25.07.2015

Если вдруг фьюзы установлены для работы с внешним генератором(кварцем) можно попробовать подключить на XTAL1 програмируемого камня тактовую частоту от любого источника. Проверено, даже если выставлена работа с внешним кварцем, камень запускается. Сам прошиваю такие камни и никаких проблем не возникало.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

mephy пишет:

Китай же, не уверен что JP3 найду (маркировки точно нет).

У меня такой (JP3 сверху слева возле USB разъема, его распаять надо):

mephy пишет:

Тут скорее вариант к XTAL подключить. Вопрос какой кварц =)

Если в этой ATmega328P заводские фьюзы, то никакой XTAL не поможет. Настроено на внутренний осциллятор 8МГц с включенным делителем на 8 - итого 1МГц. Но кто его знает, что там у китайцев, может вообще б/у. Как вариант, можно конечно с XTAL попробовать. Кварц я думаю любой 4 - 20 МГц (более 10МГц желательно питание 5В).

Но если там всё же внутренний 1МГц, то без понижения частоты SCK на программаторе точно не заработает, проверено.

mephy пишет:

Т.е. с вольтажом нормально, при 3.3 должен работать?

Нормально. Из даташита:

0 - 4MHz @ 1.8 - 5.5V
0 - 10MHz @ 2.7 - 5.5V
0 - 20MHz @ 4.5 - 5.5V

Есть же ардуины трёхвольтовые, правда там кварц на 8МГц ставят.

mephy
Offline
Зарегистрирован: 16.01.2016

Спасибо. 

Вот мой http://savepic.ru/11943645.jpg

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

-----

Угу вариант 2.

Похоже мой только если перепрошить заработает на пониженной частоте. Соответсвенно нужен другой программатор :)

Но проще купить как у Вас с JP3. Либо может поможет кто с форума (написал в другом разделе).

 

diger67
Offline
Зарегистрирован: 25.07.2015

Если у вас есть arduino, то какие проблемы? Убеждаемся что схема вашего програматора пригодна для прошивки с пониженной частотой. Делаем из arduino програматор. Прошиваем USBASP. Прошиваем целевые камни бутом.

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

mephy пишет:

Ничего такого не видно

переверни, сфотографируй и опубликуй фото

mephy
Offline
Зарегистрирован: 16.01.2016

Клапауций 234, фото снизу - http://savepic.ru/11956804.jpg

diger67,  Nano лежит. Хм, попробую разобраться как прошить usbasp с arduino nano...

 

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

mephy пишет:

Клапауций 234, фото снизу - http://savepic.ru/11956804.jpg

и, что это у нас? - прозвони, вкуда оно идёт.

mephy
Offline
Зарегистрирован: 16.01.2016

Туда ноги камня выведены -  12 и 14 пин 

14 - PB2 SS (SPI Bus Master Slave select) OC1B (Timer/Counter1 Output Compare Match B Output)  

12 - PB0 ICP1 (Timer/Counter1 Input Capture Pin)

Что-то похожее.

 

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

 

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

mephy пишет:

А куда должен выходить JP3? (гуглю, но пока не нашел).

https://www.google.com/search?q=usbasp

mephy
Offline
Зарегистрирован: 16.01.2016

PC2/GND похоже. Сейчас поищу на плате.

Нет таких. Значит попробую просто соединить pc2/gnd. Надеюсь сработает..

Не помогло :( Хотя припаял вроде аккуратно и прозвонил-проверил. По прежнему пишет про SCK.

Значит либо шить либо нормальный USBasp v2 заказать. И похоже второе проще.

mephy
Offline
Зарегистрирован: 16.01.2016

Итак, новый виток :)

Взял Arduino nano, залил ISP прошивку. Подключил по гайду:

Arduino D13 to ATmega pin 17 (SCK) 
Arduino D12 to ATmega pin 16 (MISO) 
Arduino D11 to ATmega pin 15 (MOSI)
Arduino D10 to Atmega pin 29 (RESET)
VCC to VCC - pin 4, 6, 18 (т.е. 1 к 3)
GND to GND - pin 3,5,21

Между VCC и RST на ардуино впаял 10uF кондер иначе была ошибка:

stk500_getsync(): not in sync: resp=0x15

Кварц не впаивал (16мгц нет, правда есть 12мгц из программатора)

Теперь.. пытаюсь считать чип 328р

C:\bootloaderv2>avrdude -c avrisp -P COM5 -b 19200 -p atmega328p -v -F

avrdude: Version 5.11, compiled on Sep  2 2011 at 19:38:36
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\bootloaderv2\avrdude.conf"

         Using Port                    : COM5
         Using Programmer              : avrisp
         Overriding Baud Rate          : 19200
         AVR Part                      : ATMEGA328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page
      Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
W   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
-- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  36
00 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  45
00 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  45
00 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  45
00 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  45
00 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  45
00 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0
 0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0
 0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel AVR ISP
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.10s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
avrdude: Expected signature for ATMEGA328P is 1E 95 0F
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0

avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: safemode: Fuses OK

avrdude done.  Thank you.

Психанул, попробовал зашить бутлоадер, но не вышло...

C:\bootloaderv2>avrdude -c avrisp -P COM5 -b 19200 -p atmega328p -U flash:w:opti
boot_atmega328.hex:i -F -Ulock:w:0x0F:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.08s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
avrdude: Expected signature for ATMEGA328P is 1E 95 0F
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed

         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "optiboot_atmega328.hex"
avrdude: writing flash (32768 bytes):

Writing | ################################################## | 100% 2.71s

avrdude: 32768 bytes of flash written
avrdude: verifying flash memory against optiboot_atmega328.hex:
avrdude: load data flash data from input file optiboot_atmega328.hex:
avrdude: input file optiboot_atmega328.hex contains 32768 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 22.25s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0xff != 0x00
avrdude: verification error; content mismatch

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

Что не так?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

mephy пишет:

Между VCC и RST на ардуино впаял 10uF кондер иначе была ошибка:

Почему я много лет шью мегу 328, и никакой конденсатор на ресет не требовался?

mephy пишет:

Кварц не впаивал (16мгц нет, правда есть 12мгц из программатора)

А вот это напрасно. Кварц лучше припаять.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

dimax пишет:

mephy пишет:

Между VCC и RST на ардуино впаял 10uF кондер иначе была ошибка:

Почему я много лет шью мегу 328, и никакой конденсатор на ресет не требовался?

mephy пишет:

Кварц не впаивал (16мгц нет, правда есть 12мгц из программатора)

А вот это напрасно. Кварц лучше припаять.

Формировать ресет можно конечно и RC цепью, но это неправильное решение, для этих целей есть копеешная микросхема (трёхножка) ))),

mephy
Offline
Зарегистрирован: 16.01.2016

dimax пишет:

Почему я много лет шью мегу 328, и никакой конденсатор на ресет не требовался?

Думаю у Вас ардуино не за 3$ или просто другая версия. Много где читал, что на китайских версиях для таких прошивок впаивают подтягивающий резистор или конденсатор.

dimax пишет:

А вот это напрасно. Кварц лучше припаять.

Значит думаете проблема в кварце... Ладно, поищу.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

mephy пишет:

Что не так?

1) никакого конденсатора не надо

2) если МК был прошит для работы с кварцем, то как бы вы не трудились, без кварца вы не перепрошьете

 

mephy
Offline
Зарегистрирован: 16.01.2016

del

 

mephy
Offline
Зарегистрирован: 16.01.2016

Valera19701 пишет:

1) никакого конденсатора не надо

2) если МК был прошит для работы с кварцем, то как бы вы не трудились, без кварца вы не перепрошьете

Без конденсатора \ резистора ошибка 

avrdude: 
stk500_getsync(): not in sync: resp=0x15

 

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

когда установите кварц, ошибка исчезнет

два крайних на МК, центральный на землю

mephy
Offline
Зарегистрирован: 16.01.2016

Спасибо!

Сейчас попробую... после земли конденсатор надо?

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

с тем кварцем что был на рисунке с тремя выводами не нужны конденсаторы, они внутри, т. е. средний вывод прямо на землю

mephy
Offline
Зарегистрирован: 16.01.2016

Valera19701 пишет:

с тем кварцем что был на рисунке с тремя выводами не нужны конденсаторы, они внутри, т. е. средний вывод прямо на землю

Впаял,  тоже самое :( device signature = 0x000000 и все как в моем посте выше.. Может у меня чип бракованный, а я заморачиваюсь столько..

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

mephy пишет:

Впаял,  тоже самое :( device signature = 0x000000 и все как в моем посте выше.. Может у меня чип бракованный, а я заморачиваюсь столько..

смотрите сопли, или фьюзы уже прошили неправильные, вот это может поможет

http://radioaktiv.ru/shems/digital/prog/466-atmega-fusebit-doctor-vosstanavlivaem-fyuzy-mikrokontrollerov.html

diger67
Offline
Зарегистрирован: 25.07.2015

Задающий генератор может работать в трех режимах внутренний RC резонатор, внешний резонатор, тактирование внешней частотой. Так же зависит от частоты, надо помнить что частота генераора должна быть в 4 раза выше частоты програмирования. Решение проблемы, надо иметь возможность создать все возможные режимы. Я не помню, в дудке есть поддежка програматора из ардуино. Если да, то лучше скачать дудку с графичкской оболочкой, так думаю будет проще рулить процессом.

uragan
Offline
Зарегистрирован: 23.02.2015

Разве на прошиваемом не нужен резистор 10 кОм между resetом и +5 v?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

uragan, насколько я помню подтяжка ресета в документации упоминалась как желательная, но не как обязательная.

mephy, вообще не понятно что вы там шьёте. То у вас камень tqfp и програматор USBAsp, то программатор вдруг уже нано и мк в дипе. Куда МК у вас припаян -не понятно, хорошо ли припаян -не понятно. Как вы в реальности подсоединили -не понятно. Успели ли вы уже залочить ему фузы -тоже не понятно. Если хотите помощи -хотя бы сфотографируйте что вы там наподключали. Не мешает проверить программатор на чём-то ещё. Тем же USBAsp прочесть через ISP любую ардуину. Может вы МК давно убили, и пытаетесь работать с трупом)

Старый
Offline
Зарегистрирован: 09.10.2016

У меня создается ощущение , что ТП нас всех тролит. Нет , что бы все сделать как положено - он сначала делает как ему хочется. А потом задает вопросы"почему?". ТП! Вы часом по началу плюс и минус питания наоборот не ставили? Какая разница- напруга идет и так , и наоборот. 

Прошивал загрузчики и в 328, в 644 , в 32 , в 128  в ДИП корпусе , и в SMD(TQFP или как там правильно). Атмеги были из разных источников(Из Китая , из местных магазинов , с рынка) - проблем не было( если не считать ньюансы с сигнатурами). На форуме куча материалов на эту тему . А в сети вообще полно... Но нужно читать...

mephy
Offline
Зарегистрирован: 16.01.2016

Ну собственно, дело в том, что читаю отовсюду и пробую разное. Поэтому сумятица. Внесу ясность :-)

Скажите, что конкретно я делаю наоборот?

У меня atmega 328p au SMD (и только он, схема с дип корпусом - т.к. с смд чипом не нашел, а разницы там немного (пины)).

 

1) Изначально пытался шить с USBasp. Но там оказалась старая прошивка (комментарии на али подтвердили) + нет джампера JP3. Хотя я пробовал замыкать ножки самого чипа чтобы сменить частоту, но непомогло.

2) Заказал нормальные USBasp, пока едут ковырялся со старым. Пробовал прошить его с наной ISP. Но похоже его я точно убил - вроде прошился, но драйвер определять его перестал. Тут тоже фейл :(

3) Сейчас пытаюсь прошить arduino nano ISP -> atmega smd. Фото ниже (пайка фиговая, да). 3 Vcc (в т.ч. AVCC) с читпа объединены в один и подключены к vcc наны. C землей также - 3 провода + еще один с smd кварца 16мгц. Какой у меня кварц писал выше. Ну, остальные проводки 1 к 1 подключение. У меня сейчас две версии - плохие проводки (там 1 волосок) либо фьюзы на чипе. Скорее на проводки.. будет время на неделе - сменю.  

Провода еще соединены между собой (слева ардуино, справа макетка)

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

mephy, отсоедините весь этот кошмар. Возьмите программатор USBAsp, подключите его к Nano. Попробуйте считать прошивку. Запомните скорость с которой считывается прошивка. Запаяйте перемычку вместо отсутвующего джампера jp3, (по схеме нетрудно найти) Опять считайте прошивку  Нано, убедитесь, что скорость стала существенно меньше. Подпаяйте по-человечески платку-переходник  с мегой328. Кварц припаять ещё более короткими проводами, особенно землю.  Если не читается -значит либо фузы залочены либо МК сдох.

 

mralvad
Offline
Зарегистрирован: 22.11.2016

Хочу уйти от грамоздокого корпуса в проектах в пользу ATmega328p-au, прочитал много по этому поводу, но все же есть вопросы:

1 - если прошить bootloader в ATmega то она будет определяться как UNO и будет только 6 аналоговых портов?

2 - если заливать bootloader через USBasp при уже припаяной Atmega на плату проекта, в которм уже используются порты 11, 12, 13, то есть они подтянуты к массе или к питанию например, смогу ли я заливать скетчи и мониторить порт через этот программатор, или же лучше залить bootloader через USBasp или другую Arduino, припаять ATmega на готовую плату, а заливать скетчи и мониторить порт чере какой нибудь USB-UART переходник

 

nabiullin.com
nabiullin.com аватар
Offline
Зарегистрирован: 28.09.2015
Здравствуйте, подскажите пожалуйста.
 
Прошиваю бутлоадер в голый мк (Atmega328p) потом первый раз из ардуины скетч грузиться в мк и работает.
А второй раз уже не грузиться, пока не перезалью бутлоадер.
 
Куда копать ?