PIC/Proj2

序 2008-05-08

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

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

回路図

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

Elekey-16F84.png

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よりもエラーが少ないです.

12F683化


Attach file: fileElekey-16F84.png 134 download [Information]

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2008-05-18 (Sun) 13:42:05 (552d)