しなぷすのハード製作記

Arduino用ブートローダ/スケッチライタの製作(8)

ツイート
シェア
このエントリーをはてなブックマークに追加
フォロー
目次へ  前のページへ (1) (2) (3) (4) (5) (6) (7) (8) (9) 次のページへ
2014年05月24日 公開。
2014年05月27日 一部改変。(表5)
2015年10月07日 表5を最新の情報に書き換えた。
Arduino IDE 1.6.Xに対応した。
2015年10月15日 このページの内容を、一部次のページに移した。
2016年02月25日 表4のATtiny44のアナログ入力ピンの数を訂正。
2016年07月01日 ATtinyサポートファイルの入手法を更新。

6-9.ATTiny44/84/45/85を使った開発の方法

6-9-1.ATtiny44/84/45/85とは?

ATtiny44、ATtiny84、ATtiny45、およびATtiny85は、Arduino Unoに使われているATmega328Pと同じAtmel社のAVRマイコンと呼ばれるマイコンの一種です。ATtinyシリーズのAVRマイコンは、小型で、省電力、低コストになっている一方、ATmegaシリーズのAVRマイコンに比べると、内蔵している周辺回路の種類が少なかったり、搭載しているメモリの量が少なかったりと、性能的には制限があります。

性能的に制限があるといっても、例えばLEDが数個点滅するアクセサリを作るなどの用途では、ATmega328Pの性能はほとんど活かされておらず、それよりも、作品を小型化できるATtinyシリーズを使う方が好ましい事が多々あります。

ATtiny44とATtiny84は、14ピンのマイコンで、GPIOが12本使えます。また、それらのGPIOピンの内の8本は、10ビットのアナログ入力(A/D変換入力)としても使えます。一方で、搭載メモリが少なかったり、UART(シリアル通信)などの周辺回路がなかったりします。(注:USIという周辺回路を、半2重のUARTとして使えない事もない)

ATtiny45とATtiny85は、8ピンのマイコンで、GPIOが6本使えます。また、それらのGPIOピンの内4本は、10ビットのアナログ入力としても使えます。搭載メモリや周辺回路が貧弱な点は、ほぼATtiny44やATtiny84と同様です。

写真1(再掲)、左からATtiny85-20PU、ATtiny84-20PU、ATmega328P-PU
↑ 画像をクリックすると拡大
写真1(再掲)、左からATtiny85-20PU、ATtiny84-20PU、ATmega328P-PU

次の表に、ATtiny44/84/45/85とATmega328Pの主な違いをまとめます。

表4、TTtiny44/84/45/85とATmega328Pの主な違い
項目 ATtiny44 ATtiny84 ATtiny45 ATtiny85 ATmega328P
ICのピン数 14ピン ←ATtiny44に同じ 8ピン ←ATtiny45に同じ 28ピン
GPIOの本数 12本
(Arduinoとして使う場合は11本)
←ATtiny44に同じ 6本
(Arduinoとして使う場合は5本)
←ATtiny45に同じ 23本
(Arduinoとして使う場合は20本)
アナログ入力の本数
(アナログ入力ピンはGPIOピンと共用)
8本 ←ATtiny44に同じ 4本
(Arduinoとして使う場合は3本)
←ATtiny45に同じ 6本
PWM出力の本数
(PWM出力ピンはGPIOピンと共有)
4本
(Arduinoとして使う場合は3本)
←ATtiny44に同じ 4本
(Arduinoとして使う場合は2本)
←ATtiny45に同じ 6本
フラッシュメモリの容量 4kB 8kB 4kB 8KB 32kB
RAMの容量 256B 512B 256B 512B 2kB
EEPROMの容量 256B 512B 256B 512B 1kB
UARTインターフェース なし
(ただし、クロックが8MHzの場合は、ソフトウェアシリアルライブラリが使用可能)
←ATtiny44に同じ ←ATtiny44に同じ ←ATtiny44に同じ 1チャンネル
I2C(TWI)インターフェース 1チャンネル
(Arduinoとして使う場合はI2Cインターフェースは使えないSPIインターフェースと排他利用)
←ATtiny44に同じ ←ATtiny44に同じ 1チャンネル
(TinyWireMもしくはTinyWireSライブラリを使えば、Arduinoでも利用可能。SPIインターフェースと排他利用)
1チャンネル
SPIインターフェース 1チャンネル
(ただし使えるのはモード0と1のみ。Arduinoとして使う場合はSPIインターフェースは使えない。I2Cインターフェースと排他利用)
←ATtiny44に同じ ←ATtiny44に同じ ←ATtiny44に同じ 1チャンネル
(マスター/スレーブ両対応。ただしArduinoで使えるのはマスターモードのみ)

6-9-2.ATtiny44/84/45/85の入手方法

ATMega328Pが秋月電子で入手できるのに対し、ATtiny44/84/45/85は、入手ルートが少ないです。(注:この記述は2014年5月時点でのもの。その後、ATtiny85-20PUが秋月電子で入手できるようになった)

ATtiny44/84/45/85にも、色々なパッケージの物がありますが、素人でも半田付けしやすいDIPタイプの物(型番の最後に-20PUが付く)に限って、入手先を調べてみました。次の表に入手先と、2014年5月2015年10月の時点の価格を示します。

表5、DIP品ATtiny44/84/45/85の単価
入手先 ATtiny44-20PU ATtiny84-20PU ATtiny45-20PU ATtiny85-20PU
RSコンポーネンツ 341円(1個購入時)
333円(5個購入時)
476円(1個購入時)
466円(5個購入時)
200円(1個購入時)
143円(5個購入時)
225円(1個購入時)
220円(5個購入時)
共立電子   565円 349円 295円
マルツ 460円(1個購入時)
438円(50個購入時)
419円(100個購入時)
386円(200個購入時)
  250円(1個購入時)
242円(30個購入時)
224円(50個購入時)
203円(100個購入時)
215円(1個購入時)
204円(100個購入時)
194円(200個購入時)
千石電商       221円(1個購入時)
198円(100個購入時)
スイッチサイエンス       206円
妙楽堂       190円
Digikey 414円(1個購入時)
333円(25個購入時)
303円(100個購入時)
475円(1個購入時)
382円(25個購入時)
348円(100個購入時)
199円(1個購入時)
180円(10個購入時)
160円(25個購入時)
144円(100個購入時)
224円(1個購入時)
203円(10個購入時)
182円(25個購入時)
163円(100個購入時)
MOUSER 396円(1個購入時)
349円(10個購入時)
327円(25個購入時)
278円(50個購入時)
262円(100個購入時)
455円(1個購入時)
400円(10個購入時)
376円(25個購入時)
319円(50個購入時)
301円(100個購入時)
172円(1個購入時)
158円(10個購入時)
142円(25個購入時)
121円(50個購入時)
114円(100個購入時)
195円(1個購入時)
178円(10個購入時)
161円(25個購入時)
137円(50個購入時)
129円(100個購入時)
秋月電子
(税込み価格)
      160円(1個購入時)

注:秋月電子以外の入手先の単価は消費税抜きで表示していますが、DigikeyとMOUSERは海外の商社ですので、輸入金額が1万円未満なら、消費税がかかりません。また、これらの海外の商社は、送料が高いので、少数のマイコンを試しに買ってみる用途には向きません。海外の商社の商品価格は、為替レートの変動に応じて、毎日の様に変動します。上の表は、参考程度に見てください。

6-9-3.ATtiny44/84/45/85のスケッチをArduino IDEで開発する方法

標準のArduino IDEでは、ATtiny44/84/45/85用のスケッチを開発する事はできませんが、MITメディアラボHigh-Low TechグループProgramming an ATtiny w/ Arduino 1.6(or 1.0)というページで、ATtinyサポートファイルを配布しており、これを利用する事で、ATtiny44/84/45/85の開発ができるようになります。このサポートファイルは、Arduino IDEの1.0.Xおよび1.6.X(Xは任意の数字)で使えます。

注:ATtinyサポートファイルはArduino IDE 1.6.0~1.6.3でもご利用いただけますが、Programming an ATtiny w/ Arduino 1.6(or 1.0)でサポートファイルのインストール法が説明されているのは、Arduino IDE 1.0.XとArduino IDE 1.6.4以降の場合だけです。

ATtinyサポートファイルの入手法は、Arduino IDE 1.0.Xをお使いの場合と、Arduino IDE 1.6.Xの場合とで異なります。

6-9-3-1.ATtinyサポートファイルの入手法・インストール法(Arduino IDE 1.0.Xの場合)

Arduino IDE 1.0.Xをお使いの場合、ATtinyサポートファイルをダウンロードするには、Programming an ATtiny w/ Arduino 1.6(or 1.0)のページの中ほどに、ide-1.0.x.zipというファイルがダウンロードできるリンクがありますので、探してください。

図35、サポートファイルのダウンロードリンク
図35、サポートファイルのダウンロードリンク

ダウンロードしたファイルを展開するとattiny-ide-1.0.xというフォルダができます。そのフォルダの中には、attinyという名前のフォルダが入っています。このattinyフォルダを、Arduino IDEが起動していない状態で、ドキュメント\Arduino\hadwareフォルダ(Windows環境の場合)の中にコピーすると、ATtinyサポートファイルのインストールが完了します。もし、ドキュメント\Arduino\hadwareフォルダがなければ、ドキュメント\Arduinoフォルダの中にhardwareフォルダを作成してから、その中にattinyフォルダをコピーしてください。

図36、attinyフォルダのコピー
図36、attinyフォルダのコピー
6-9-3-2.ATtinyサポートファイルの入手法・インストール法(Arduino IDE 1.6.Xの場合)

Arduino IDE 1.6.4以降をお使いの場合は、Arduino IDE上でATtinyサポートファイルの入手とインストールができます。以下の手順に従って、ATtinyサポートファイルの入手とインストールを行ってください。

【手順1】環境設定ダイアログボックスを開く

Arduino IDEを起動後、ファイル→環境設定メニューを選択し、環境設定ダイアログボックスを開きます。

図37、環境設定ダイアログボックスを開く
図37、環境設定ダイアログボックスを開く
【手順2】追加のボードマネージャのURLを指定する。

環境設定ダイアログボックス内で、追加のボードマネージャのURLの欄に

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

と入力し、OKボタンをクリックします。

注:古いArduino IDEの場合は、Additional Boards Manager URLsの欄に上記URLを入力します。

図38、追加のボードマネージャを指定します。
図38、追加のボードマネージャを指定します。
【手順3】ボードマネージャを起動する

ツール→ボード→ボードマネージャメニューを選択し、ボードマネージャを起動します。

注:古いバージョンのArduino IDEでは、「ツール→ボード→Boards Manager...」メニューを選択します。

図39、ボードマネージャの起動
図39、ボードマネージャの起動
【手順4】attinyを選び、インストールする

ATtinyサポートファイルは、ボードマネージャ内でattinyと表示されます。そのattinyをクリックして選ぶと、インストールボタンが表示されますので、クリックします。

注:古いバージョンのArduino IDEでは、Installボタンをクリックします。

図40、attinyを選び、インストールする
図40、attinyを選び、インストールする
6-9-3-3.ATtinyサポートファイルの使い方

ATtinyサポートファイルをインストールした後にArduino IDEを起動し、ツール→マイコンボードメニューを見ると、ATtiny44/84/45/85が追加されているのが分かります。

例えば、Arduino IDE 1.0.5の場合は、次の様な表示になります。

図41、マイコンボードにATtiny44/84/45/85が追加されている
図41、マイコンボードにATtiny44/84/45/85が追加されている

マイコンの型番の後ろに(internal 1MHz clock)などと書かれていますが、これは、クロックの周波数などを表しています。これらの表記とその意味の対応表を次に示します。

表6、クロックの表記と意味
表記 意味 備考
internal 1MHz clock 内部1MHzクロック 消費電力を下げたい場合に使う。
internal 8MHz clock 内部8MHzクロック ソフトウェアシリアルライブラリを使う場合や、高速の処理が必要な場合に使う。
external 20MHz clock 外部20MHzクロック 特に高速の処理が必要な場合に使う。この記事ではこのモードを扱わない。

また、Arduino IDE 1.6.4の場合は、ツール→ボードメニューを開くと、次の様な表示になります。

図42、メニューに追加されたATtiny
図42、メニューに追加されたATtiny

選択肢がATtinyのひとつしかありませんが、それを選んで、さらにツール→プロセッサメニューと、ツール→Clockメニューで、マイコンの種類とクロックの設定を選択します。

図43、マイコンの選択
図43、マイコンの選択
図44、クロックの選択
図44、クロックの選択

この様に、Arduino IDE 1.0.Xと1.6.Xでは、マイコンの種類やクロックの設定方法が異なりますが、これ以降は、Arduino IDE 1.0.Xを使う事を前提に説明をします。

先ほど、クロックの設定の話が出ましたので、簡単にクロックの話をしておきます。

ATtiny44/84/45/85には、8MHzのRC発振器が内蔵されており、これをマイコンのクロックとして使う事ができます(internal 8MHz clock)。また、これを内蔵の分周器で8分周し、1MHzのクロックとして使う事もできます(internal 1MHz clock)。

またATtiny44/84/45/85では、外部に水晶振動子またはセラミック発振子を付け、これをクロック源にすることもできます。しかしなら、Arduino用ブートローダ/スケッチライタは、外部のクロックを使うモードには対応していません。

外部クロック(external)モードでヒューズビットの書き込み(後述)を行うと、それ以降、Arduino用ブートローダ/スケッチライタでは、そのマイコンに対して書込みが行えなくなります。必ず内部クロック(internal)モードを選択してください。

ツール→マイコンボードメニューで、使いたいマイコンとクロック周波数を選べば、通常のArduinoと同様にATtiny44/84/45/85のスケッチを書く事ができるようになります。ただし、Arduinoの全ての関数が使えるわけではありません。ATtiny44/84/45/85で使える関数(およびライブラリ)は以下の通りです。

また、ATtiny44/84/45/85のピン配置は次の図の様になっています。

図45、ATtiny44/84/45/85のピン配置
図45、ATtiny44/84/45/85のピン配置

このページでは、ATtiny44/84/45/85の開発環境の構築の仕方の説明をしました。次のページではスケッチをATtiny44/84/45/85に書き込む方法について説明します。

ツイート
シェア
このエントリーをはてなブックマークに追加
フォロー
目次へ  前のページへ (1) (2) (3) (4) (5) (6) (7) (8) (9) 次のページへ

このページで使われている用語の解説

関連ページ

関連製品

Arduino用ブートローダ/スケッチライタキット 商品名 Arduino用ブートローダ/スケッチライタキット
税抜き小売価格 2200円
販売店 スイッチサイエンス 妙楽堂
サポートページ
Arduino Uno用ブートローダスケッチライタシールドキット 商品名 Arduino Uno用ブートローダスケッチライタシールドキット
税抜き小売価格 1200円
販売店 スイッチサイエンス
サポートページ
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。
サイトマッププライバシーポリシーお問い合わせ用語集
しなぷすのハード製作記