Проблемы с загрузкой на atmega324pb с adruino в качестве провайдера

У меня возникли некоторые проблемы с программированием нового atmega324pb, который я установил на пользовательской плате. Я настроил старый adruino UNO как ISP, загрузив эскиз ArduinoISP, установив программатор на «Arduino как ISP», а затем используя опцию «Загрузить с помощью программатора», но безрезультатно. Вот подробное сообщение об ошибке, которое регистрирует консоль:

System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

     Using Port                    : COM5
     Using Programmer              : stk500v1
     Overriding Baud Rate          : 19200
     AVR Part                      : ATmega32U4
     Chip Erase delay              : 9000 us
     PAGEL                         : PD7
     BS2                           : PA0
     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  9000  9000 0x00 0x00
       flash         65     6   128    0 yes     32768  128    256  4500  4500 0x00 0x00
       lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
       hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
       efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
       lock           0     0     0    0 no          1    0      0  9000  9000 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.03s

avrdude: Device signature = 0x000000 (retrying)

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

avrdude: Device signature = 0x000000 (retrying)

Я думаю, что проблема может быть в том, что Arduino, возможно, нацелена на чип, отличный от atmega324pb, который я использую, но я не уверен. Я не знаю ни одной официальной платы Arduino, которая использует 324pb. Основная проблема, которую я вижу, заключается в том, что avrdude не может найти сигнатуру устройства. Я видел, что другие упоминали, что это может быть неисправная проводка, но я убедился, что все соединения целы.

, 👍0


1 ответ


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

1

Если кому-то интересно, я решил эту проблему.
К сожалению, я не смог разобраться, как загрузить его, используя Arduino в качестве ISP, но мне удалось заставить его работать с AVR Pocket Programmer от Sparkfun. Если вы решите использовать его, ознакомьтесь с этим руководством по драйверам. Это избавит вас от головной боли, связанной с распознаванием USB-устройства.

ВАЖНО ДЛЯ ПОЛЬЗОВАТЕЛЕЙ ATMEGA324PB!!!
Atmega324pb, по-видимому, не является микроконтроллером по умолчанию в avrdude. Вам нужно добавить его в набор инструментов вручную. Вы можете сделать это, следуя этому блогу:
https://hackaday.io/project/9313-uino-mini-super-atmega328pb/log/31003-легкий-путь-к-цепочке-инструментов-для-atmega328pb
Это тот же самый процесс, чтобы добавить любой микроконтроллер Microchip в avrdude, поэтому это руководство будет работать для atmega324pb (сделал это сам). Оттуда вы также можете добавить пользовательскую запись в файл конфигурации Arduino boards.txt, если вы хотите использовать Arduino IDE для разработки. Я не против работы с командной строкой, но наличие ее в Arduino определенно упрощает процесс компиляции .hex и его загрузки за один раз.

Вот пользовательская запись, которую я добавил в файл boards.txt Arduino для Atmega324pb. Все данные были взяты из таблицы данных:

####   ATmega324PB    ####
m324p.name=Atmega324pb
m324p.upload.via_ssh=true

m324p.vid.0=0x0424
m324p.pid.0=0x2740

m324p.upload.tool=avrdude
m324p.upload.protocol=usbtiny
m324p.upload.maximum_size=28672
m324p.upload.maximum_data_size=2560
m324p.upload.speed=57600
m324p.upload.disable_flushing=true
m324p.upload.use_1200bps_touch=true
m324p.upload.wait_for_upload_port=true

m324p.bootloader.tool=avrdude
m324p.bootloader.low_fuses=0x62
m324p.bootloader.high_fuses=0xD9
m324p.bootloader.extended_fuses=0x0f

m324p.build.mcu=atmega324pb
m324p.build.f_cpu=1000000L
m324p.build.vid=0x0424
m324p.build.pid=0x2740
m324p.build.usb_product="Arduino m324pb"
m324p.build.board=AVR_m324pb
m324p.build.core=arduino
m324p.build.variant=standard
m324p.build.extra_flags={build.usb_flags}

Обратите внимание, что я установил upload.tool на avrdude, а upload.protocol на usbtiny, поскольку я использовал карманный программатор AVR.

ВАЖНО!!! Верхний бит предохранителя в этой конфигурации также равен 0xD9 вместо значения по умолчанию 0x99. Я изменил один бит предохранителя, чтобы отключить JTAG и восстановить доступ к контактам GPIO. Насколько мне известно, Arduino не устанавливала биты предохранителя при загрузке с помощью программатора, но это важное замечание, которое следует принять во внимание. Если вам нужно использовать контакты GPIO, которые разделяют функциональность JTAG, запустите командную строку avrdude, чтобы соответствующим образом установить верхний бит предохранителя. (У меня это 0xD9).

,