HOME 2015/4/24
TS780用レピーター トーン88.5Hz発信機の作成
TS780を修理したのですが、TONEスイッチはあるのですが、ユニットはオプションで内蔵していません。
レピーターアクセスのため88.5Hzのトーン発信機を作成しました。
PIC 10F322 ¥45のNCOを使ってみました。
電源は5Vでないので定電圧ダイオートを使用して減圧
クロックは内蔵オシレーター
http://www.geocities.jp/zattouka/GarageHouse/micon/MPLAB/12F1501/NCO/NCO.htm
を参考にしました。
88.5Hzは1/88.5=11.23ms 50%ですので11.23/0.5=5.65ms
クロック31Khzの場合は1/31000=32.26ms
5.65/32.26=175 1048575/(175-1)=6026
クロック2Mhzの場合 1/2M=0.5ns
5.65/0.5=11300 1048575/(11300-1)=92
クロックはどちらにしようか迷いましたが31Khzで作ってみました。
ICから出力される信号は方形波ですのでCRフルターで少し丸くしました。
少々低い88Hz位が出力されています。レピーターアクセスしてみると反応しますのでOKとします。
クロックは工場出荷時に+-1%に校正されています。
#include <xc.h>
#pragma config FOSC = INTOSC // Oscillator Selection bits (INTOSC oscillator:
CLKIN function disabled)
#pragma config BOREN = OFF // Brown-out Reset Enable (Brown-out Reset disabled)
#pragma config WDTE = OFF // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = OFF // MCLR Pin Function Select bit (MCLR pin function is
digital input, MCLR internally tied to VDD)
#pragma config CP = OFF // Code Protection bit (Program memory code protection
is disabled)
#pragma config LVP = OFF // Low-Voltage Programming Enable (High-voltage on MCLR/VPP
must be used for programming)
#pragma config LPBOR = OFF // Brown-out Reset Selection bits (BOR disabled)
#pragma config BORV = HI // Brown-out Reset Voltage Selection (Brown-out Reset
Voltage (Vbor), high trip point selected.)
#pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection
off)
// メインの処理
void main()
{
OSCCON = 0b00000000 ; // 内部クロックは31KHzとする
ANSELA = 0b00000000 ; // アナログは使用しない(すべてデジタルI/Oに割当てる)
TRISA = 0b00000000 ; // ピンは全て出力に割当てる(RA3は入力専用)
PORTA = 0b00000000 ; // 出力ピンの初期化(全てLOWにする)
// NCOの設定
NCO1ACCL = 0 ; // アキュムレータレジスタ(下位バイト)初期化
NCO1ACCH = 0 ; // アキュムレータレジスタ(上位バイト)初期化
NCO1ACCU = 0 ; // アキュムレータレジスタ(最上位バイト:bit3-0)初期化
NCO1INCH = 6026 >> 8 ; // インクリメントレジスタ(上位バイト)初期化(10KHz出力)
NCO1INCL = 6026 & 0x00ff;// インクリメントレジスタ(下位バイト)初期化
NCO1CLK = 0b00000001 ; // CLCのクロックはFoscとする
NCO1CON = 0b11000000 ; // CLCは有効でピンに出力する、固定デューティサイクルモード
while(1) {
}
}