2017年02月14日 | 公開。 |
Arduino Unoを使って開発をする時に、32kBのフラッシュメモリをほとんど使い切る様な大きなスケッチを作る事って、あまりありませんよね。例えば、リスト1の電子サイコロのスケッチをArduino IDE 1.8.0でコンパイルすると、使用するのはたった1410バイトで、利用できるフラッシュメモリの4%しか使用しません。(図41参照)
この様にメモリの使用率が低い場合、Arduino Unoに使用されるATmega328Pよりも搭載メモリの少ないATmega88VやATmega168Pを使ってArduino互換機を作る事により、コストダウンをする事ができます。
全く同じ形状なので、型番の刻印を見なければ区別がつかない。メモリの使用量が少なければ、よりメモリ容量の小さなマイコンにスケッチを書き込んで載せかえる事で、コストダウンできる。
ATmega88VやATmega168Pは、搭載メモリが少ないこと以外は、ATmega328Pとほぼ同じ機能を搭載したAVRマイコンです。(ただし、ATmega88Vは、クロック周波数の上限が10MHzなので、注意が必要) 秋月電子では、ATmega88Vが150円、ATmega168Pが200円と、ATmega328Pの250円よりも安い価格で販売されています。(価格はいずれも2017年2月時点の物)
ATmega88VおよびATmega168Pと、ATmega328Pの相違点を表に示します。
マイコン | ATmega88V | ATmega168P | ATmega328P |
---|---|---|---|
フラッシュメモリの容量 | 8kB | 16kB | 32kB |
EEPROMの容量 | 512B | 512B | 1kB |
RAMの容量 | 1kB | 1kB | 2kB |
電源電圧 | 1.8~5.5V | 2.7~5.5V | 2.8~5.5V |
最大クロック周波数 | 4MHz(1.8~2.7V) 10MHz(2.7~5.5V) |
10MHz(2.7~4.5V) 20MHz(4.5~5.5V) |
4MHz(1.8~2.7V) 10MHz(2.7~4.5V) 20MHz(4.5~5.5V) |
秋月電子での価格 (2017年2月時点) |
150円 | 200円 | 250円 |
フラッシュメモリは、スケッチを書き込むメモリですから、ATmega328P、ATmega168P、ATmega88Vの順に大きなスケッチを書き込めることになります。
EEPROMは、電源を切っても消えないデータを記憶するためのメモリです。EEPROMライブラリを使ってEEPROMの読み書きをしない限りは、EEPROMの容量は問題になりません。
RAMは、変数などの、電源を切ると消えてしまう、書き換え可能なデータを記憶するためのメモリです。ATmega88VやATmega168Pは、ATmega328Pの半分のRAM容量しかありませんから、あまりたくさんの変数は使えない事になります。
最大クロック周波数はATmega168PとATmega328Pの場合20MHzですから、双方ともに16MHzでも8MHzでも動作させる事ができますが、ATmega88Vの場合、10MHzが上限ですから、16MHzでは動作させられない事になります。
ATmega88VやATmega168Pを使う場合、ハードウェア的には図10(水晶振動子を使う場合)や図34(内蔵CR発振器を使う場合)の回路図において、ATmega328PをATmega88VやATmega168Pに乗せ換えるだけでOKです。
ただ、スケッチの書き込み方は、若干異なります。Arduino Uno用ブートローダライタシールドを使う場合とArduino用ブートローダ/スケッチライタを使う場合のスケッチの書き込み方を、順に説明します。
Aruino Uno用ブートローダライターシールドを使う場合のスケッチの書き込み方法について説明します。
商品名 | Arduino Uno用ブートローダスケッチライタシールドキット | |
税抜き小売価格 | 1440円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino Uno用ブートローダライタシールドキットサポートページ |
まず、ATmega88/88V/168P/328PサポートファイルをArduino IDEにインストールしてください。インストール方法は、ATmega88/88V/168P/328PにArduinoのブートローダを書き込むの記事に説明があります。
次に、4ページで説明した8MHz水晶振動子・3V動作の場合のATmega328Pへのスケッチの書き込み方と、手順9以外は同様の方法でスケッチを書き込んでください。
Arduino IDE 1.0.Xをお使いの場合、手順9ではツール→マイコンボードメニューで使用するマイコンとクロックの組み合わせを選んでください。(図42参照)
注:ここでは"ATmega168P(8MHz/X'tal)"を選択していますが、実際には自分の使用するマイコンとクロックを選択して下さい。
ここで、マイコンの種類は表3を、クロックは表4を参照して選択肢を選択してください。
使用するマイコン | 選択肢上の表記 |
---|---|
ATmega88V | ATmega88 |
ATmega168P | ATmega168P |
ATmega168P | ATmega168P |
注:使用するマイコンがATmega88Vの場合、"ATmega88"を選択してください。ATmega88VとATmega88は異なるマイコンですが、10MHz以下のクロック周波数で使う場合、両者には互換性があります。
使用するクロック | 選択肢上の表記 |
---|---|
8MHzの水晶振動子(またはセラミック発振子) | 8MHz/X'tal |
16MHzの水晶振動子(またはセラミック発振子) | 16MHz/X'tal |
8MHzの内蔵CR発振器 | 8MHz/INT OSC |
Arduino IDE 1.6.X、1.7.X、または1.8.Xをお使いの場合は、手順9でまずツール→ボードメニューで使用するマイコンを選び(図43参照)、次にツール→Clockメニューでクロックを選んでください(図44参照)。
注:この例では"ATmega168P"を選択していますが、実際には自分の使うマイコンを、表3を参考に選択してください。
注:この例では"8MHz/X'tal"を選択していますが、実際には自分の使うクロックを、表4を参考に選択してください。
Arduino用ブートローダ/スケッチライタを使う場合のスケッチの書き込み方法について説明します。
商品名 | Arduino用ブートローダ/スケッチライタキット | |
税抜き小売価格 | 3000円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino用ブートローダ/スケッチライタキットサポートページ |
商品名 | Arduino用ブートローダ/スケッチライタ(完成品) | |
税抜き小売価格 | 3600円 | |
販売店 | スイッチサイエンス マルツ | |
サポートページ | Arduino用ブートローダ/スケッチライタ(完成品)サポートページ |
まず、ATmega88/88V/168P/328PサポートファイルをArduino IDEにインストールしてください。インストール方法は、ATmega88/88V/168P/328PにArduinoのブートローダを書き込むの記事に説明があります。
次に、Arduino用ブートローダ/スケッチライタの製作(7)に書いてある説明に従って、スケッチを書き込んでください。
ただし手順8では、自分の使うマイコンとクロックを選択してください。
Arduino IDE 1.0.Xを使っている場合は、手順8でツール→マイコンボードメニューで使用するマイコンとクロックの組み合わせを選択します。
注:この例では"ATmega168P(8MHz/X'tal)"を選択していますが、実際には自分の使うマイコンとクロックを、表3と表4を参考に選択してください。
Arduino IDE 1.6.X、1.7.Xまたは1.8.Xを使っている場合は、手順8で、まずツール→ボードメニューでマイコンを選び(図46参照)、次にツール→Clockメニューでクロックを選びます(図47参照)。
注:この例では"ATmega168P"を選択していますが、実際には自分の使うマイコンを、表3を参考に選択してください。
注:この例では"8MHz/X'tal"を選択していますが、実際には自分の使うクロックを、表4を参考に選択してください。
次のページでは、ICSP書き込みを使って、基板からマイコンを抜き差しする事なくスケッチを書き換える方法について説明します。
商品名 | Arduino Uno用ブートローダスケッチライタシールドキット | |
税抜き小売価格 | 1440円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino Uno用ブートローダライタシールドキットサポートページ |
商品名 | Arduino用ブートローダ/スケッチライタキット | |
税抜き小売価格 | 3000円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino用ブートローダ/スケッチライタキットサポートページ |
商品名 | Arduino用ブートローダ/スケッチライタ(完成品) | |
税抜き小売価格 | 3600円 | |
販売店 | スイッチサイエンス マルツ | |
サポートページ | Arduino用ブートローダ/スケッチライタ(完成品)サポートページ |