質問: ATMEGA328P /シリアル動作のスタンドアロンArduinoですが、シリアルプログラミングはありません(ブートローダを一度起動すると一度だけ) 私の卒業論文では、マイクロコントローラとして ATMEGA328P-AU のボードを設計しました。 ![ここに画像の説明を入力](https://i.stack.imgur.com/87HhA.png) いくつかのライブラリを使いたいのでシンプルさが好きなので、 "Arduino"を使ってプログラムしたいと思っています。 すべてが問題なく機能します: 私はArduino Unoをとり、 "ArduinoISP"スケッチをアップロードしました。 私はISPのピンを接続し、 "Arduino Duemilanove/Diecimila"に設定されたボードでブートローダーを焼きました。ブートローダーが焼損しているというメッセージがありました。 私はISPピンを切断し、UNOボード上のソケットからATMEGAを取り出し、シリアルピンを接続しました。 私が理解できない問題がここに来る: 上記の手順を完了すると、スケッチをアップロードしてシリアル通信が動作します。しかし、私は一度だけアップロードすることができます! 2回目(同じパワーアップ中でも別の時でも)アップロードスケッチボタンを押しても数分間は何の反応も出ません(私はもう何も来ないということを確認するために10分間待っていました:))。 USBまたはTX/RXケーブルのいずれかを抜くと、エラーが表示されます(またはUSBケーブルの場合も同様)。 > avrdude:stk500v2_ReceiveMessage():タイムアウト > > > > avrdude:stk500v2_getsync():プログラマと通信するタイムアウト > > ブートローダーをもう一度アップロードすると、以前と同じようにスケッチをアップロードすることができます。同じ問題が再び発生します。 私はStackexchangeでいくつかの質問をチェックしました(特に[ここ](https://arduino.stackexchange.com/questions/13292/have-i-bricked-my-arduino-uno-problems-with-uploading-to> - ボード ))、問題を探知しましたが、今まで私は解決策を見つけることができません。 あなたが想像することができるように、常にRX/TXケーブルを外してISPケーブルを再び接続し、ブートローダを焼くのは非常に面倒です。 **So my question: What could cause this problem and how can I solve it?** Btw。私は1.6.9を使用してArduinoソフトウェアのバージョンを使用しています
回答: あなたの回路には問題があり、プログラミング時に配線されている方法もあります。シリアルプログラミングにRTSラインを使用できませんでした。その回線をATMega328のRESETに接続する必要があります。これはプログラミング用のブートローダのようなもので、ICがリセットされないとrserialは起動しません。また、Arduino UNOのブートローダーをあなたが選んだものよりも燃やすべきです。 ダイオードをESD保護として使用していることを明確にしたようです。ありがとうございます。ノイズの多い環境でリセットラインにコンデンサを接続することをお勧めします。 RTS信号とArduino RESETピンの間の回路は、次のようにする必要があります。 ``` C RTS >>----||------->> RESET(PIN1) 0.1μF ``` 同じ "私がArduinoをレンガしたことがありますか?"とあなたがリンクしているので、Nicks投稿の約3/4は、 Arduinoのシリアルプログラミングの使用 ``` 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) ``` RTS出力を持つ適切なシリアルプログラマを持っていない場合は、IDEが "Uploading ..."と言うように、マイクロコントローラを手動でリセットしてブートローダーに入る必要があります。