なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

バイナリモールス符号

Posted by arms22 on 2008年02月19日 5  0

PICのプログラムを効率的にデバッグする方法考えています。LCDやSIOを接続するには8pinのPICではポート数が足りないしROM容量も限られています。もちろんデバッガもありません。

最初に考えたのはLEDの点滅回数で数値の1桁を表す方法。RAMの内容を数値3桁(0~255)分のLEDの点滅で表現する。
例えばFFなら次のようになる。

110001111100011111000
1はLEDの点灯を、0はLEDの消灯を表している。これならPICでも簡単に実装できるし、読み取りもLEDの点滅回数を数えるだけなので楽だ。
もう少し細かい仕様を決めると次のようになる。
  • 数値の1桁をLEDの点滅回数で表す
  • 点滅は300ms点灯、300ms消灯
  • 数値の0は1500msの点灯で表す
  • 桁間は1000msの間隔をあける
でも、もっと良い方法ないかな~と考えていて、ふとモールス信号を思い出した。

モールス信号は短点(・)と長点(ー)の組み合わせでアルファベットや数字、記号を表現する。例えば'a'は'・ー'、数字の'0'は'ーーーーー'と表現する。このモールス信号をそのままLEDの点滅で表現してしまうと読み取りが大変なので少し簡略してみる。

短点(・)を1、長点(ー)を0としてバイナリとして扱うと読み取り易いかもしれない。
数値が小さいほど符号は短くなる。また、点間は短点と同じ間隔をあける。ワード間は短点7つ分の間隔をあける。間隔の仕様はオリジナルのモールス信号と同じだ。
0 ー
1 ・
2 ・ー
3 ・・
4 ・ーー
5 ・ー・
6 ・・ー
7 ・・・
8 ・ーーー
9 ・ーー・
A ・ー・ー
B ・ー・・
C ・・ーー
D ・・ー・
E ・・・ー
F ・・・・
AA(8bit)は次のようになる。
・ー・ー・ー・ー
DEADBEAF(32bit)は次のようになる。
・・ー・・・・ー・ー・ー・・ー・・・・ー・ー・ー・・・・
32bitまでワード長を伸ばしてしまうとわかり辛い。4bitワードか8bitワードが丁度よいワード長になる。ちょこっと実装してみて使ってみよう。

関連URL:
モールス符号 - Wikipedia

Ads by Google

5 Comments

居酒屋ガレージ店主(JH3DBO) says...""
こちらでは、電池電圧のチェックで数値表示の補助として、
モールス符号数字の略体による音報知を行っています。
http://www.oct.zaq.ne.jp/i-garage/tool/batvck.htm

モールスに馴染んだものとしては、新しい符号を理解するというのは大変。
A~Fの符号で数字略体と重なるのがあるので、16進報知
はやっかいですね。
数字を普通の符号にすると「0,1,9」が思いのほか長くなってしまいます。
数字略体と重なるのは「A,B,D」の3つ。
2008.03.02 07:18 | URL | #- [edit]
居酒屋ガレージ店主(JH3DBO) says...""
トラックバックがうまくいかないので、こちらの記事を記しておきます。
http://blog.zaq.ne.jp/igarage/article/1071/
2008.03.02 07:33 | URL | #- [edit]
arms22 says...""
居酒屋ガレージ店主さん、コメントありがとうございます。
バイナリ符号は読み取りにメモが必要なので少し使いにくい感じでした。点滅回数を数えるほうが直感的でわかり易いです。
モールス数字の略体はこの機会に覚えようと思います。
2008.03.02 23:53 | URL | #j7sy4omY [edit]
居酒屋ガレージ店主(JH3DBO) says...""
デバッグ用に特化するのなら、単純にシリアル出力のほうがよいのでは。
高速ボーレートだとタイミング誤差が心配ですが、110bpsあたりまで落とせば、
PCのCOMポートで拾うのは可能だと思います。

シリアル出力機能付きのマイコンを使うのが良いのでしょうが、小ピンタイプの
ものだと、ピンの割り当てに制限がありますし。
ソフトでタイミングを作ると、文字出力処理中に割り込みが入るとタイミングが変わってしまいます。

モールス絡みといえばこんなのはいかがでしょう?
http://rd.vector.co.jp/soft/dos/home/se023227.html
http://homepage3.nifty.com/act-ele/morex1/morex1.htm
http://homepage3.nifty.com/act-ele/elkey04b/elkey04c1.htm
2008.03.04 06:33 | URL | #- [edit]
arms22 says...""
RS232C→TTL変換用の基板が手元になかったので、LEDとモールス信号にこだわってみました。
デバッグ用にシリアル出力できる環境を整えておいたほうがよさそうですね。

>モールス絡みといえばこんなのはいかがでしょう?
ありがとうございます。がんばります!
2008.03.04 14:24 | URL | #j7sy4omY [edit]

Leave a reply






管理者にだけ表示を許可する

該当の記事は見つかりませんでした。