Кроки рішення помилки - avrdude stk500_getsync ()


Помилка avrdude: stk500_getsync (): not in sync: resp = 0x00 і як її вирішити?

Дана помилка періодично з'являється практично у всіх, найчастіше у новачків, хоча і не тільки, що ж з нею робити? Давайте розбиратися.

  1. Для початку потрібно переконатися що в диспетчері пристроїв ваша плата відображається правильно, і там немає ніяких червоних хрестиків або жовтих кружечків зі знаком оклику, тобто у вас повинно бути щось на зразок цього (так повинна визначатися плата Arduino Uno на чіпі CH340T):

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

  1. У середовищі розробки Ардуіно потрібно переконатися що у вас правильно обрана плата, і кому-порт. Новачком я часто стикався з цією проблемою, коли відключивши плату, я поправляв код програми, потім підключав плату, намагався її прошити і бачив цю помилку, а справа в тому що просто злітала галка з потрібного комусь порту, як тут:

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

3. Іноді допомагає натискання кнопки Reset на платі в момент заливки скетчу. Було у мене таке при роботі з платою Arduino Pro Mini при прошивці її через модуль cp2102 - usb. Запускаємо заливку скетчу і стежимо за статусної рядком в середовищі Arduino.

Як тільки після напису "Компіляція скетчу" з'явиться напис "Вгружаем" - необхідно протягом секунди клацнути кнопочку "Reset" на платі. і замість помилки "avrdude: stk500_getsync (): not in sync: resp = 0x00" можемо отримати благополучне "вгруз"

4. Був у мене один випадок, коли плата нівкакую не хотіла шитися маючи мережевий Шилд на борту. Простий скетч моргалки без Шілд - ллється, з Шілд той же скетч - нещасливий avrdude: stk500_getsync (): not in sync. Довго ми з товаришем ламали голову над цією проблемою, поки я не вичитав що на цій невдалої китайської копії ATmega328P UNO R3 CH340T Instead 16U2 неправильно упаяний ICSP роз'єм, якщо у вас та ж ситуація, то вам сюди

Кроки рішення помилки - avrdude stk500_getsync ()

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

Отже якщо проблема залишилась, а перераховані вище пункти вам не допомогли то потрібно розбиратися далі. У мене така проблема була якраз у згаданій платі ATmega328P UNO R3 CH340T Instead 16U2. У мене їх дві, і як раз була ситуація, коли з одного платою скетчі не хотіли литися, але підмінивши на іншу таку ж плату, скетч легко залився, і так я зрозумів що проблема точно в платі (відсікаючи різні варіанти з драйверами або низькою швидкістю кому-порту про яку часто пишуть, також хтось писав що комусь допомагала перезавантаження, але тут ми бачимо відразу - ця шиється, ця немає, і голову ламати не потрібно про дровах, кабелях, швидкості, статичній електриці і т п). Нагугліть що ж робити в такій ситуації я з'ясував, що необхідно перевірити повернення даних при замиканні rx-tx. Тобто потрібно перемичкою замкнути канали RX і TX - це digital 0 і digital 1 (вони зазвичай підписані) і далі потрібно знайти якусь програму-термінал, наприклад Putty.

Отже, замикаємо ці контакти, підключаємо плату, відкриваємо putty, вибираємо Serial, вказуємо порт на якому висить наша Ардуіно і тиснемо open.

З'являється терміналів вікно, і тут нам просто необхідно щось написати, якщо ми бачимо написані символи, це добре - шляхи на Ардуіно до головної мікросхеми цілі і прошив контролер є шанс повернути плату до життя. Якщо ж ми пишемо, а символи в вікні не з'являються, значить схоже обрив на доріжках самої плати, або несправні будь-які інші елементи плати, тобто проблема не в мікросхемі (з таким я не стикався, але вважаю потрібно знайти принципову схему Ардуіно, наприклад тут. озброїтися тестером і прозванивать). У мене написані символи відобразилися, тобто справа в мікросхемі. Подивившись що на платі ця мікросхема відносно легко дістається, я поміняв ці мікросхеми місцями з іншого платою і переконався що з іншого робочої мікросхемою ардуінка благополучно шиється. Що ж далі? Звичайно, можна замовити цю мікросхему, коштує вона вчетверо дешевше самої Ардуіно, і проблема вирішена, але ж є варіант прошити. Є багато способів прошивки, для яких потрібні різні програматори та інше, але є спосіб прошиті Ардуіно інший Ардуіно, ось їм я і зацікавився. На офіційному сайті є докладна інструкція. ось що там приблизно говориться:

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

Далі необхідно з'єднати плату прошивальщик з прошивається платою, ось ця схема для моєї Ардуіно уно і сумісних з нею:

Знизу плата-прошивальщик. до неї підключається ЮСБ-кабель, зверху плата-пацієнт, яку ми прошиває. Також далі в інструкції написано, що якщо плата уно, то до неї необхідно повісити конденсатор на 10uF між reset і ground. але ось до донору або прошівальщік - незрозуміло. В результаті виявилося що до прошівальщік. Благо конденсатор такої у мене знайшовся, звичайний електролітичний, з якоїсь материнки. Далі необхідно в середовищі Ардуіно вибрати програматор Arduino as ISP

І після цього можна прошивати - інструменти - burn bootloader

Отже, я Поключіться проводки, поставив між землею і резет конденсатор, але спочатку методом тику я поставив конденсатор на донора, підключив ЮСБ кабель до прошевающей платі і побачив як на моєму пацієнта засвітилися вогники одночасно з вогниками прошівальщіка (так вони не блимали зовсім, тупо горів тільки індикатор живлення), це мене вже порадувало, переконавшись що скетч ArduinoISP у мене залитий, обрана правильна плата, кому-порт і програматор я натиснув Burn Bootloader і побачив помилку. Засмутився звичайно, подумав що доведеться таки замовляти цю микрухой, але згадав про Кондесатор і пересадив його з пацієнта на прошівальщіка (відключивши природно попередньо кабель). Отже, підключивши кабель я знову натиснув Burn Bootloader і о диво! На обох платах почали швидко моргати вогники, і десь через хвилин середи Ардуіно сказала мені що прошивка завершена. Відключивши харчування, я відключив усі проводки і для початку перевірив чи все в порядку з платою прошівальщік - підключив її, залив найпростіший скетч блинк і він благополуччя заробив. Відключивши плату, я підключив пацієнта, і спробував залити скетч в неї. Помилку він не видав! Скетч благополучно залився і почав успішно моргати раз в секунду! Ось і все, виявилося нічого складного в цій прошивці немає. Маю велику надію, що ця інструкція допоможе комусь ще, удачі!

Схожі статті