Atmega328PにUSBシリアル変換器でスケッチを書き込もうとしたら、avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00というエラーが出て書き込めない問題

スポンサーリンク

はじめに

Atmega328Pにシリアル通信でスケッチを書き込もうとすると以下のようなエラーが発生してしまう。

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00

www.shangtian.tokyo

www.shangtian.tokyo

目次

環境

  • Linux mint

  • Arduino IDE 1.8.19

  • FT-232RQ USBシリアル変換モジュール

akizukidenshi.com

回路の問題

Arduino Unoの回路図を見てみると、USBシリアル変換ICからAtmega328PのRESETへの配線は0.1uFのコンデンサーを介して接続されて、Atmega328PのRESETは抵抗を介してプルアップされている。
https://www.arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf
シリアル変換器を使ってスケッチを書き込む際は、Atmega328PのRESETをプルアップして、シリアル変換器のRTSとAtmega328PのRESETを0.1uF 介して接続する必要がある。この回路でないとリセットタイミングが合わずに上手くシリアル通信を使ってスケッチをアップロードすることが出来ない。ただ、今回の問題は配線の仕方だけではなさそう。

ブートローダーの問題

使用していたボードが良くなかったみたい。Atmega Universalというボードを追加して使っていたが、このボードだとUSBaspを使ったスケッチの書き込みは問題なくできるが、シリアル通信でアップロードでスケッチのアップロードが上手く行かなかった。

そこで「MiniCore」というボードを追加してブートローダーを書き換えてスケッチをアップロードしてみると、エラーなく書き込むことが出来た。MiniCoreのアドレスは以下に示した。Arduno IDEの設定から追加のボードマネージャーの欄にこのURLを保存すると、ボードマネージャーの検索でヒットするようになる。 https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json

ボードマネージャーにボードを追加する方法はこちらの記事に詳しく書いたので、こちらを参照してほしい。 www.shangtian.tokyo

<参考文献>

Arduino互換機を作りたい(3): くつしたねこのTinkering,Tinkering and Obliquity

USB<->シリアル (USB to TTL)

DTR と Arduino の関係 - eggshell blue

マーティーの工房日誌: 小型工作機CNC2418 その24(もう1枚 v1.1f Upgrade失敗)

Blink Example to ATmega328p-u Using FTDI FT232RL Error "stk500_recv()" - Avrdude, stk500, Bootloader issues - Arduino Forum

https://www.arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf

Arduino on breadboard bootloader