内容
序 2008-05-08 †
このプロジェクトは,昔,PIC16F84用にアセンブリ言語で書いた自作エレキーをSDCCに移植して,他のPICに移植しやすいようにします.16F88や12F683など,16F84(A)よりも高機能のPIC用に移植してから,エレキーの機能を追加します.
これは,一連のPICのソフトをC化するプロジェクトの一巻です.
回路図 †
昔から使っている回路です. → PIC/ELEKEY
16F84Aでも大丈夫です.
トランジスターは,2SA, 2SCで,HFEがある程度高ければ,何でもOKです.
消費電流は8.5mAあります(実測値)ので,固定局・常置場所・モービルでは問題ないですが,バッテリー運用などにはもう少し減らしたいところで す.それは,12F683, 16F88に移植するときにできると思います.5V以外の電源の場合は,78L05(78L005)で十分です.
16F84(A)のMCLR(4ピン)につながっている抵抗2本,電解コン,ダイオードはなくても動くことがありますので,最初は直接VDDにつないでみてください.起動しなければ,付けてください.
*1は,セラミック発振子(振動子)です.クロックに依存しませんので,使用するPICの仕様の範囲(4〜20MHz)でOKです.
どこの会社のものもセラロックと呼ぶ人が多いですが,セラロックは村田製作所の商標です,念のため.
手順 †
- アセンブリ言語で書いたプログラムをHi-Tech社PICC-Lite用に書き直す
- 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化 †
スタートしないまま^^;