ATtiny13のゆるゆる万歩計デバッグ。音源とオーディオの電子工作(予定)ソフト屋がハードにはまっていく軌跡2014年9月10日水曜日ATtiny13のゆるゆる万歩計デバッグ。ゲストの冨塚電磁です。えー、常々ATtiny13はたいした奴だと思っております。電源GNDを取ったら6ピンしかないが全部双方向に使える。LEDくらいなら楽々駆動できる。ATtiny2313にはついていない、10ビットADコンバータを4つも持っている。秋月で一個50円(笑)でもね、デバッグどうしようかいつも悩むわけですよ。単純に温度センサーからの入力が、どんな範囲でAD変換されるのかチェックしたい。それだけなのに、なーんかめんどい。だいたいデータ取り出しのためだけに何本もピンをとられたら本末転倒。メモリ空間もたかだか1kバイトしかないので複雑なプロトコルも組みたくない。そこで、手軽に実行時の数値取り出しを行える手段を考えてみました。この方式の便利なのは、1、表示装置が108円で済む。2、表示装置側のプログラミングは一切不要。3、tiny13側のプログラムがアホみたいに軽い。4、tiny13側はポート1ピンしか食われない。(残り5ピンはそのガジェットにフルに供することができる。※アイディアの元は、2011年にいろいろやってた、ガイガーカウンタ。実験回路ではGM管が放射線を検知した際に発するパルスを万歩計に入れてカウントし、それを単位時間あたりに換算して、放射線量を測定するという実験をやっていたのです。手軽に入手できる、ダイソー万歩計(スタイリッシュ歩数計)。1.55Vの電池もついています。バラすと、シンプルの極地です。ボタン電池の実装方法は真似したい。右下のスイッチはリセットスイッチです。0.5秒程度長押しするとカウンターがリセットされます。リセットスイッチ左ピンの信号線(Rstと呼称)を右ピンGNDと同じレベルに落とすとスイッチを押したことになります。歩数カウンタのほうですが、左側のなにやら怪しげな錘とバネのついた機械的機構で振動を電気的なパルスに変えます。バネとGND信号線が共通である本田宗一郎的思想に感動します。こちらも赤いラインの信号線(Sigと呼称)を黒いラインのGNDに落とすことでパルスがはいります。ピンヘッドつけて改造し3線でブレッドボードに差せるようにします。実のところ回路図など書くまでもありません。[GND]のピンヘッドは基板上のスイッチのランドに直づけしています。カウントアップの信号線Sigとリセット信号Rstはめんどいのでまとめてしまいました。(こちらからは見えませんが赤いSigラインはRstの基板上ランドにハンダづけされております。省いて外部電源供給なしで付属のボタン電池駆動でも問題ありません。2−3時間ほったらかしでグルグル放置で寝てても健気に動いてました。tiny13のプログラム側は10.5秒以上の幅の0パルスをRstに送り長押しを再現、万歩計のカウンターをリセット2確認したい変数の値分、0.1秒以下の幅でSigにパルスを送る。(同一ピンに改造されていますが、短いパルスではRstは反応しません)そんだけです。プロトコルもへったくれもなく全く以て原始的です。鐘や太鼓で時間を知らせるとか、狼煙を何本上げるとか、そんなかんじ(笑)☆問題は万歩計がそれほど高周波のパルスを受け付けてくれない(せいぜい秒間十数パルス)ことで、速すぎるととりこぼします。(サンプルソースの例では、クロック周期を司るclkwaitの値が10以下になると取りこぼし始めます)我慢できるレスポンスが数秒程度と考えるならば、実用になるのは、5-6ビット幅までのレジスタ値かと。測定結果の気温とか、電圧とかならいいのかもしれません。値が変化したときだけ表示を書き換えるようにすると良さそう。10ビット幅(最大1024)などチェックしようものなら2分くらいかかります。(下のサンプルを実行した結果です。)しかし、1ピンのみの占有でLEDなら1bitしか出せないのを時間さえかければ数ビット分引きずりだせるわけです。...10ビット幅もデバッグのみに使うなら5ビットづつ2回に分けてあとは手計算という手があるか。サンプルの例ではoutvalという変数に入れた数値の数分、tiny13の3番ピンPort4で万歩計の[Sig/Rst]を叩いて値を出しています。実用的には各種センサのAD変換値や計算結果などをoutvalに入れて表示という流れになるかとおもわれます。興味の矛先(万歩計液晶)tinyぴゅんぴゅん。tinyぴゅんぴゅん。I2Cの5V↔3.3VレベルシフトまだしつこくSinテーブルやってたり。電位をずらして三端子レギュレータを入れてみるSinテーブルを極限まで(?)小さくする。(2)Mixerの電源ACアダプタ計画ATtiny13のゆるゆる万歩計デバッグ(その2)ATtiny13のゆるゆる万歩計デバッグ。