ATtiny2313を100個買うのが流行っている(2)


さっそく書き込みテストをするのだが、以前買ったATtiny2313が何故かAVRWRTで認識しないものが一つあった。たぶん、外部クロック設定にしてしまっているのだろうと思い、セラロックを取り付けたら書き込めるようになった。


外部クロック設定なんかにしちゃいかん!たかが90円のマイコンに50円もするクリスタルをつけるのは(値段的な)バランスが悪すぎる!と思ってヒューズビットを書き換えることにした。


外部クロックになってるので、これをなおすには…CKOUTこれかいな?CKはクロックで、OUTは外部…チェック入ってないけど、負論理なんかなと思ってチェックを入れたら、セラロックをつけても認識しなくなった。



データシートを調べてみたら、クロックを出力するための設定だった。出力するだけならいいのだが、クリスタルを取り付けるはずのピンに出力するので、外部クロック設定にしている状態でCKOUTにチェックを入れてヒューズを書き換えると、パラレルライタがないと復旧不可能になるようだ。(?) (追記。謎電の高橋さんから指摘をもらったが、CKOUTで出力されるのは6番ピンのようだ。ということは動かないのはおかしいのだが、要するに壊れたのだろう。ひょっとしたら壊れてないかも知れないが、壊れたことにしよう。何せ1個90円のデバイスなので…)


さっそく1個返らぬ人となったわけだが、1個90円なので気にしない!
これが1200円ぐらいする石だったら悔しくて夜も眠れないところだ。


秋月のFT232RLモジュールはディフォルトではFTDI社のVenderIDになっている。これは適当なIDに変更しておいたほうがいいだろう。(変更方法 → http://d.hatena.ne.jp/yaneurao/20080630)


そうこうしているうちに、COMポートをOpenして数秒後にエラーが出るようになった。



原因不明。しかも、データ長として5bitを指定するとOpenのときに「無効なパラメータ」というエラー(例外)が出る。


何かドライバの上書きでおかしくしてしまったのかと思ってFTCleanというFTDI社のドライバを一掃してくれるツールでドライバ削除する。(FTCleanの使い方などについては → http://www.hdl.co.jp/USB/ftcln/index.html)


Yesを適当に押していくが、削除されないなぁと思ってよく読むと…



「ドライバのアンインストールをcencelしたいのか?」
何も読まずに「Yes」押してたよ(´ω`)


FTDI社のドライバを使っているハードは結構多い。全部消したつもりだが、上のエラーは解消しない。


一度、System.UnauthorizedAccessExceptionが出ても再度Openすればあとは普通に通信出来ているようなので、そういうものだということで我慢する。


それにしても、このエラー、気持ち悪い。


serial.Open(); // ←ここで例外発生
}
catch (System.UnauthorizedAccessException)
{
serial.Dispose();
// ↑何故かcatchされたときに
// serial==nullになっていて
// ここでNullReferenceExceptionが発生。

ありえない。 何かメモリを破壊されているのだろうか。Googleで検索したら、同じ現象だと思われる、SerialPortのOpenに失敗するエラーは山のように掲示板に質問が投稿されていて、それでいて、まともな解決法は誰も答えられない。(まあ、ドライバか何かを壊しているのだろうし…)


P/InvokeでCreateFileを使ってやればそんなことは起きないので、bug持ちの .NET Framework のSerialPortクラスを使うべきではないと書かれているサイトもある。SerialPortクラスと同等のクラスを作るのは結構骨の折れる作業だ。そこまでしないといけないものなのかは私にはわからない。


(つづく)