ATmegaシリーズを採用し、ボタン一発でコンパイルからプログラム転送までできるArduinoという環境は、とても快適です。しかし、快適なのは最初からブートローダーというのが書き込まれて、大丈夫と太鼓判を押された状態ならではといえます。
秋月のArduino互換キット(公には言ってませんが、事実上互換機といえます。)AE-ATmegaは、安価で魅力的なボードです。最初ATmega168Pでブートローダーを書き込もうとしましたが、全く駄目。signatureがおかしいと言われて書き込みができない。実は168Pは少々やっかいと言われていたので、あきらめて328PにICを変更。それでも書き込みできない。おかしい。みんなできているのにどうして?
その前に168Pを使った自作Arduinoも準備したけど、これも駄目。そのうち、AVRISP mkIIを使ってデーターのやりとりが全くできないチップが増えてきたので、これはもう呪われていると思うようになりました。
MacとUbuntuでコマンドラインによる(avrdude)書き込みを行っていたのですが、どうもおかしい。挙動が安定していない。それどころか、きちんと通信できていない。帰ってくるエラーメッセージは、接続が間違っているんじゃないか? とか、設計がおかしいんじゃない? に近いエラーが帰ってきて、だんだんと気分が落ち込んでくる。ラチがあかないので、Virtual BoxでWindowsを立ち上げて、AVR Studio 6.0をインストール。AVRISP mkIIをつないでsignatureを読み込もうとすると、やっぱり読み込めない。ここで初めてヒントが書かれており、ISPのクロック速度を落としてみてはどうだろうか? みたいな既述を発見。つまり、タイミングが早すぎてきちんとデーターの送受信ができなかったんですね。1Mから250Kまで落としてようやく書き込みOK。この状態で、AVRISP mkIIを外して、ubuntuをインストールしたdynabook AZと接続し、Arduino UNOのブートローダーを書き込むと、見事成功。
工場出荷されたCPUは、どれくらいの速度で動くかまったくわからない。(一応決まっているらしいが・・・) fuse byteを書き間違えると動かなくなるとの既述もあるが、外部クロックを準備していれば問題ないとの情報が多かった。しかし、そのクロックを分周すると、速度が落ちてしまい通信に間に合わなくなるらしい。つまり、購入後最初の書き込みは、比較的遅い速度で書き込みを行う必要があるわけです。一度AVRISP mkIIに速度を設定すれば、速度を記憶してくれるらしい。スケッチのアップロードは別の方法で高速にアップロードできるので、気にしなくてもいいと思う。
ちなみに、コマンドラインで速度を変えるには、
sudo avrdude -c avrispmkII -P usb -p attiny2313 -B 10
のように使うらしい。-B 10 のところね。この設定で100KHzになるらしい。最初だけだから、ゆっくり確実に書き込むということで、いいのではないでしょうか。
秋月のArduino互換キット(公には言ってませんが、事実上互換機といえます。)AE-ATmegaは、安価で魅力的なボードです。最初ATmega168Pでブートローダーを書き込もうとしましたが、全く駄目。signatureがおかしいと言われて書き込みができない。実は168Pは少々やっかいと言われていたので、あきらめて328PにICを変更。それでも書き込みできない。おかしい。みんなできているのにどうして?
その前に168Pを使った自作Arduinoも準備したけど、これも駄目。そのうち、AVRISP mkIIを使ってデーターのやりとりが全くできないチップが増えてきたので、これはもう呪われていると思うようになりました。
MacとUbuntuでコマンドラインによる(avrdude)書き込みを行っていたのですが、どうもおかしい。挙動が安定していない。それどころか、きちんと通信できていない。帰ってくるエラーメッセージは、接続が間違っているんじゃないか? とか、設計がおかしいんじゃない? に近いエラーが帰ってきて、だんだんと気分が落ち込んでくる。ラチがあかないので、Virtual BoxでWindowsを立ち上げて、AVR Studio 6.0をインストール。AVRISP mkIIをつないでsignatureを読み込もうとすると、やっぱり読み込めない。ここで初めてヒントが書かれており、ISPのクロック速度を落としてみてはどうだろうか? みたいな既述を発見。つまり、タイミングが早すぎてきちんとデーターの送受信ができなかったんですね。1Mから250Kまで落としてようやく書き込みOK。この状態で、AVRISP mkIIを外して、ubuntuをインストールしたdynabook AZと接続し、Arduino UNOのブートローダーを書き込むと、見事成功。
工場出荷されたCPUは、どれくらいの速度で動くかまったくわからない。(一応決まっているらしいが・・・) fuse byteを書き間違えると動かなくなるとの既述もあるが、外部クロックを準備していれば問題ないとの情報が多かった。しかし、そのクロックを分周すると、速度が落ちてしまい通信に間に合わなくなるらしい。つまり、購入後最初の書き込みは、比較的遅い速度で書き込みを行う必要があるわけです。一度AVRISP mkIIに速度を設定すれば、速度を記憶してくれるらしい。スケッチのアップロードは別の方法で高速にアップロードできるので、気にしなくてもいいと思う。
ちなみに、コマンドラインで速度を変えるには、
sudo avrdude -c avrispmkII -P usb -p attiny2313 -B 10
のように使うらしい。-B 10 のところね。この設定で100KHzになるらしい。最初だけだから、ゆっくり確実に書き込むということで、いいのではないでしょうか。