Arduinoのコンセプトがわかりません


8

私はしばらくの間、Arduinoの作成に苦労しています(ISPプログラマーケーブルを使用してブレッドボードバージョンを作成することに成功しました)。彼らは、Arduinoブートローダーは、ATmega8をプログラムするために外部回路が必要ないように作られていると言います。しかし、回路図を見ると、シリアル接続に必要な通常の回路があります。では、ブートローダーは実際には何をしているのでしょうか?


1
外付け回路は無意味な主張ではありません...シリアルポートを介してコンピューターと通信するには、少なくとも何らかのMAX232のようなRS232トランシーバーが必要です。または、arduinoと同様に、FTDIのようなUSBインターフェイスチップとTTL UARTを直接通信できます。
vicatcu

回答:


12

ブートローダーはAVRのフラッシュ内の小さなプログラムで、上書きされることはなく、電源投入時に実行されます。ブートローダーの仕事は、UARTからプログラムデータを読み取り、それを内部フラッシュに書き込むことです。ブートローダーがなければ、コードをロードする唯一の方法はISPを使用することです。

AVR ATMega8にはフラッシュ内のコードはありません。コードは、AVR ISPプログラマー(または別のArduino)を使用して、ISP(システム内プログラミング)ピン経由でアップロードできます。

Arduinoの場合、ISPは(製造時に)1回だけ使用され、小さなブートローダーをアップロードします。電源投入時に、ブートローダーが実行され、シリアルUART(TX + RXピン)と通信します。これで、Arduinoは、STK500プロトコルを使用してシリアルピン経由でプログラムできます。

シリアルピンは(通常)FTDI USB toシリアルチップに接続されているため、ArduinoはUSB経由でもプログラムできます。


つまり、ブートローダーが組み込まれたatmega8チップを使用している場合、ISPのすべての回路を削除して、シリアルからarduinoに適切なピンを接続するだけでよいということですか。また、シリアルをatmega8に接続する方法を教えてください
Rick_2047

2
ブートローダーを入手したら、これが最小限のArduino回路です。PCを(TTLレベルコンバーターを介して)TX / RX / GNDピンに接続します。 profmason.com/wp-content/uploads/2008/09/arduinopins.jpgは :いくつかのより多くの詳細については、この質問を参照してくださいchiphacker.com/questions/2512/ftdi-basic-breakout-5v
トビーJaffey

1
max232は、RS232レベルのシリアル(PCの9ピンコネクタからのもの)を、Arduino / AVRとの通信に適したTTLレベル(5v)信号に変換します。max232回路は、PCに接続するためのFTDI USB to TTLシリアルチップに置き換えることができます。
Toby Jaffey

2
ここで少し注意:Arduinoブートローダーは、起動時に非常に短い間、シリアルポートで新しいコードをリッスンするだけです。古いArduinoブートローダーは数秒待ってからコードの実行を開始します。新しいブートローダーは非常に速く起動し、FT232からのDTRラインによってリセットする必要があります。max232を使用する場合は、古いブートローダーをアップロードしてください。また、Sparkfun(sparkfun.com/commerce/tutorial_info.php?tutorials_id=104)で、優れたAVRチュートリアルを確認してください。
bpijls

2
実際のAVRオブジェクトコードです。Arduinoは、インタープリターではなくコンパイルされたオブジェクトコードを実行するという点で、いくつかのライバルプラットフォーム(たとえば、Basic Stamp)に勝っています。
Toby Jaffey


1

彼らはおそらく、事前に組み立てられて組み立てられたArduino Unoを購入すれば、プログラマーも購入する必要がないことを意味します。他の多くの電子機器スターターキットと同様です。Arduino Unoボードは、USB(A> B)ケーブルだけでプログラムできます。

ただし、独自のArduinoを構築する場合は、もちろん、外部回路(たとえば、AVR ISPプログラマー)またはMax232またはFTDIのようなものが必要になります。


0

Arduinoブートローダーの背後にある考え方は、それらを再プログラミングするために特別なハードウェアや回路を必要としないこと、または専用のプログラマー(PIC MCUのPicKit2など)をしばしば必要とする古いマイクロコントローラーと比較することです。ブートローダーは、基本的なシリアル接続を介したプログラミングを可能にします。

もちろん、当時は、シリアルリンク、通常はTTLからRS232へのrs232コンバーターが必要でした。その後、シリアルポートは段階的に廃止され、USBからシリアルへのユビキタス化により、max232などを置き換えることができます。そして今、USB対応のAtmelマイクロコントローラーを使用すると、それさえ不要になり、最小限の受動部品を持つ単一のICでArduino機能とUSB to Serialを提供できます。スケッチをアップロードするには、USBケーブルといくつかのパッシブのみが必要です。ブートローダーの初期プログラミングには、従来のICSPプログラミングが必要です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.