エレキー(新)

内容

序 2008-05-08 †

このプロジェクトは,昔,PIC16F84用にアセンブリ言語で書いた自作エレキーをSDCCに移植して,他のPICに移植しやすいようにします.16F88や12F683など,16F84(A)よりも高機能のPIC用に移植してから,エレキーの機能を追加します.

これは,一連のPICのソフトをC化するプロジェクトの一巻です.

回路図 †

昔から使っている回路です. → PIC/ELEKEY

Elekey-16F84

16F84Aでも大丈夫です.

トランジスターは,2SA, 2SCで,HFEがある程度高ければ,何でもOKです.

消費電流は8.5mAあります(実測値)ので,固定局・常置場所・モービルでは問題ないですが,バッテリー運用などにはもう少し減らしたいところで す.それは,12F683, 16F88に移植するときにできると思います.5V以外の電源の場合は,78L05(78L005)で十分です.

16F84(A)のMCLR(4ピン)につながっている抵抗2本,電解コン,ダイオードはなくても動くことがありますので,最初は直接VDDにつないでみてください.起動しなければ,付けてください.

*1は,セラミック発振子(振動子)です.クロックに依存しませんので,使用するPICの仕様の範囲(4〜20MHz)でOKです.

どこの会社のものもセラロックと呼ぶ人が多いですが,セラロックは村田製作所の商標です,念のため.

手順 †

  1. アセンブリ言語で書いたプログラムをHi-Tech社PICC-Lite用に書き直す
  2. SDCC対応にする

という二段階で行います.第1段階がなかなかたいへんです.

PICC-Lite対応化 †

ようやくできたように思います(2008-05-10).どうも,残っていたアセンブリ言語のソースが最終版ではないようで,きっちりCに置き換えただけでは,まともに動いてくれませんでした^^; 最後の短点が一回おきに抜けたり,打ってもいない長点がでたり.

現用のエレキーのソースはない,ということになりそうで,すごく工夫を凝らしたはずなのに,どう工夫を凝らしたか,永遠のなぞとなりました.

しかし,エレキーの場合,かなり工夫しても,打ち心地の差はそれほど大きくないので,あきらめます^^;

ソースは,なるべく早いうちに公開します.ほぼIambic Aに近い打ち心地です.Iambic Bに慣れている人には打ちにくいでしょう.

SDCC対応化 †

実は,PICC-Liteの前に,先にSDCCで書き始めていたのです.SDCCで,よく解らないトラブルに見舞われ,PICC-Liteに移行しました.

ですが,その後SDCCのトラブルも解決したため,PICC-LiteからSDCCへの移行は,ほとんど何もしないで完了しました.

最適化がPICC-Liteより劣るSDCC用にしても,まだプログラム領域は半分以上空いていますから,いろいろなことができます.

しかし,SDCCに持ってきたのは,16F84(A)でいろいろなことをやるためではなく,12F683や16F88に移植するためですので,しばらく打ち心地を確認して,ベースとなるCのコードは完成とします.

ソース †

最終確認中です.

動作概要 †

両方のパドルが押されているとき(スクイーズ時)は,現在の符号が終わって短点1個分のスペースが終わった時点で,パドルをみて次の符号決定します.

もしパドルが片方しか押されていなけば,今出ている符号の開始時から反対のパドルをチェックして,押されれば次の符号は,反対の符合になります.

ただし,スクイーズ時で,長点が出ているときには,符号の2/3が終わったところから,短点のチェックをします.こうしないと,長点の次に短点で終わる符号の短点が足りなくなります.

実際に打ってみると,Iambic Aの動作とほぼ同じです.Iambic Aに慣れた人ならば打てます.微妙に違いがあって(というか,Iambic A/Bをうたっているキーヤーでもそれぞれ微妙に違います),私が打つ限りは,Iambic Aよりもエラーが少ないです.

未だ動作が怪しい→解決 2011-01-19 †

スクイーズ時のみ,長点の2/3送出以降,短点をメモリーするというのは,具体的には,スクイーズ時に2/3の時点で短点メモリーをクリアするのです.

2/3の時点で完全にスクイーズしていないと,それ以前の短点メモリーはクリアされません.実際に打ってみると,例えばTUと打つとTFというように,短点が余計に出がちです.

ということで,スクイーズしてなくても,長点の2/3送出時に短点メモリーをクリアする,ということで,いちおうの解決を図りました.

12F683化 †

スタートしないまま^^;