ATmega328P-PU: программатор не отвечает
Несколько дней назад я построил свой собственный Arduino на макете. Он построен в соответствии с учебником по http://www.crash-bang.com/resource/breadboard-arduino/. ATmega328P-PU уже записан с загрузчиком Arduino с простым скетчем blink.
Для программтора я решил использовать Arduino USB2Serial. Опять же, он подключен, как показано на сайте crash-bang. Проблема в том, что я получаю эту ошибку при загрузке другого скетча:
avrdude -Cavrdude.conf -v -patmega328p -carduino -PCOM3 -b115200 -D -Uflash:w:build244630154737317489.tmp/sketch_may23a.cpp.hex:i
avrdude: Version 6.0.1, compiled on Apr 15 2015 at 19:59:58
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "avrdude.conf"
Using Port : COM3
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
avrdude: reading input file "build244630154737317489.tmp/sketch_may23a.cpp.hex"
avrdude: writing flash (450 bytes):
Writing | avrdude: stk500_recv(): programmer is not responding
Большую часть времени я даже не добираюсь до этой точки и просто заканчиваю чем-то вроде:
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xf5
То, что я сделал до сих пор:
- Я уже пытался сбросить Arduino непосредственно перед загрузкой скетча.
- Согласно avrdude, загрузчик в порядке.
- Переустановленные драйверы, Arduino IDE
- Сменил USB-кабель и подключил его к другому USB-разъему
- Сжег новый загрузчик с помощью ArduinoISP
Спасибо за помощь.
@Lorin, 👍3
Обсуждение2 ответа
Я прочитал учебник на веб-сайте crash-bang и обнаружил в нем две проблемы. Первая проблема незначительна и, вероятно, не решит проблему с загрузкой.
На шаге 3 указано подключить +ve rail –> AVCC (вывод 20) и +ve rail –>> AREF (вывод 21). Вы можете оставить эти контакты не подключенными. У действительно потрясающего парня по имени Джулиан ИЛЕТТ есть видео на YouTube, демонстрирующее самодельный Arduino, использующий минимальные необходимые подключения. https://www.youtube.com/watch?v=sNIMCdVOHOM.
Вторая проблема с учебником в шаге 5: "Подключите вывод DTR FTDI через конденсатор 0,1 мкФ к выводу 1 ATmega".. Многие люди утверждают, что это работает, но это работает не для всех. Это не работает для меня, и у меня есть 2 одинаковых программатора FTDI, используемых в учебнике. Если вы посмотрите видео Джулиана, начиная с 12:48, вы увидите, что у него возникли проблемы с загрузкой скетча с использованием метода конденсатора DTR / 0,1 мкф. Он использует другое устройство USB для TTL, но у меня есть одно из идентичных устройств, которые он использовал, и метод 0,1 мкф cap не работает для меня.
Решение проблемы загрузки заключается в использовании коммутатора для сброса ATmega328P-PU. Как сказано в руководстве, используйте резистор на 10 К Ом, подключенный к +5 В, и вывод 1 ATmega328P. Теперь подключите один вывод мгновенного переключателя N. O. к заземлению, а другой-к выводу 1 ATmega328P. Чтобы загрузить свой скетч, нажмите кнопку загрузить в окне Arduino IDE. Как только в окне отладки появится надпись "Размер двоичного скетча...", нажмите кнопку сброса и удерживайте ее в течение 1/2 секунды, а затем отпустите.
Я только что присоединился arduino.stackexchange.com неделю назад, так что мой ответ может быть немного запоздалым. Надеюсь, это поможет людям в будущем.
"Шаг 3 говорит о подключении +ve rail –> AVCC (контакт 20) и +ve rail –>> AREF (контакт 21). Вы можете оставить эти контакты не подключенными. "
+железная дорога ve не должна быть подключена к Aref. Шина +ve будет подключаться через внутреннюю работу АЦП mux.
AVCC и оба Gnds должны быть подключены в соответствии с таблицей данных: 5.2.7. AVCC AVCC-это вывод напряжения питания для A/D преобразователя, ПК[3:0] и PE[3:2]. Он должен быть внешне подключен к VCC, даже если АЦП не используется.
28.2. AVCC не должен отличаться более чем на ±0,3 В от VCC.... При необходимости AVCC или внутреннее опорное напряжение 1,1 В может быть подключено к штифту AREF путем записи в биты REFSn в регистре ADMUX. Источник внутреннего напряжения должен быть отключен внешним конденсатором на выводе AREF для повышения помехозащищенности.
Если вы подключите Aref к рельсу +ve снаружи, а затем выберите внутреннюю ссылку, все может пойти плохо.
FTDT через колпачок 0,1 мкФ для сброса, со съемным разъемом 10 К и обратным смещенным диодом в VCC, работает для меня во многих проектах. Не знаю, почему это работает не во всех случаях. Диод рассеивает любой шип на линии сброса, чтобы чип не думал, что запускается режим программирования высокого напряжения.
- Последовательная связь ESP8266 с ATMega328P
- 16-герцовая плата Uno R3 против платы Arduino Uno R3
- SoftwareSerial не будет читать всю напечатанную строку при вызове readString()
- Arduino UARTS Автоматическая адресация ведомых устройств
- Не могу записать загрузчик с помощью avrisp
- Любопытное столкновение между OneWire и RadioHead
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
Есть ли причина, по которой вы не хотите работать с интернет-провайдером?, @Ignacio Vazquez-Abrams
Для этого потребуется купить еще один программатор, не так ли? Я надеюсь, что кто-то может знать решение, чтобы заставить нынешнего программиста работать..., @Lorin