2017年02月19日 | 公開。 |
2017年03月31日 | AVRマイコンICSP用6Pケーブルサポートページへのリンクを追加。 |
今まで説明してきたスケッチの書き込み方法だと、スケッチを書き込む際にマイコンを基板から外し、Arduino Uno用ブートローダライタシールドやArduino用ブートローダ/スケッチライタのZIFソケットに装着する必要がありました。既にスケッチの開発が終わっている場合は、これでもいいのですが、スケッチの開発の際には、スケッチを変更するたびにマイコンを取り外ししないといけないため、手間がかかります。
そこで、Arduino互換機にICSP端子と呼ばれる、スケッチを書き込むための端子を設け、ここにケーブルを接続する事で、スケッチを書き込む方法を説明します。ICSPとはIn-Circuit Serial Programmingの略で、「マイコンを回路の中に接続したまま、シリアル信号によりプログラムを書き込む事」を意味します。ICSP端子を使うと、マイコンの取り外しもなくなりますし、ICSP端子に接続したケーブルは、スケッチの開発中は、付けたままでいいので、開発が楽になります。
ICSP端子は、2.54mmピッチの2列×3ピンのヘッダです。次の写真に、後ほど作る電子サイコロ基板のICSP端子を示します。
また、Arduino Uno用ブートローダライタシールドやArduino用ブートローダ/スケッチライタにも、ICSP端子があります。
スケッチを書き込む際には、次の様に、Arduino Uno用ブートローダライタシールドまたはArduino用ブートローダ/スケッチライタのICSP端子と、ターゲット基板(スケッチを書き込みたいマイコンが載っている基板。下の写真では電子サイコロ基板)をケーブルで結びます。
ICSP端子には電源ピンも含まれており、Arduino Uno用ブートローダライタシールドまたはArduino用ブートローダ/スケッチライタから電源を供給する設定にする事も可能です。写真33や写真34では、電子サイコロ基板の電源端子には電源を接続していないのに、LEDが点灯している様子が分かるでしょう。
この様にすると、開発中はターゲット基板に電源回路をICSP端子とは別に用意する必要はありませんし、時間のかかるマイコンの抜き差しも不要になります。ICSPケーブルも、開発が終わるまでは、接続したままでOKです。
それでは、ICSP端子のあるArduino互換機の作り方を説明します。
図48は、ICSP端子のあるArduino互換機の基本回路の回路図です。
ご覧の様に、この回路は、図7のArduino互換機の基本回路に、CN1のICSP端子を追加した回路となっています。
なお、図48の中でOPTIONALと書いてある部分の水晶発振子と2つの22pFのコンデンサは、マイコン内蔵のCR発振器をクロックとして使う場合は、不要です。
また、マイコンは、必要なメモリ容量に応じてATmega328P、ATmega168PまたはATmega88Vの中からお選びください。
図48の中で、ICSP端子の接続だけを抜き出したのが図49になります。
この図から分かる様に、ICSP端子を搭載すると、マイコンの17~19番ピン(Arduinoの信号名でいうとD11~D13)を使用します。そのため、マイコンのI/Oピンが十分に足りている場合は、17~19番ピンは使わずに、ICSP端子専用にしてください。
I/Oピンの数が足らず、どうしても17~19番ピンを使用したい場合は、図50に示す様に、1kΩの抵抗を介して回路を17~19番ピンに接続してください。
17~19番ピンを入力ピンとして使う場合は、追加した1kΩの抵抗は回路動作に影響を与える事は通常ありませんが、出力ピンとして使う場合は、1kΩが入ると、その先の回路に供給する電流が不足して、誤作動を起こす可能性があります。その様な場合は、図51に示す様に1kΩと17~19番ピンを使用する回路の間に、74HC244などのバッファを追加してください。
図48の回路を基に、電子サイコロを作ると図52の様な回路になります。電子サイコロの場合は、I/Oピンの余裕が十分にありますので、マイコンの17~19番ピンは、ICSP端子専用にしました。
この回路図に従って組み立てた基板の写真を写真35と写真36に示します。なお、水晶振動子は使いませんでした。またマイコンはATmega328Pを選びました。
ICSP端子に接続するケーブル(ICSPケーブル)は、2.54mmピッチ、2列×3ピンのメスコネクタ2つを、図53に示す様に、同じ番号のピン同士を接続する様にフラットケーブルで結線します。メスコネクタは、MIL規格で規格化されています。
ICSPケーブルの写真を写真37に示します。
このケーブルの購入については、以下のリンクをご覧ください。
商品名 | AVRマイコンICSP用6Pケーブル | |
税抜き小売価格 | 190円 | |
販売店 | スイッチサイエンス | |
サポートページ | AVRマイコンICSP用6Pケーブルサポートページ |
ICSP端子を備えたArduino互換機に、そのICSP端子経由でスケッチを書き込む方法について説明します。
Arduino Uno用ブートローダライタシールドを使う方法と、Arduino用ブートローダ/スケッチライタのICSP端子を使う方法を順に説明します。
なお、Arduino Uno用ブートローダライタシールドを使ってスケッチを書き込む場合は、ターゲット基板に5Vの電源電圧が供給されるので、注意が必要です。Arduino用ブートローダ/スケッチライタを使う場合は、使用するUSBシリアル変換器により、電源電圧を5Vと3.3Vで選択できます。
Arduino Uno用ブートローダライタシールドを使う場合のスケッチの書き込み方法について説明します。
商品名 | Arduino Uno用ブートローダスケッチライタシールドキット | |
税抜き小売価格 | 1440円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino Uno用ブートローダライタシールドキットサポートページ |
スケッチの書き込みにはATmega88/88V/168P/328Pサポートファイルが必要です。あらかじめArduino IDEにインストールしておいてください。インストール方法はATmega88/88V/168P/328PにArduinoのブートローダを書き込むの記事に説明があります。
次の手順に従って、スケッチを書き込んでください。
写真39の様に、ブートローダライタシールドとターゲット基板の双方のICSP端子を、ICSPケーブルで接続します。
ブートローダライタシールドのCN1がICSP端子です。ICSPケーブルの接続の際には、ブートローダライタシールドのICSP端子の1番ピンが、ターゲット基板のICSP端子の1番ピンにつながる様に、ケーブルを接続してください。
Arduino IDE 1.0.Xの場合は、ツール→マイコンボードメニューで、Arduino Unoを選択します。
Arduino IDE 1.6.X、1.7.X、1.8.Xの場合は、ツール→ボードメニューで、Arduino Uno(またはArduino/Genuino Uno)を選択します。
ツール→シリアルポートメニュー(Arduino IDEのバージョンによってはツール→ポートメニュー)でポート番号を指定します。
注:この例ではCOM6を選んでいますが、実際には自分の環境に合わせてポート番号を指定してください。
図58の様に、右矢印ボタンをクリックして、ArduinoISPのスケッチをArduino Unoに書き込みます。
ArduinoISPのスケッチが正常に書き込めると、HeartbeatのLED(LED2)が明るくなったり暗くなったりを繰り返します。
Arduino IDE 1.0.Xの場合は、ツール→マイコンボードメニューで、マイコンの種類とクロックの種類のペアを選択します。
注:この例では"ATmega328P(8MHz/INT OSC)"を選択していますが、実際には自分のターゲット基板で使うマイコンやクロックを選択してください。なお、マイコンの種類の表記については表3を、クロックの表記については表4を参考にしてください。
Arduino IDE 1.6.X、1.7.X、または1.8.Xの場合は、まず、ツール→ボードメニューで使用するマイコンを選び(図56参照)、次にツール→Clockメニューでクロックを選んでください(図57参照)。
注:この例では"ATmega328P"を選択していますが、実際には自分の使うマイコンを、表3を参考に選択してください。
注:この例では"8MHz/X'tal"を選択していますが、実際には自分の使うクロックを、表4を参考に選択してください。
ツール→ブートローダを書きこむメニューを選び、ヒューズビット(マイコンの動作モードを決める情報)を書き込みます。
注:この際、ヒューズビットと一緒にブートローダも書き込まれますが、後でスケッチを書き込むときに、ブートローダはスケッチで上書きされます。
ヒューズビットの書き込み中は、ProgrammingのLED(LED4)が点灯します。
しばらくすると、ヒューズビットが書き込めるはずです。
ヒューズビットの書き込みが終わったら、ProgrammingのLEDは消えます。
もし、ヒューズビットの書き込みに失敗すると、ErrorのLED(LED3)が点灯して書き込みが中断します。その場合は、正しい手順で書き込んでいるか再確認の上、もう一度ヒューズビットを書き込んでください。
注:エラーの発生の状況によっては、ErrorのLEDが点灯しない事もあります。必ず画面のメッセージを確認してください。
書き込みたいスケッチを開きます。
参考:電子サイコロのスケッチを書き込む場合は、リスト1(水晶振動子を使う場合)またはリスト2(内蔵CR発振器を使う場合)を開いてください。
ファイル→書込装置を使って書き込むメニュー(Arduino IDEのバージョンによってはスケッチ→書込装置を使って書き込むメニュー)を選ぶと、スケッチを書き込めます。
スケッチの書き込み中は、ヒューズビットの書き込みの際と同様に、ProgrammingのLEDが点灯します。
スケッチが書き込み終わると、ProgrammingのLEDは消灯し、次の様なメッセージが表示されます。
以上で、スケッチの書き込みは終了し、書き込んだスケッチがターゲット基板上で動作し始めます。
スケッチを修正し、書き込みなおすには、手順12以降をもう一度実行してください。
注:ターゲット基板には、ヒューズビットは一度書き込めばいいので、2回目以降のスケッチの書き込みでは、ヒューズビットを書き込む必要はありません。
スケッチの開発が終わったら、ターゲット基板からICSPケーブルを抜き、正規の電源回路を電源端子に付けて使ってください。
次のページでは、Arduino用ブートローダ/スケッチライタを使ってICSP端子経由でスケッチを書き込む方法を説明します。
商品名 | Arduino Uno用ブートローダスケッチライタシールドキット | |
税抜き小売価格 | 1440円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino Uno用ブートローダライタシールドキットサポートページ |
商品名 | Arduino用ブートローダ/スケッチライタキット | |
税抜き小売価格 | 3000円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino用ブートローダ/スケッチライタキットサポートページ |
商品名 | Arduino用ブートローダ/スケッチライタ(完成品) | |
税抜き小売価格 | 3600円 | |
販売店 | スイッチサイエンス マルツ | |
サポートページ | Arduino用ブートローダ/スケッチライタ(完成品)サポートページ |