Не удается залить бутлоадер в Atmega328p

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

МК Atmega328p магазинные, куплены в Чип и Дипе, т.е. непрошитый.

Припаял МК на плату, кварц 16 МГц тоже припаял.
Пробую прошить загрузчик, в IDE выбираю Uno, в качестве программатора  "Arduino as ISP" (через другую ардуинку):

         Using Port                    : COM4
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x15
Ошибка при записи загрузчика.
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x15
         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  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 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 STK500 Version 1.x firmware

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x02

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x10
         Hardware Version: 4744608
         Firmware Version: 0.4611299
         Topcard         : STK502
         Vtarget         : 1.8 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: stk500_initialize(): (b) protocol error, expect=0x10, resp=0x01
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x10

avrdude done.  Thank you.

Пробую через программатор USBasp (что с установленной перемычкой JP3, что без нее):

Using Port                    : usb
         Using Programmer              : usbasp
avrdude: Warning: cannot open USB device: Function not implemented
         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  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 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 : usbasp
         Description     : USBasp, http://www.fischl.de/usbasp/

avrdude: auto set sck period (because given equals null)
avrdude: error: program enable: target doesn't answer. 1 
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

Ошибка при записи загрузчика.

Другие ардуинки, валявшиеся в столе, обеими способами прошиваются загрузчиком нормально, без ошибок.
А вот с новыми магазинными МК затык.

Где порыться?

rkit
Offline
Зарегистрирован: 23.11.2016

Частоту SPI убавь. Прямо в скетче avrisp прописана константа.

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

Не помогло :(

         Using Port                    : COM4
         Using Programmer              : stk500v1
         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  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 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 STK500 Version 1.x firmware
         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.02s

avrdude: Device signature = 0xffffff (probably .avr8x_mega) (retrying)

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0xffffff (probably .avr8x_mega) (retrying)

Ошибка при записи загрузчика.
Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0xffffff (probably .avr8x_mega)
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.

avrdude done.  Thank you.

 

Using Port                    : COM4
         Using Programmer              : stk500v1
         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  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 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 STK500 Version 1.x firmware
         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.02s

avrdude: Device signature = 0x0007ff
avrdude: Expected signature for ATmega328P is 1E 95 0F
         Double check chip, or use -F to override this check.

avrdude done.  Thank you.

Причем каждый раз Device signature = 0x0007ff - вот это число разное.

slider
Offline
Зарегистрирован: 17.06.2014

0. м.б. с проводами что ?  Приложте  фото контроллера .
1. Попробуйте джампер Slow на USBASP и программу Khazama, считайте хотя бы Read Chip Signature. 

2. Попробуйте программатор USBtinyISP, помогало от  
  не шьющихся из местного магазина
http://arduino.ru/forum/apparatnye-voprosy/atmega328pb-u-chem-chrevato#comment-536135  
 
и вот ветка по соседству, мож там что дельное есть 
HTTP : //arduino.ru/forum/apparatnye-voprosy/ne-mogu-vostanovit-zagruzchik-v-chetyrekh-nano#new

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Разреши поинтересоваться - а какую ты скорость пробовал?

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Магазинный МК должен быть настроен на внутренний RC 8 Гц с делителем на 8. Так что кварц вообщем то и не нужен пока фьюзы не поменяются. По вашим логам даже сигнатура чипа не считывается - проверяйте схему/пайку.

rkit
Offline
Зарегистрирован: 23.11.2016

Tomasina пишет:

Не помогло :(

         SCK period      : 0.1 us

Потому что не убавил

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

slider пишет:
0. м.б. с проводами что ?  Приложте  фото контроллера .

https://habrastorage.org/webt/tb/oa/s2/tboas2zouejlwy4qn7swtd4dp40.jpeg

https://habrastorage.org/webt/hw/02/yc/hw02ycq9u_2a70xd156k5wmbs9q.png

Остальные советы сейчас попробую.

 

slider
Offline
Зарегистрирован: 17.06.2014

ну вот , хорошо что полные фото выложили (хотя интересны были надписи самой atmega328) , а то бы гадали и дальше . 

у вас reset с разъема SPI непонятно куда идёт (только на разъем uart). а он должен приходить напрямую в reset контроллер. просто киньте проводок с низу платы от кнопки reset к пину reset SPI.

а пин DTR на разъеме UART , желательно должен идти через кондер 0.1мкф на reset контроллера.

// для зуммера удобно использовать цифровые транзисторы ( BCR133 , BCR108 ... ) , у них внутри уже стоят пара резисторов. пассивные зуммеры на али по 5руб., удобно разные тональности через них пищать, в отличии от активных , которые редко так умеют делать в силу схемы внутреннего генератора внутри них.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Вот в этом месте

// A clock slow enough for an ATtiny85 @ 1 MHz, is a reasonable default:

#define SPI_CLOCK 		(1000000/6)

пишешь

#define SPI_CLOCK 		(128000/6)

и всё будет работать

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

slider пишет:
reset с разъема SPI непонятно куда идёт (только на разъем uart). а он должен приходить напрямую в reset контроллер. просто киньте проводок с низу платы от кнопки reset к пину reset SPI.

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

Всё прошивается, причем любым из программаторов.

Спасибо.

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

Загружал загрузчик как стандартным способом (Плата Uno - Программатор USBasp - Записать загрузчик), так и по описанному тут. Всегда успешно.

Но не работает Serial.

Пытаюсь загрузить скетч через переходник USB-UART CP2102:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x06

Кабель менял, переходник менял, пробовал на Win и Mac - на моей плате ошибка, на любой другой ардуинке все прошивается. Абыдна.

 

Загружаю через USBasp скетч:

void setup() {
  pinMode(5, OUTPUT);
  Serial.begin(9600);
  Serial.println("Start");   }
void loop() {  
  Serial.println(millis());
  digitalWrite(5, !digitalRead(5));
  delay(1000);  }

Светодиод моргает. Открываю терминал IDE - окно в нем пустое (даже Start" не выводится), после этого светодиод перестает моргать.

Причем сами пины Rx и Tx исправны - подключенные к ним светодиоды моргают:

  digitalWrite(0, !digitalRead(0));
  digitalWrite(1, !digitalRead(1));
  delay(500);  

 

Частота 16 МГц вроде верная, светодиод мигает каждые 10 сек, за 8 минут не сместилось(проверял по секундомеру).

  digitalWrite(1, HIGH);
  digitalWrite(0, HIGH);
  delay(10000);  
  digitalWrite(1, LOW);
  digitalWrite(0, LOW);
  delay(10000);  
Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Видимо надо поменять местами RX и TX

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

пробовал.

slider
Offline
Зарегистрирован: 17.06.2014

китайцы изредка путают rx tx на переходниках.
скорее всего с переходником что. попробуйте просто замкнуть у него rx tx , и в мониторе порта отправить любой символ , он должен вернуться . 
попробуйте переходник на ch340 . если нет то используйте его с ардуины , залив в нее пустой скетч , или удерживать кнопку reset .

Tomasina пишет:

....

Но не работает Serial.

.....

Светодиод моргает. Открываю терминал IDE - окно в нем пустое (даже Start" не выводится), после этого светодиод перестает моргать.

....

очень похоже на то , что вы подключили DTR на reset пин , а т.к. у вас не установлен разделяющий конденсатор (писал выше) , то при открытии порта (открывании терминала) , система выдает  постоянный лог0 на DTR  , он и удерживает контроллер в постоянном сбросе.  Как вы говорите: - Светодиод моргает. Открываю терминал IDE - окно в нем пустое (даже Start" не выводится), после этого светодиод перестает моргать.

//  далее вариантов несколько:
первым делом , вверху кнопки , надо убрать кондер С9 .
- можно аккуратно разрезать дорожку на платах под кнопкой, зачистить, и поставить кондер 0.1мкф, к примеру типоразмеров 0603   0402 .
- после переходника разорвать провод DTR , поставить кондер 0.1
- не подключать DTR . а когда IDE после компиляции напишет "загрузка" , резко жманкнуть кнопкой reset . а лучше её заранее нажать и отпустить в этот момент.

- или палевный вариант - не убирать C9 , а разрезать дорожку слева от него , и сверху проводком пробросить его левый вывод на DTR пин разъема uart . И разрезать дорожку reset от разъема SPI к разъему uart.

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

Разрезал дорожку, перенес С9 - все заработало.

Спасибо!