Загрузчик на ATmega328p (3.3V/8MHz), чувак не закончит свое дело
Привет и спасибо, что прочитали мой вопрос!
Мне нужно, чтобы мои проекты были как можно меньше. И навыки, и оборудование имеют значение. Поэтому я не могу использовать для них пакет DIP, и я выбрал пакет TQFP. Суть в том, чтобы запрограммировать TQFP ATmega328P с помощью внешней платы без пайки, которая подключается к Arduino UNO. Как то не надо постоянно проверять соединение и все такое. Экран представляет собой толстый Arduino Pro Mini со всеми доступными опциями (3,3 В / 5 В, 8 МГц / 16 МГц, можно подключить Sparkfun FTDI, ...), как показано ниже:
Как видите, я инженер Gymetrics, но не инженер-электронщик и не программист... На самом деле я допустил некоторые ошибки, разрабатывая его с контактами SS, соединенными вместе, а не с выводом Arduino UNO для сброса. вывод мишени и добавил конденсатор не в то место. Мне удалось подключить контакт 10 Arduino к контакту сброса цели на другом шилде и вынуть этот конденсатор. При заказе одного вы получаете их как минимум десятки...
Поскольку схема такая же, как у Mini, и я не думаю, что она нужна. Я знаю, что прожигание в сокетах уже существует, но поскольку вы перепроектировали контакты, чтобы заставить его работать, я предпочел разработать свой собственный. Хорошо, извините за такое длинное вступление, но я предпочел, чтобы вы знали полную рефлексию. Как вы понимаете, я искал на стольких форумах, туториалах и так далее, чтобы сделать это, и все равно это не работает.
Поскольку я впервые записываю загрузчик в ATmega328P, я не уверен в том, что делаю. Итак, я попытался записать загрузчик в Arduino Pro Mini, он отлично работает. Я счастлив в одном: я знаю, как следовать пошаговой процедуре!
Микроконтроллер, который я использую (ATmega328P), такой же, как и в Arduino Pro Mini, поэтому конфигурация в Arduino IDE такая же. Однако, когда работа выполняется легко с помощью Arduino Pro Mini, она не работает с моей платой. Вот что показывает ошибка IDE:
Arduino : 1.8.12 (Windows 10), Carte : "Arduino Pro or Pro Mini, ATmega328P (3.3V, 8 MHz)"
C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files
(x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -cstk500v1 -PCOM7 -b19200 -e -
Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDA: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 "C:\Program Files
(x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"
Using Port : COM7
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 = 0x1e950f (probably m328p)
avrdude: erasing chip
avrdude: reading input file "0x3F"
avrdude: writing lock (1 bytes):
Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x3F:
avrdude: load data lock data from input file 0x3F:
avrdude: input file 0x3F contains 1 bytes
avrdude: reading on-chip lock data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of lock verified
avrdude: reading input file "0xFD"
avrdude: writing efuse (1 bytes):
Writing | ################################################## | 100% 0.02s
avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xFD:
avrdude: load data efuse data from input file 0xFD:
avrdude: input file 0xFD contains 1 bytes
avrdude: reading on-chip efuse data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of efuse verified
avrdude: reading input file "0xDA"
avrdude: writing hfuse (1 bytes):
C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -cstk500v1 -PCOM7 -b19200 - Uflash:w:C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex:i - Ulock:w:0x0F:m
Writing | ################################################## | 100% 0.02s
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDA:
avrdude: load data hfuse data from input file 0xDA:
avrdude: input file 0xDA contains 1 bytes
avrdude: reading on-chip hfuse data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):
Writing | ################################################## | 100% 0.03s
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude done. Thank you.
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 "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"
Using Port : COM7
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 = 0x000000 (retrying)
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x000000 (retrying)
Erreur lors de la gravure de la séquence d'initialisation.
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
Что-то очень странное заключается в том, что он читает в первый и второй раз правильную подпись, и это то, что я понимаю, читая ошибку, а затем больше не читает подпись. Если я попытаюсь снова записать загрузчик, он больше не сможет прочитать подпись. Я не знаю, что мне здесь не хватает.
Что мне делать? Я собираюсь попробовать припаять ATmega328P напрямую, чтобы увидеть, не проблема ли это в сокете, но я не думаю, что это так, поскольку он работает в первом сообщении.
Спасибо!
ОБНОВЛЕНО
Интерфейс программирования:
UNO Target
10 RST
11 MOSI
12 MISO
13 SCK
1 ответ
Лучший ответ:
Проблема решена, я установил два слишком больших конденсатора на контакты XTAL, из-за чего кристалл не мог резонировать.
Спасибо @Wirewrap за обнаружение ошибки
- Не удается снова загрузиться после смены платы
- Что означает avrdude: Device signature = 0x000000? Неисправная проводка? Проблема с программным обеспечением? Неправильная инструкция?
- Arduino UNO для получения подписи чипа ATmega328P-PU
- Ошибка при записи загрузчика
- Ошибка проверки Avrdude
- Можем ли мы записать загрузчик Arduino в любой чип микроконтроллера?
- Программирование ATMega328P без платы Arduino всегда возвращает ошибку: avrdude: stk500_recv(): programmer is not responding
- Atmega328p — переход на низкое энергопотребление 1,8 В с использованием генератора 4 МГц — прошивка загрузчика
Каковы ваши соединения интерфейса программирования? Pro Mini часто требуется контакт DTR для программирования., @hcheung
Я не использую контакт DTR на Pro Mini для записи загрузчика. Я напрямую подключаю сброс pro mini (цель) к 10-му контакту UNO., @Hugo Vernier-Lambert
Просто попробуйте. DTR гарантирует наличие короткого одиночного импульса, в то время как синхронизация для сброса может не работать, а также может иметь эффект многократного дребезга. Когда я программирую Pro Mini, сброс никогда не работает, в отличие от DTR., @hcheung
С контактом DTR вместо контакта сброса я каждый раз получаю неправильную подпись устройства, но это лучше, чем ничего. Он больше никогда не читает 0x000000, но некоторые случайные байты: 0x0000FF или 0x000007 или 0x00FF00, @Hugo Vernier-Lambert
В первый раз предохранители все еще находятся в заводских настройках по умолчанию. То есть; внутренний осциллятор. После установки фьюзов на указанные вами значения микросхема использует внешний кристалл. Тот факт, что вы не получили ответа, может указывать на проблему с кристаллом (или нагрузочными конденсаторами). Глядя на вашу плату, кажется, что вы добавили возможность менять кристаллы, перемещая перемычки. Однако на картинке нет перемычек., @Gerben
Я использую перемычки, но чтобы вы не запутались в них, глядя на картинку, я их все убрал. У меня есть перемычки с обеих сторон кристалла 8 МГц, когда я пишу это сообщение. Так ты думаешь, мне стоит попробовать запрограммировать его без кристаллов? а ты внутренний?, @Hugo Vernier-Lambert
Нагрузочные конденсаторы имеют емкость 22 мкФ в соответствии с рекомендациями из таблицы данных и схемой Pro Mini., @Hugo Vernier-Lambert
Это определенно выглядит так, как будто он не может синхронизироваться после установки предохранителей. Я бы предположил, что кварцевые схемы очень чувствительны и, возможно, сами перемычки мешают этому. Вы можете попробовать соединить перемычки припоем (в нижней части), чтобы обойти их. Также поможет использование осциллографа с щупом, установленным на 10X, чтобы проверить, действительно ли колеблется кварц., @Majenko
Итак, у меня нет ни рабочего датчика 10X, ни датчика 100X, он почему-то сломался. Я ослепну на этом, извините. Я думаю, вы правы в том месте, где перемычки могут мешать кристаллу. Я припаял к кристаллу 8 МГц, потому что именно его я буду в основном использовать в будущем для энергопотребления. В результате он по-прежнему не работает с 4 uC, которые я использую. Попробую с другим, к которому никогда не прикасался, но на этот счет особой надежды нет., @Hugo Vernier-Lambert
@ HugoVernier-Lambert 22 мкФ, ты действительно это имел в виду?, @Wirewrap
@Wirewrap aïe ... Спасибо, я думаю, проблема может быть в этом. Я снова сделал полную схему и хотел поставить 22 пФ, но поставил 22 мкФ ... ну, я поменяю ее и посмотрю, произойдет ли волшебство! Еще раз спасибо, что указали на это!, @Hugo Vernier-Lambert