きっかけは、Arduinoなどのマイコンを販売していらっしゃる、スイッチサイエンスさんの金本社長が
と呟いたことでした。まさに今AT90USB162が熱いとき、このビッグウェーブ?に乗らないワケにはいきません。
ということで、金本社長におねだりしました。
これ。Postachioです。2年ほど熟成させたとのことですが、リセットボタンが付いていませんでした。あと、USBに刺すとぐらぐらします。だが、使いやすいようにすることから電子工作ははじまります。
ということで、リセットボタンを探してきました。秋月電子さんで売っている、「超薄型押しボタンスイッチ(タクトスイッチ)」がピッタリです。
USBグラグラ問題は、
こんな感じでコネクタ幅に合わせて切った 0.5mm厚のプラ板を裏面に両面テープを貼り付ければOKでした。目測だったのですが、まさにピッタリでUSBコネクタにピッタリ納まってくれるようになります。
あとは、コードを書いてMacでのコンパイルですが、avr-gccというコンパイラを使ってAT90USB162のバイナリが作れそうだということまでは分かったのですが、MacPortsでインストールしたavr-gccはAT90USB162のバイナリを吐いてくれませんでした。そこでリサーチしたところ、CrossPack for AVR®というものが対応しているということが分かりました。
インストールして、
/*
* Pistachio LED Blink
* @ytsuboi https://www.ytsuboi.org/wp/archives/1858
*/
#include
#include
#include
#include
void wait()
{
volatile long t;
for(t=0;t<10000;t++){
;
}
}
void main(void)
{
unsigned char i;
DDRB = 0x20;
while(1){
for(i=0;i<2;i++){
if ( i== 0 ){
PORTB = PORTB | _BV(PB5);
wait();
} else {
PORTB = PORTB & ~_BV(PB5);
wait();
}
}
}
}
[/c]
といったコードを書いてみて、コンパイルをしてやることで、LEDチカチカができました。
MakefileはPublic Domainのものを利用していますので、ここに置いておきます。
こともなげに書きましたが、AVRのコードなんてArduinoでしか書いたことがないので、ポートの入出力の切替など、色々なところで躓きました。
最後に、main.hexをFLIPというWindowsのソフトウェアで転送をします。この段階がWindowsになっちゃうのが悔しいかったのですが、後になって、dfu-programmerというソフトウェアを使えば、Macからも転送できそうだということが判明しています。
して結果は、
こんな感じに、eneloopのUSBコネクタに刺すとLEDチカチカしてくれます。
ちなみに、この動画はiPhone 4で動画を撮ることを先日憶えて、iPhoneのiMovieで編集とYouTubeへのアップロードまでやってみたものです。左手でiPhone 4を保持しているので、右手だけでPistachioをうまく刺せずに苦労しました^^;
あ、そうそう、私はまだLEDチカチカまでしかやってませんが、AT90USB162は割とカンタンにUSBデバイスを作ることができます。HIDでマウスとかキーボードなどなど、遊び方は色々あります。LUFAというライブラリを使えば、かなり省力化して開発をすることもできそうです。
ただ、USBデバイスとして使えるようにプログラムを書き込むと、USBからの書き込みができなくなってしまいます。そういうときには、Pistachioをリセットしてやる必要があります。手順は次の通りです。
- PistachioをPC/Macに接続する。
- リセットボタンを押しっぱなしにする。
- Pistachioの”7″と書いてあるピンをGNDとショートさせる
- リセットボタンを離す。
- Pistachioの”7″ピンとGNDを離す。
Pistachioの裏面には”/HWB”と書かれたパターンがあるので、そこをショートさせるという手もあるのですが、ちょっと操作しづらいので、私はピンを立てちゃいました。
まだこれだけしか遊べていませんが、Arduinoのヌルい環境でAVRを使っていたので、色々なことを学ぶことができました。
ちなみに、Pistachioは試作品段階のようですが、販売も検討していらっしゃるそうなので、出るといいなぁと楽しみにしています。スイッチサイエンスさんから出たら、皆さんも遊んでみてください。
0 Comments.