超小型ワンチップマイコンを使おう!
ATtiny10 とは、米粒サイズで足も 6pin しか無い超小型のワンチップマイコンです。
AVR っていうマイコンの一種で、CPU を中心にメモリや GPIO、タイマー、ADC 等が入ってます。クロックオシレータも入ってますから、電源をつなげば外付け部品無しに動き出します。
2009年くらいに出たもののようなので今さらと思うかもしれませんが、なかなかあなどれない逸品です。
極小ですが左のトランジスタと比べても察しが付くように、ピンのピッチは 1.27mm なので手はんだでも扱えるレベルですし、プリント基板もマジックでもなんとか手書きできるレベルです。
これは電子工作小僧の強い味方です。
もちろんマイコンですから、この中にプログラムを書き込んで使うわけです。
プログラムでピンの制御をするので、ゲートICやらで論理回路を組み立てたりトランジスタや抵抗コンデンサなんかを組み合わせるよりずっと簡単に、ずっと柔軟に、ずっと複雑なことができるわけです。
しかも、気になるお値段も秋月電子で 1粒 45円ぽっきり!(2022/4/27時点) 50円になりました。
ただ、同じ秋月電子で 8pin でスペックももっといい ATtiny202 が 60円で売ってるので、コスパの点ではそっちの方がいいかもしれません。でもミニマム縛りを楽しむなら断然こっちです。
スペック
スペックは以下の通りです。
電源電圧は 1.8V からなので、乾電池 2本で動かせます。
パワーダウン時の消費電力も極小なので、これも電池向きです。パワーダウンからはウォッチドッグタイマーやピン割込みで覚ますことができます。
- コア: tinyAVR(8bit)
- 電源電圧: 1.8 ~ 5.5V
- クロック: 12MHz(8MHz@2.7V、8MHz オシレータ内蔵)
- プログラムメモリ(NVM): 1024 bytes(512 words)
- SRAM: 32 bytes
- 汎用レジスタ: 16個
- GPIO: 4pin
- ADC: 8bit 4ch
- タイマ: 1ch
- WDT: 16ms ~ 8s 周期
- 動作電流: 200μA(活動時 1MHz, 1.8V)、0.1μA以下(パワーダウン時 1.8V)
詳しい情報はこちらから。
- ATtiny4/5/9/10 – Complete Datasheet – 英語、ハードウェア仕様と命令セットまで載ってる
- AVR.jp – 有志による各種日本語訳の資料がある(リンクに制限があるので検索で)
- ↑データシート: tiny10.pdf – ハードウェア仕様と命令セットまで載ってて、これで一通り使える
- ↑データシート: AVRinst.pdf – AVR命令セット、ATtiny10 はこの中の AVRrc の分類
- ↑AVR/Atmel Studio: AVR_Assembler.pdf – AVRアセンブラの仕様
- ↑AVR/Atmel Studio: AVR_Simulator.pdf – AVRシミュレータの使い方
ソフトウェア開発環境
ATtiny10 に書き込むプログラムを作るための開発環境が無料で提供されていて、C言語やアセンブラを使うことができます。
私は Windows PC に Atmel Studio 7 をインストールして使っていますが、今は Microchip Studio for AVR という名前でリリースされているはずです。
こいつにはシミュレータがついていて、実物のマイコンに書き込まなくてもプログラムを実行してみることができて大変便利です。マイコンには画面も何も付いていませんから、うまく動いてるんだかどうなんだか外から見てもよく分からないので、これは重要です。
この環境のセットアップについては Google先生に聞いてみてください。
書き込み環境
出来上がったプログラムは ATtiny10 に書き込んで使うわけですが、このためにプログラマーという機器が必要です。
Atmel社から純正のプログラマーとして AVRISP mkII というのが出ていましたが、今自分が使ってるのは USBASP というやつです。
AVRISP mkII の方は Atmel Studio が直接サポートしてる点が便利ですが、書き込み時にマイコンへ電源を供給してくれなくてちょっと面倒ですし、大体ちょっとお高いですし今は入手もしづらいです。
USBASP は書き込み時にマイコンへの電源供給もできて便利ですし、これ自身の回路図やファームウェアが公開されていて、あちこちで同じものを作って安く売ってます。Amazon でも AliExpress でも USBASP で検索すれば非常に安く見つかることが分かると思います。
なお、USBASP本体、フラットケーブル、10pin – 6pin 変換アダプタのセットを買っておくのが間違いないです。あと USBASP 自体のファーム書き換えを行う必要があるかもしれないので、2個買っておくのがよいと思います。
USBASP を使って書き込むには avrdude というコマンドラインツールを使って書き込みますが、これを Atmel Studio の外部ツールとして登録しておけば手間なく書き込みを行うことができます。
このような設定についても Google先生に聞いてみてください。
ちなみに、USBASP に似た USBISP というのもありますが、これは同一品ではありません。使い方も違うようですが、そちらの使い方が分かれば多分同じように使えるんじゃないかと思います。でも自分は使ったことが無いので分かりません。
購入の際はよく確認してください。名前も見た目も違いますから、よく見れば分かります。
ATtiny10 とプログラマの接続
書き込み時のプログラマの 6pin コネクタと ATtiny10 のピンアサインはこんな感じです。
ATtiny10 とプログラマは以下の接続で書き込むことができます。
ATtiny10 | USBASP | AVRISP mkII |
---|---|---|
1 TPIDATA | 4 MOSI | 1 MISO |
2 GND | 6 GND | 6 GND |
3 TPICLK | 3 SCK | 3 SCK |
5 VCC | 2 VCC | 2 VCC |
6 RESET | 5 RST | 5 RST |
プログラマによって TPIDATA に接続する信号線が違うのがハマりポイントだと思います。
MISO と MOSI の両方を抵抗を介して TPIDATA に接続すると両対応にもできるっぽいですが、抵抗 2本と言えどわざわざ部品を増やしてまでやる価値を感じないので私は決め打ちで繋いでます。AVRISP mkII が面倒でもっぱら USPASP しか使ってないって事情もあります。
書き込み時には ATtiny10 に 5V を供給する必要がありますが、USBASP なら 5V出力のジャンパーを繋いでおけば USBASP の VCC 端子から電力供給されます。
一方で USBISP mkII は電源供給してくれないので、マイコン側で別途 5V 供給する必要があります。これが面倒ポイントです。もちろん USBISP mkII を電源供給仕様に改造してしまうという手もあるのですが、そんなことしなくても USBASP が安いですし。
なお、ATtiny10 の RESETピンを GPIO にしてしまった場合、USBISP mkII と USBASP のいずれもそれ単体ではプログラミングできなくなります。このような設定にした ATtiny10 はプログラミング時に RESETピンに 12V を加える必要があり、これらプログラマはその電圧を出力できないからです。スペック上の GPIO 4pin というのは RESETピンを入れての数なので、RESETピンは温存してできるだけ 3pin までにしておくのがよいのではないかと思います。
使ってみる?
ここまでで ATtiny10 のことをざっくり書きましたが、右も左も分からない人へ説明するための内容にはなっていないと思います。環境構築については具体的な手順のひとつも書いていません。というのも先人たちが導入方法も含めて良い記事を書いてくれているので、それを焼き直すつもりは無いからです。ここでは電子工作経験者に ATtiny10 を使うまでのイメージと興味を持っていただけたら幸いです。
このブログの方針としても、ATtiny10 を使うならば、もっと優れた手ごろなマイコンがある中であえてこれを使う面白さのようなものを書きたいと思っています。