先日の実験で古いPIC16F84Aのソフトだけで無線機用の25KHzのマーカーが作れそうだったのでHFの無線機IC-741オプションのマーカーユニット「IC-EX241」のコンパチ品を作ることにします。
組み立てする前に100KHzと25KHzを切り替えできるソフトをつくりました。
ブレッドボードで評価用の回路を作ります。


事前の実験ではマイコンのタイマ割り込み機能を使って正確な時間の割り込みをつくりましたがいろいろ試した末、割り込みは使わずに100KHzと25KHzを切り替えます。
オシロスコープの波形も狙い通りになり、実用範囲です。




何とか納得のいく動きがでましたので無線機に搭載させる為の回路設計をします。
IC-741オプションのIC-EX241の互換品をと考え、まずEX241の回路図を参考にする為にネットで探しましたが見つかりません。
IC-741本体側の回路と操作説明から推測した所、どうやら次の仕組みになっている様です。
・受信時の8Vを100KHz側か25KHz側に供給しマーカーを動作させる。
・マーカー発信周波数の調整はトリマコンデンサではなく、バリキャップで行い、調整用制御電圧をIC-741本体側から供給する。
・出力信号はRFユニットのバンド切り替えの共通部に繋げる。

これを踏まえて書いた回路図がこれ。

IC-EX241の基板サイズは 約37mmx41mmくらいの様です。
年末のお楽しみ作業として無線機の中を確認しつつ基板製作していく事にします。


動作ブログラムは整数型C言語です。
興味のある方はここにあるpic_cc-0.4.tar.gzをご参照ください。
http://www.ibiblio.org/pub/Linux/apps/circuits/

・・・と書いておいて何ですが、ここのソースをLinux系OSでコンパイルして利用されている方はどうやら居らっしゃる様なんですがWindows10にmingw64をインストしてgccでmakeしてpic_cc.exeを作っても動作しませんでした。
結構時間かけていろいろ試したんですがダメなので諦めました。(現在公開されているgccのmingw64環境に問題がある様に思えます)
実は、pic_cc-0.4.tar.gzを展開した中の
./pic_cc/orig/JFavata/SOURCE/PIC_CC.EXE
がそのまま利用できます。
ただ、旧の16bitアプリの為、16bit環境でしか動作しないので64bit版Windows10のコマンドプロンプトでは動作しません。
32bit版のWindows10だと16bitコードをサポートしているため動作する事を確認していますがこれも時間の問題でしょう。
MSDOS-PLAYERというMS-DOSシミュレーターがあり、64bit版Windowsで利用できます。
MSDOS-PLAYERはここを参照してください。(MSDOS-PLAYERの作者に感謝)
例えば「pic_cc test.c」なら「msdos pic_cc test.c」と打てばコンパイルできtest.objが書き出されます。
このtest.objがPIC16F84Aのアセンブラソースなので別途アセンブラでHEXファイルにすればPICライタで書き込み動作できます。

参考までに今回作ったC言語のソースとPIC書き込み用のHEXファイルを下記に張り付けておきます。
「marker.c」と「marker.hex」としてコピペ保存してください。
(但し、処理速度の関係でC言語の中にアセンブラを混ぜてます)

---------------------------- ここから「marker.c」 -----------------------------------
#include "io.c"
#include "stdio.h"

static int b;

/* 割り込み処理ルーチン・・・・・未使用です。
   エラーが出るので消さない事                */
#asm
interrupt
#endasm

main(){
    int i;

    SetP_A(0xf8);        /* Port A Set   0,1,2 :OUT   */
    SetP_B(0xfc);        /* Port B Set   0,1: OUT  2-7 :IN    */
/* 100KHz or 25KHz clock!! */
        if((RdPortB() & 0x08)==0x00){
            b=1;
        }else{
            b=0;
        }

    while(1){
        if(b){
/* 25KHz PB3=L */
#asm
    bsf    05h,0            ;pulse out to H
        clrwdt            ;ウオッチドッグ
    bcf    05h,0            ;pulse out to L
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
#endasm
    i=i+1;                /* adj time */
    i=i+1;                /* adj time */
        }else{
/* 100KHz PB3=H */
#asm
    bsf    05h,0            ;pulse out to H
        clrwdt            ;ウオッチドッグ
    bcf    05h,0            ;pulse out to L
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
        clrwdt            ; adj time
#endasm
        }
    }
}

-------------------------  ここまで  -----------------------

-------------------------  ここから「marker.hex」  -----------------------
:020000000A28CC
:02000800F328DB
:100014002B30AB0069200D28AB032B0884002F087C
:10002400800008002B0884000008AE00AB0A08001A
:100034002E0884002F08800008002F088400000880
:10004400AF0008002F08AC002E08AF002C08AE004B
:1000540008002B0884000008AC002F0880002C083E
:04006400AF000800E1
:100080000030AF002B08AF071F202F0865000800C5
:100090000030AF002B08AF071F202F0866000800B4
:1000A00008000508AF0008000608AF00080000308F
:1000B000AF002B08AF072F08840000088500080058
:1000C0000030AF002B08AF072F088400000886001F
:1000D00008000130AB02F830AF000E2040200130A4
:1000E000AB07FC30AF000E2048200130AB070030DA
:1000F000AF002F088F0054200E200830AF001420CE
:100100002E08AF050E200030AF0014201B212F0851
:1001100003198F280130AF002F089000932800307A
:10012000AF002F0890000130AF002F080319F0280E
:100130001008AF002F080319D42805146400051017
:10014000640064006400640064006400640064008F
:1001500064006400640064006400640064000030B3
:10016000AF002B08AF070E200130AF002B08AF0700
:100170001F200E200130AF0014202E08AF071420DE
:100180001A200030AF002B08AF070E200130AF005F
:100190002B08AF071F200E200130AF0014202E08BF
:1001A000AF0714201A20EF2805146400051064001E
:1001B000640064006400640064006400640064001F
:1001C000640064006400640064006400640064000F
:1001D00064006400640064006400640064009328A8
:1001E0000130AB0708000130AB020030AF002B0834
:1001F000AF070E200030AF0014201A200030AF00EF
:100200002B08AF071F200E20FF30AF0014202F2136
:100210002F08031D172918290030AF002B08AF073E
:100220000E201F20AF0A14201A20AF03FE280C292D
:100230000130AB0708002E082F02031922290030D5
:10024000AF008A1B0130AF0008002E082F02031DEB
:100250002C290030AF008A1B0130AF0008002F08A6
:100260002E02031C36290030AF008A1B0130AF007C
:1002700008002E082F02031840290030AF008A1B07
:100280000130AF0008002E082F02031C4A2900305D
:10029000AF008A1B0130AF0008002F082E020318A0
:1002A00054290030AF008A1B0130AF0008002F082E
:1002B000031D5C290030AF008A1B0130AF0008002D
:1042000000000000000000000000000000000000AE
:10421000000000000000000000000000000000009E
:10422000000000000000000000000000000000008E
:10423000000000000000000000000000000000007E
:10424000000000000000000000000000000000006E
:10425000000000000000000000000000000000005E
:10426000000000000000000000000000000000004E
:10427000000000000000000000000000000000003E
:084000007F007F007F007F00BC
:02400E00F13F80
:02FFFE0084007D
:00000001FF
-------------------------  ここまで  -----------------------