Superb Garbages 2

千野純一(chinorin)のはてなダイアリーの続きです。

ソフトでもハードでもATtinyをつけたまま

  • マイコンやってて一番面白いと感じるのは、どこまでハードウェアで実装してどこからソフトウェアで処理するかという境界線の自由度が高いところだ。もう線だけ繋いでチャタリングとかの諸問題はプログラムで対策することを選んでもいいし、回路をきっちり設計して単純で見通しのいいプログラムを書いてもいいし、その中間のうまい落とし所があればそれを選んでもいい。
  • というわけで、今のところは回路設計というものが新鮮で楽しいのでできる限りハードウェアで解決しようと試行錯誤しているが、複数のマイコンを組み合わせることを検討するのもなかなかエキサイティングだ。
  • 例えば今ロジック系のICを全然持ってない。いざというときのために論理ゲートくらいはひととおり揃えておくべきなのか…? とか考えながら集積回路の値段とか見てたら、ATtiny13とかの廉価マイコンチップがロジックICと同じかむしろ安いくらいの値段(60円とか)で売ってることに気づいてしまった。これをいくつか持っておいて、必要になったときに論理ゲートと同じ動きをするプログラムを書き込めばそれで済むのではないか。気分気分FPGAチックアハンである。
  • さすがにシュミットトリガとかをプログラムするのはめんどくさそうだけど⋯⋯いや、アナログ入力から電圧を見るだけだから逆にソフトの方が得意っぽい感じがしなくもないな。って、はあ? AVR(ATナントカっていうシリーズのマイコン)って全ピン必ずシュミットトリガなの? へえ、そうなんだ⋯。
  • それよりもATtiny13は使えるピンが5本しかないこととかプログラム領域が1KBしかないこととかの方が問題かもしれない。でもまあ5本のうちの3本はアナログ入力として使えるみたいだから、何らかの方法で入力ごとの電圧を変えることでなんかうまいことやれるんじゃないかとも思うが。

 

  • 前回の誤り:MCP23017を複数接続するときは、A0~A2という名前の3つの入力ピンでそのシリアル通信内でのユニークなアドレスを設定します。具体的にはA0~A2のHIGH/LOWを二進数として扱って0x20に足します。これにより0x20~0x27というアドレスで同時に8個のMCP23017を使用することができます。4個ではないです。つまりたった2ピンを占有するだけで新たに16×8=128のI/Oを追加することができるわけだ。
  • ちなみにMCP23008っていうMCP23017のポート数が半分になったバージョン(つまり8ビットI/Oエクステンダ)というのもありまして、そちらも同じように同時に8個使うことができ、調べたらアドレスも0x40~0x47というMCP23017と重複しない数字だったので、両方8台ずつ使うことでえっと……128+64=196ピン増えるのかな。つーかそもそもマイコンをI2Cのスレーブノードにすることも可能で、I2Cのアドレスの規格上最大112個までいけるそうだし以下略。