Проблемы с загрузкой на 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 не может найти сигнатуру устройства. Я видел, что другие упоминали, что это может быть неисправная проводка, но я убедился, что все соединения целы.
@Blake, 👍0
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).
- "avrdude: stk500_getsync(): not in sync: resp=0x00", или некто по имени Avr не позволяет мне загрузить мою программу
- При использовании Arduino Uno в качестве ISP: "Yikes! Invalid device signature" - плохое соединение, неверную конфигурацию или неверную версию avrdude?
- avrdude: ошибка проверки, первое несоответствие в байте 0x0000 : 0x00 != 0x16 с использованием USBasp
- Загрузить код на Arduino Leonardo с помощью командной строки
- Установить скорость передачи данных avrdude в Arduino IDE
- Где параметры avrdude определяются в Arduino IDE?
- Проблема с загрузкой скетча в Леонардо
- Не могу загружать шестнадцатеричные файлы вне Arduino IDE на Pro Micro