Я цеглив своє Arduino Uno? Проблеми з завантаженням на борт


86

Я не можу завантажувати ескізи до мого Arduino Uno.

  • Я це "цеглила"?
  • Які кроки я можу зробити, щоб розібратися, що не так?
  • Що я можу зробити, щоб це виправити?

7
Для тих, хто цікавиться, це не актуальне питання! Це більше довідкове питання. Питання само по собі зроблено досить широко. Однак відповідь є дуже детальною, тому це питання може бути використане як орієнтир.
Павло

2
Це більше довідкове питання. Цілком правильно. Дивіться, що це нормально, щоб задавати і відповідати на власні запитання .
Нік Гаммон

@Nick_Gammon Так. Але я відчуваю, що вам якось це слід було десь помітити. На перший погляд я був (злегка) роздратований тим фактом, що питання було таким широким і здавалося, що ви не зробили жодного дослідження. Але коли я побачив вашу відповідь, це все мало сенс. Крім того, (коли зможете), ви не повинні забувати прийняти власну відповідь, щоб інші, хто намагається допомогти, не почали відповідати, переглядати або коментувати питання з цього приводу (що насправді не допомогло б вам, як ви вже знайшов досить вдалий спосіб налагодити цю проблему).
Пол

Дякуємо за відгук. Спочатку я думав поставити запитання із зауваженням, що збираюся опублікувати власну відповідь, але потім побачив прапорець "відповісти на своє запитання", тому я поставив галочку натомість. Щодо його прийняття, мене не пускають протягом 20 годин. Мені здавалося трохи дивним прийняти вашу власну відповідь, але, безумовно, я можу це зробити, коли мені це дозволено. Я задав запитання про Meta Arduino Що таке канонічне питання? спробувати відпрацювати правильну процедуру, але відповіді не отримали.
Нік Гаммон

@FuaZe та Нік Гаммон: Це загалом здається чудовим, єдиною пропозицією, яку я б запропонував, було б зробити тему більшою мірою, що стосується питання та відповіді. Як це є, я думаю, що я міг би спокуситись зняти його як занадто розпливчасте. Можливо, заголовок може бути "Як я можу усунути неполадки завантажень?"
dlu

Відповіді:


115

Це, мабуть, не цегляне

У мене є досить багато Arduinos, і за останні кілька років я лише коли-небудь "цегляний" один, і я думаю, що це було за допомогою його статичної електрики. На жаль, у конкретного з них був процесорний мікросхем SMD (поверхневий), тому нелегко спробувати замінити його на інший чіп.

Будьте спокійні та спробуйте виконати наступні кроки ...


Приклад дошки

"Arduino Uno" - це не одне , що може вийти з ладу. У нього є кілька основних компонентів, і, можливо, лише один вийшов з ладу (якщо такий є). Дивіться цю довідкову фотографію:

Основні компоненти Arduino Uno

Основні компоненти:

  • Процесор Atmega16U2 - це обробка інтерфейсу до USB-з'єднання
  • Процесор Atmega328P - це "головний" процесор, на якому є ваш ескіз
  • Регулятор напруги - це перетворює вхідну потужність від розетки живлення до 5 В
  • Індикатор живлення (зелений) - з позначкою "Увімкнено"
  • Світлодіодний індикатор (жовтий) з позначкою "L" - підключається через підсилювач до цифрового штифта 13
  • Світлодіоди Rx і Tx (жовтий) - вони вказують, чи приймає чи передає USB-чіп (Atmega16U2)

Зауважте, що світлодіоди Rx і Tx не підключаються безпосередньо до цифрових контактів 0 і 1 на платі (позначені Rx і Tx). Вони підсвічуються лише в тому випадку, якщо ви здійснюєте послідовний зв’язок через USB , а не якщо щось (наприклад, GPS) підключено безпосередньо до цифрових штифтів 0 і 1.

Також зауважте, що оскільки світлодіод "L" підключений через підсилювач, він може світитися, якщо на вашому ескізі на вході встановлений контакт 13 . Це нормально. Це не означає, що щось помилково надсилає дані.


Перевірте потужність

Живлення USB

  • Підключіть до комп’ютера плату за допомогою USB-кабелю та перевірте, чи світиться зелений індикатор "Увімкнено".

  • Використовуйте мультиметр і пару перемичок, які ведуть на тест між 5-контактним штифтом і штифтом GND (стрілка внизу). Ви маєте прочитати приблизно 5,0 В (у мене на 5,04 В).

(Ви можете придбати дешевий мультиметр приблизно за 10 доларів, якщо у вас його немає, але вам краще придбати кращий приблизно за 50 доларів - перевірте всі веб-сайти та магазини електроніки.)

  • Тестуйте також між штифтом 3,3 В і штифтом GND - у вас повинно вийти 3,3 В.

Якщо у вас не підключено 5 В із підключеним кабелем USB, переконайтеся, що інший кінець підключений до комп'ютера. Спробуйте також інший кабель.

Гніздо живлення

  • Якщо ви користуєтесь або плануєте використовувати роз'єм живлення (на фотографії "підключений живлення"), від'єднайте USB та підключіть блок живлення - який повинен бути від 7 до 12 В постійного струму з позитивним на центральному штирі.

  • Виміряйте 5 В та 3,3 В штифтів, як зазначено вище. Ви все одно повинні бачити однакові напруги на них.

Якщо ви отримуєте 5 В із підключеним USB, але не з джерелом живлення, то, можливо, пошкоджений регулятор напруги (позначений на фото). Або, можливо, джерело живлення вийшов з ладу. Спробуйте інше джерело живлення, щоб підтвердити, що це таке.


Перевірте світлодіодну спалах, що увімкнено

Якщо у вас є завантажувач Optiboot (Uno зазвичай поставляється з цим), то якщо натиснути і відпустити кнопку Reset, або відключити шнур живлення та підключити USB або кабель живлення, світлодіод "L" повинен блимати швидко 3 рази. Час "увімкнено" та "вимкнено" становить 50 мс кожен, три спалахи мають закінчитися приблизно за 1/3 секунди.

Якщо цього немає, у вас можуть виникнути проблеми з завантажувачем або основним мікросхемою процесора (Atmega328P).


Спробуйте завантажити ескіз

Важливо: Якщо у вас виникають проблеми із завантаженням ескізів, видаліть усі підключені пристрої (наприклад, екрани). Вийміть також перемички, підключені до розеток плати. Зокрема, у цифрові штифти 0 та 1 (Rx і Tx) не повинно бути нічого, тому що це буде заважати спілкуванню з завантажувальним комп'ютером.

Виберіть один із простих прикладів ескізів (наприклад, блимайте) та спробуйте завантажити його. Це те, що ви повинні бачити:

  • Світлодіод "L" повинен блимати 3 рази. Це відбувається тому, що основний чіп скидається командою з процесу завантаження.

  • Світлодіод "Rx" повинен швидко блимати. Це інструкції з процесу завантаження, що намагається активувати завантажувач.

  • Світлодіод "Tx" повинен блимати швидко. Це процесор, який підтверджує завантажені дані.

Ви можете побачити вищезазначене, навіть якщо процес завантаження не вдався. Це може бути через те, що вибрано неправильний тип дошки.

Якщо блимає лише світлодіод "Rx", це може бути через проблему з завантажувачем або основним мікросхемою процесора (Atmega328P). Хтось стукає, але вдома нікого немає!

Перевірте тип дошки

Якщо світлодіоди блимають, але ви отримуєте таке повідомлення:

avrdude: stk500_recv(): programmer is not responding

Перевірте тип дошки:

Меню типу дошки

Якщо у вас вибрано неправильний тип дошки, вона, ймовірно, надішле неправильні інструкції щодо завантаження, а час та очікування або інакше не вдасться. Якщо ви схожі на мене і у вас є різні дошки, то легко забути, що останнє завантаження ви зробили для іншого типу дошки.

Перевірте комунікаційний порт

Якщо світлодіодні індикатори не блимають, можливо, вибрано неправильний комунікаційний порт.

Перевірте комунікаційний порт:

Меню порту Comm

Спробуйте інший ПК / Mac, якщо це можливо

Спробуйте Arduino на іншому ПК / Mac, якщо у вас є. Це може звузити, чи є у вас проблема з тим чи іншим комп'ютером, до якого ви підключили, чи комп'ютерами взагалі.

Зробіть тест на зворотній зв'язок

  • Від'єднайте всі екрани та інші дроти
  • Вийміть плату з живлення
  • Підключіть джемперний провід від RESET до GND (помаранчевий провід на фото)
  • Підключіть джемперний провід від Rx до Tx (білий провід на фото)

Підключення:

Тест на зворотний зв'язок

  • Підключіть USB-кабель та запустіть програму терміналів - наприклад, Монітор терміналів у Arduino IDE. Введіть щось і надішліть (наприклад, натисніть Enter в Terminal Monitor).
  • Все, що ви введете, має відповідати назад.

Якщо все відкликається назад: Це підтверджує, що ви маєте потрібний комунікаційний порт, USB-кабель в порядку, а мікросхеми USB (Atmega16U2), ймовірно, добре.

Якщо нічого не повторилося, перевірте:

  • У вас правильний комунікаційний порт.
  • Спробуйте інший кабель. Деякі дешеві USB-кабелі мають лише електроживлення, а не дані.
  • Перевірте, чи встановлений драйвер пристрою Arduino. Вам, мабуть, не потрібно цього робити, якщо ця плата працювала раніше на цьому комп’ютері, але це може бути варто зробити, якщо ви вперше підключили цю плату до цього комп’ютера.

Перевірте чіп Atmega16U2

Якщо ваша плата не проходить тест зворотного циклу, і ви впевнені, що кабель USB нормально, ви можете протестувати мікросхем Atmega16U2. На платі є заголовок ICSP (In Circuit Serial Programming), прилеглий до мікросхеми Atmega16U2, і біля розетки USB.

Спочатку відключіть живлення (від'єднайте кабель USB та кабель живлення).

Потім ви можете підключити заголовок ICSP за допомогою 6 перемичок до відомого хорошого Uno, як показано на фотографії:

Перевірте чіп Atmega16U2

Висновки заголовка ICSP (зверху):

Заголовок ICSP

Штифт 1 на заголовку ICSP біля мікросхеми Atmega16U2 позначений маленькою білою крапкою біля «F» у «AREF». Штифт 1 на заголовку ICSP біля мікросхеми ATmega328P позначений маленькою білою крапкою, нижче "N" у "ON".

Підключення:

Good board         Target Uno

  MISO                MISO    (pin with dot - pin 1)
  VCC                 VCC
  SCK                 SCK
  MOSI                MOSI
  D10                 /RESET
  GND                 GND

Двічі перевірте електропроводку.

Потім на дошці "відомого хорошого" встановіть ескіз "Atmega_Board_Detector", як описано на сторінці програміста завантажувача Atmega . Код знаходиться у GitHub - nickgammon / arduino_sketches . Якщо натиснути кнопку Завантажити на цій сторінці, ви отримаєте ряд корисних ескізів. Той, кого ви хочете, називається "Atmega_Board_Detector".

Після встановлення відкрийте послідовний монітор, встановіть його на 115200 бод, і ви побачите щось подібне:

Atmega chip detector.
Written by Nick Gammon.
Version 1.17
Compiled on Jul  9 2015 at 08:36:24 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x94 0x89
Processor = ATmega16U2
Flash memory size = 16384 bytes.
LFuse = 0xEF
HFuse = 0xD9
EFuse = 0xF4
Lock byte = 0xCF
Clock calibration = 0x51
Bootloader in use: No
EEPROM preserved through erase: No
Watchdog timer always on: No
Bootloader is 4096 bytes starting at 3000

Bootloader:

3000: 0x4B 0xC0 0x00 0x00 0x64 0xC0 0x00 0x00 0x62 0xC0 0x00 0x00 0x60 0xC0 0x00 0x00
3010: 0x5E 0xC0 0x00 0x00 0x5C 0xC0 0x00 0x00 0x5A 0xC0 0x00 0x00 0x58 0xC0 0x00 0x00
3020: 0x56 0xC0 0x00 0x00 0x54 0xC0 0x00 0x00 0x52 0xC0 0x00 0x00 0xEE 0xC4 0x00 0x00
...
3FE0: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
3FF0: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF

MD5 sum of bootloader = 0xD8 0x8C 0x70 0x6D 0xFE 0x1F 0xDC 0x38 0x82 0x1E 0xCE 0xAE 0x23 0xB2 0xE6 0xE7
Bootloader name: Arduino-dfu-usbserial-atmega16u2-Uno-Rev3

First 256 bytes of program memory:

0: 0x90 0xC0 0x00 0x00 0xA9 0xC0 0x00 0x00 0xA7 0xC0 0x00 0x00 0xA5 0xC0 0x00 0x00
10: 0xA3 0xC0 0x00 0x00 0xA1 0xC0 0x00 0x00 0x9F 0xC0 0x00 0x00 0x9D 0xC0 0x00 0x00
20: 0x9B 0xC0 0x00 0x00 0x99 0xC0 0x00 0x00 0x97 0xC0 0x00 0x00 0x48 0xC4 0x00 0x00
30: 0x0C 0xC4 0x00 0x00 0x91 0xC0 0x00 0x00 0x8F 0xC0 0x00 0x00 0x8D 0xC0 0x00 0x00
...

Однак якщо ви отримаєте таке повідомлення:

"Failed to enter programming mode. Double-check wiring!"

Це може означати, що ваш ATmega16U2 не працює.


Перевірте чіп ATmega328P

Відключіть живлення від "відомого хорошого" Arduino Uno та підключіть перемички ICSP відповідно до цієї фотографії, щоб підключити їх до "основного" процесора вашого Uno:

Перевірте чіп ATmega328P

Висновки заголовка ICSP (зверху):

Заголовок ICSP

Штифт 1 на заголовку ICSP біля мікросхеми ATmega328P позначений маленькою білою крапкою, нижче "N" у "ON".

Електропроводка така ж, як і раніше, за винятком того, що ви підключаєтесь до іншого заголовка ICSP - тієї, що знаходиться в кінці плати, віддаленій від розетки USB.

Good board       Target Uno

  MISO                MISO    (pin with dot - pin 1)
  VCC                 VCC
  SCK                 SCK
  MOSI                MOSI
  D10                 /RESET
  GND                 GND

Після підключення відкрийте послідовний монітор, встановіть його на 115200 бод, і ви побачите щось подібне:

Atmega chip detector.
Written by Nick Gammon.
Version 1.17
Compiled on Jul  9 2015 at 08:36:24 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Bootloader in use: Yes
EEPROM preserved through erase: No
Watchdog timer always on: No
Bootloader is 512 bytes starting at 7E00

Bootloader:

7E00: 0x11 0x24 0x84 0xB7 0x14 0xBE 0x81 0xFF 0xF0 0xD0 0x85 0xE0 0x80 0x93 0x81 0x00
7E10: 0x82 0xE0 0x80 0x93 0xC0 0x00 0x88 0xE1 0x80 0x93 0xC1 0x00 0x86 0xE0 0x80 0x93
...

MD5 sum of bootloader = 0xFB 0xF4 0x9B 0x7B 0x59 0x73 0x7F 0x65 0xE8 0xD0 0xF8 0xA5 0x08 0x12 0xE7 0x9F
Bootloader name: optiboot_atmega328

First 256 bytes of program memory:

0: 0x0C 0x94 0x35 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
10: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
20: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
30: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
...

У цьому випадку він підтверджує, що основний процесор працює, і на ньому є завантажувач Optiboot.


Речі, які можна виправити

Збій регулятора напруги

Замінити це непросто, але він потрібен лише в тому випадку, якщо ви використовуєте гніздо живлення. Якщо ви працюєте з USB, то це не потрібно. Крім того, ви можете домовитись про джерело живлення від 4 до 5 В (наприклад, 3 х АА батареї) та підключити їх безпосередньо до розетки 5 В на платі.


Помилка мікросхема ATmega16U2

Це потрібно лише для завантаження ескізів через порт USB та послідовного налагодження. Замінити його не особливо просто, оскільки це SMD (пристрій наземного монтажу). Однак можна обійтися і без цього.

Ви можете завантажувати ескізи через заголовок ICSP, якщо купуєте пристрій програмування ICSP.

Приклади таких пристроїв, підключених до гнізда ICSP:

USBtinyISP

AVRISP

(Ці фотографії були зроблені Ruggeduino, але концепція та ж).


Ви також можете отримати кабель FTDI, як це:

Підключіть FTDI до Arduino

Підключіть його до таких послідовних портів вашої дошки:

FTDI кабель

FTDI    Arduino Uno

GND       GND  (black wire on FTDI cable, blue jumper wire)
CTS       not connected
VCC       5V
TxD       D0 (RX)
RxD       D1 (TX)
RTS       To RESET with a 0.1 µF capacitor in series with it (green wire)

Тепер ви можете завантажувати ескізи безпосередньо на основний процесор, минаючи USB-чіп.


Ви також можете використовувати мій автономний програміст мікросхем Atmega для завантаження файлів .hex - це дозволяє скопіювати .hex-файл для ескізу на SD-карту, а потім запрограмувати плату через заголовок ICSP.


Помилка мікросхема ATmega328P

Основний процесор можна замінити досить легко, якщо він встановлений в розетці. Отримайте чіп для заміни десь на зразок Adafruit приблизно за 6 доларів США. Або ж спробуйте eBay. Спробуйте отримати чіп, на якому вже завантажений завантажувач Optiboot, щоб врятувати клопоту.

Обережно виграйте наявний мікросхему з розетки та встановіть новий, враховуючи місце розташування штифта 1. Пін 1 має виїмку на мікросхемі, а його правильна орієнтація відмічена на першій фотографії у цій публікації жовтим кольором крапка (найближча до краю дошки). Можливо, вам потрібно буде трохи випрямити ноги. Тримайте чіп за кінчики і обережно натискайте на рівну поверхню, як на робочий стіл, до тих пір, поки трохи не поштовхнути всередину. Намагайтеся не торкатися до металевих штифтів, ви можете закрити їх статичною електрикою.


ATmega328P відповідає, але не має завантажувача

У мене є ескіз у програмі завантажувача Atmega, який замінить завантажувач Optiboot. Проводка така ж, як для ескізу детектора мікросхем. Код знаходиться у GitHub - nickgammon / arduino_sketches . Якщо натиснути кнопку Завантажити на цій сторінці, ви отримаєте ряд корисних ескізів. Той, кого ви хочете, називається "Atmega_Board_Programmer".

Встановіть ескіз на ваше «добре відоме» Uno та підключіть його до цільової плати за допомогою проводки, показаної раніше.

Перевірте чіп ATmega328P

Відкрийте послідовний монітор на своєму "доброму" Uno, і ви повинні побачити це:

Atmega chip programmer.
Written by Nick Gammon.
Version 1.35
Compiled on Jul  9 2015 at 15:06:58 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Type 'L' to use Lilypad (8 MHz) loader, or 'U' for Uno (16 MHz) loader ...

Введіть "U" для навантажувача Uno (Optiboot).

Using Uno Optiboot 16 MHz loader.
Bootloader address = 0x7E00
Bootloader length = 512 bytes.
Type 'Q' to quit, 'V' to verify, or 'G' to program the chip with the bootloader ...

Введіть "G" для програмування мікросхеми.

Ви повинні побачити:

Erasing chip ...
Writing bootloader ...
Committing page starting at 0x7E00
Committing page starting at 0x7E80
Committing page starting at 0x7F00
Committing page starting at 0x7F80
Written.
Verifying ...
No errors found.
Writing fuses ...
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Done.
Programming mode off.
Type 'C' when ready to continue with another chip ...

Це займає приблизно одну секунду. Тепер завантажувач встановлений.


Проблеми з сторожовим таймером

Таймер сторожової служби (вимкнено за замовчуванням) може бути налаштований для скидання процесора через певний час. Намір полягає в тому, щоб відновитись з "зависання" для процесора, розгорнутого в полі. Однак якщо таймер встановлений на короткий період (наприклад, 16 мс), процесор може повторно скинутись, перш ніж завантажувач матиме шанс зробити що-небудь.

Симптоми полягають у тому, що ви не можете завантажувати нові ескізи. Деякі сучасні завантажувачі (наприклад, Optiboot) вживають заходів, щоб зупинити цю проблему як одну з перших речей, які вони роблять. Однак інші цього не роблять.

Це може бути важко відновити, оскільки після запуску ескізу у вас виникає проблема його скидання, і якщо у вас є проблема, ви не можете замінити ескіз. Люди часто повідомляють, що їм потрібно спалити новий завантажувач, щоб відновитись. Однак це лише тому, що в якості побічного ефекту спалювання завантажувача стирає поточний ескіз.

Там є способом відновлення. Виконайте такі дії:

  • Вимкніть повністю плату (вийміть USB-кабель).
  • Утримуйте кнопку Скидання та утримуйте її (або заведіть перемичку з шпильки RESET на контакт GND). Це зупиняє запуск ескізної проблеми і тим самим активує таймер сторожової собаки
  • Утримуючи кнопку Скидання, підключіть USB-кабель.
  • Почніть завантажувати ескіз, у якого немає цієї проблеми (наприклад, блимати)
  • Після того, як IDE повідомляє про "Завантаження", відпустіть кнопку "Скидання" (або видаліть перемичку).
  • Тепер він повинен завантажувати ОК - оскільки ескіз, який активував таймер сторожового собаки, ніколи не запускався.

Проблеми із завантаженням Mega2560

Я згадую про це тут, навіть якщо ця публікація дійсно орієнтована на дошку Uno, оскільки вона досить поширена.

Деякі версії завантажувача Mega2560 шукають "!!!" під час вхідного завантаження з ПК, і якщо вони це бачать, перейдіть у режим налагодження. Це призводить до збою завантаження.

Приклад коду:

Serial.println ("Furnace overheating!!!");

Рішення:

  • Встановіть новіший завантажувач. Мій ескіз "завантажувач завантажувача", згаданий раніше у цій відповіді, повинен встановити завантажувач, у якого немає цієї проблеми.

Або (простіше кажучи):

  • Не використовувати "!!!" у вашому ескізі.

Проблеми з завантаженням до Леонардо / Мікро / Есплори тощо.

Плати з ATmega32u4 як основним (і єдиним) процесором можуть бути складнішими для завантаження. Це тому, що той самий чіп повинен обробляти завантаження, а також виконувати ваш код.

Після скидання дошки невелике вікно можливостей, коли вона шукає новий ескіз, який потрібно завантажити. Техніка завантаження на ці дошки:

  • Складіть свій ескіз без помилок.
  • Почніть завантаження
  • Як тільки IDE повідомляє про "Завантаження", натисніть та відпустіть кнопку Скидання.

У вас є лише секунда або близько того, щоб це зробити, перш ніж старий ескіз почне працювати. Не перешкоджайте, якщо вам доведеться повторити цей процес пару разів. Це нормально.


Список літератури


5
Ого. Це чудова чудова чудова відповідь
rpax

1
Це чудова відповідь, сер.
Мерт Гюлсой

"Якщо у вас підключено 5 В з підключеним USB, але не з джерелом живлення, то, можливо, пошкоджений регулятор напруги (позначений на фото). Або, можливо, джерело живлення вийшов з ладу. Спробуйте інший блок живлення, щоб підтвердити, що це таке . " - чому це заважало б вам завантажувати ескізи?
користувач2813274

Ви абсолютно праві, це не було б. Однак чек-лист повинен був бути загальним контрольним списком на помилки. У цьому випадку це буде більше схоже на "Я можу завантажити ескіз, але при його розгортанні в полі з блоком живлення (настінна бородавка) він не працює".
Нік Гаммон

1
Нещодавно у мене виникли проблеми з новими драйверами FTDI, які "цегляні" китайські "FTDI сумісні" (ну, можна сказати, імітація) чіпів. Вони встановили PID пристрою до 0x0000, що зробить драйвери недійсними. Ви можете змінити PID назад за допомогою інструмента M_PROG на FTDI або змінити драйвери (і встановити вікна, щоб дозволити неперевірені драйвери).
Пол

14

Принаймні - як я вважаю, ви завантажуєте свій ескіз через avrdude - будь ласка, дайте більше інформації про збій завантаження (наприклад, вихід завантажувача ескізу), щоб люди тут могли вам краще допомогти.

Крім чудової відповіді Ніка Гаммона, будь ласка, шукайте знаки оклику у своєму ескізі. Якщо ваш ескіз містить рядок з більш ніж або рівним 3 знакам оклику, завантаження не вдасться, оскільки старі версії завантажувача Arduino інтерпретують ці знаки оклику як іншу функцію, і завантаження припиниться.

Приклад припинення завантаження:

char* test = "This will stop the upload!!!";

Див. Проблему Google Code .


1
Влучне зауваження. В основному це стосується Mega2560, але я визнаю, що це я опустив. :)
Нік Гаммон

1
Додано розділ для вирішення цієї проблеми.
Нік Гаммон

2

Я замурував 2x 2x ATMega328P на моїй дошці Arduino Uno завдяки статиці (я думаю).

Статика, здається, знищила штифт TX, і тому програму не можна завантажувати за допомогою кабелю USB.

Найпростішим рішенням є заміна мікроконтролера. Ви можете придбати новий DIP ATMega328P, запрограмований із завантажувачем Arduino ( наприклад, таким від Adafruit ), і ви готові знову зайти.

Крім того, ви все одно можете запрограмувати ATMega328P, використовуючи програміст AVRISPmkII. Після цього всі, крім Tx-штифта, працюють добре.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.