Atmega328p загружает через ISP, но не через загрузчик

Я пытаюсь загрузить загрузчик на свой atmega328p на специальной плате, содержащей внешний генератор на 16 МГц. Можно загрузить программу через контакты ICSP, используя Arduino в качестве ISP (официальный Arduino Uno), но невозможно загрузить загрузчик. Этой плате нужен загрузчик, так как она будет использоваться через интерфейс FT232RL.

Я пытался загрузить загрузчик со скоростью 115200 бод, но это не привело к считыванию подписи устройства. Также точное определение моей микросхемы: «ATMEGA328P-AU TQFP-32 8-bit 20MHz», если это поможет.

PS Это точное определение говорит, что это 20 МГц, но я подозреваю, что это правильно, поскольку я не полностью доверяю этому магазину.

Заранее спасибо

Журнал загрузки

Sketch uses 1626 bytes (5%) of program storage space. Maximum is 32256 bytes.
Global variables use 192 bytes (9%) of dynamic memory, leaving 1856 bytes for local variables. Maximum is 2048 bytes.
/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -v -patmega328p -carduino -P/dev/cu.usbmodem14101 -b115200 -D -Uflash:w:/var/folders/9z/8cpdsm0518x0b85yx7n4y_0c0000gn/T/arduino_build_452635/sketch_dec06a.ino.hex:i 

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/Users/deniz/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/cu.usbmodem14101
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
         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 : Arduino
         Description     : Arduino
         Hardware Version: 3
         Firmware Version: 4.4
         Vtarget         : 0.3 V
         Varef           : 0.3 V
         Oscillator      : 28.800 kHz
         SCK period      : 3.3 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "/var/folders/9z/8cpdsm0518x0b85yx7n4y_0c0000gn/T/arduino_build_452635/sketch_dec06a.ino.hex"
avrdude: writing flash (1626 bytes):

Writing | ################################################## | 100% 0.27s

avrdude: 1626 bytes of flash written
avrdude: verifying flash memory against /var/folders/9z/8cpdsm0518x0b85yx7n4y_0c0000gn/T/arduino_build_452635/sketch_dec06a.ino.hex:
avrdude: load data flash data from input file /var/folders/9z/8cpdsm0518x0b85yx7n4y_0c0000gn/T/arduino_build_452635/sketch_dec06a.ino.hex:
avrdude: input file /var/folders/9z/8cpdsm0518x0b85yx7n4y_0c0000gn/T/arduino_build_452635/sketch_dec06a.ino.hex contains 1626 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.21s

avrdude: verifying ...
avrdude: 1626 bytes of flash verified

avrdude done.  Thank you.

Журнал загрузчика (PS все попытки синхронизации происходят одновременно)

/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -v -patmega328p -cstk500v1 -P/dev/cu.usbmodem14101 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xFF:m

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/Users/deniz/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/cu.usbmodem14101
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x60
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x66
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x78
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x1e
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x06
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x7e
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xe6
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x80
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x98
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x80

avrdude done.  Thank you.

, 👍1

Обсуждение

Вы пробовали "Записать загрузчик"? Потому что по умолчанию он загружает скомпилированный скетч без загрузчика (это можно изменить в настройках платы, чтобы использовать шестнадцатеричный файл и с загрузчиком)., @KIIV

Этот вывод осуществляется с помощью кнопки «Записать загрузчик», указанной в Arduino IDE. Так можно ли загрузить загрузчик и скетч одновременно?, @Deniz da King

В каталоге сборки будет еще один шестнадцатеричный файл, подобный этому: sketch_dec06a.ino.with_bootloader.hex (однако не могу вспомнить, где именно он должен быть установлен), @KIIV

Да, я нашел это. Я буду пробовать тот. Также не будет ли проблем с прошивкой скетча с бутлоадером без переопределения фьюз-битов?, @Deniz da King

Также, если вы можете написать свой комментарий в виде подробного ответа, я могу одобрить, если он работает., @Deniz da King

А вы уверены, что первый действительно работает? Программатор = arduino обычно является загрузчиком. Вы также должны увидеть это stk500v1, если вы используете «Загрузить с помощью программатора» (программатор должен быть установлен на Arduino в качестве интернет-провайдера). Возможно, вы просто загрузили его прямо в Arduino, который вместо этого должен быть программатором (и удалили из него этот скетч ArduinoISP), @KIIV

Я снова загрузил скетч ArduinoISP и попытался загрузить только скетч с_загрузчиком и только загрузчиком, но безуспешно. Я обновил журнал загрузки в вопросе. Похоже, программист не может прочитать подпись целевого устройства. Я успешно загрузил загрузчик на две одинаковые печатные платы, но не повезло с этой., @Deniz da King

Если у вас есть время изучить это более подробно, я могу переместить этот раздел комментариев в чат. Буду очень рад, если это возможно., @Deniz da King

Давайте [продолжим обсуждение в чате](https://chat.stackexchange.com/rooms/101890/discussion-between-kiiv-and-deniz-da-king)., @KIIV


1 ответ


Лучший ответ:

0

Первая проблема может быть связана с журналом загрузки. Там упоминается programmer = arduino (в версии до редактирования). Это означает, что вы можете загружать код не в тот Arduino. Так что скетча ArduinoISP нет и работать он не будет (ошибки getsync())

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

А так как это самодельная плата, то могут быть некоторые проблемы с проводкой, без обходных конденсаторов (как выяснилось в чате - это была основная проблема)

,