PIC16F88のコンフィグレーション - フルバランスアンプ (X_Under bar)

        
2012/02/10

PIC16F88のコンフィグレーション

PIC16F88のコンフィグレーションを考えてみました。
 
下記は、PICの動作モードなどを設定するコンフィグレーションです。


 
__CONFIG(_INTRC_IO & _WDT_OFF & _PWRTE_ON & _MCLR_OFF & _BODEN_ON & _LVP_OFF & _CPD_OFF & _WRT_PROTECT_OFF & _DEBUG_OFF & _CCP1_RB0 & _CP_OFF)
__CONFIG(_FCMEN_OFF & _IESO_OFF)

_INTRC_IO(内蔵クロックを使用:100)
WDT_OFF(ウォッチドッグタイマを利用しない)
PWRTE_ON(起動時電源が安定してから動作開始の指定をする:0)
_MCLR_OFF(マスタ・クリア・リセット無効:1)
_BODEN_ON(瞬停対策リセットする:0)
_LVP_OFF(低電圧書き込み許可指定:0)
_CPD_OFF(EEPROMへのプロテクト無効:1)
_DEBUG_OFF(デバッグ無効:1)
_CCP1_RB0(CCP1の出力ピンの指定:1)
_CP_OFF(プログラム保護しない:1)
_FCMEN_OFF(フェールセーフクロックモニタ無効:0)
_IESO_OFF(クロックの内部・外部切り替え:0)
 
電子ボリュームの流れは、こんな感じに成ると思います。
1. 初期化
2. タイマー(遅延)2秒
3. MUTE信号Hi(1)
4. アナログVR電圧値を読込みA/D変換
5. マップのデータに変換
6. 電子VRにデータを送る
7. アナログVR電圧値を読込みA/D変換
8. 過去に送ったデータと比較して変化が有ったら電子VRにデータを送り書換
9. 7.に戻る
 
 
遅延方法として、遅延関数を作る必要があるのか?
 
次は、タイマーの遅延方法を考えてみたいと思います。

コメント

No title

こんにちは。

コンフィグレーションは、C言語で、下記の程度で良いと思います。(Writerが高電圧書き込みの場合)

__CONFIG(UNPROTECT & LVPDIS & BORDIS & PWRTEN & WDTDIS & INTCLK);

8項の、過去のデータと比較しなくても、一定周期で書き込んだので問題無いと思います。

>遅延方法として、遅延関数を作る必要があるのか?

遅延は、MUTEの部分がメインだと思いますので、単純なループカウンタ程度で良いのでは?

No title

続き

設定するレジスタと初期化データは下記の程度かな?

OSCCON=0x70; // 内部clock 8MHz
INTCON=0x00; // interrupt disable
TRISA=0xff; // PA port は全て入力
TRISB=0xe2; // SD,SCLK,LATCH,MUTEを出力設定
ANSEL=0x02; // AN1(18pin)を選択
ADCON1=0x00; // VCC..GND間レンジ,左シフトデータ選択
ADCON0=0xc9; // AD RC sel,AN1 sel,AD enable

GODONE=1; // A/D start を設定

while(!GODONE) ; // A/D complete 待ち

内部クロックは8MHz選択でも、電子VRのセットアップ・ホールドタイムは確保できると思います。

No title

Chaosさん、 こんばんは、

アドバイス有難う御座います。
PIC 16F88と12F683では、CONFIGの設定方法と設定項が違うのですが、この辺が良く分かりません。16F88だと、ON、OFF設定になっていますね。Chaosさんに書いて戴いたCONFIGで設定します。

使用するクロック周波数ですが、4MHzか8MHzのどちらかで決めようと思っているのですが、今回の様な電子VRの場合はどちらが良いのですか?

MUTEの遅延方法ですが、delay_ms関数を使う予定ですが、この関数の最高遅延時間が25msecと、ネットに有ったのですが、クロックが4MHz~8MHzだとどの位まで、遅延できるのですか? お手数ですが、宜しくお願い致します。

No title

こんばんは。

>4MHzか8MHzのどちらかで決めようと思っているのですが・・・

今回は高速処理を必要とする部分が無いと思いますので、どちらでも構わないと思います。
PICの場合1命令は4クロックで、電子VRのセットアップなどで2uSEC(min)の部分がありますが、これは8MHzの場合でも2uSEC以上かかりそうですので問題無いですね。

>MUTEの遅延方法ですが、delay_ms関数を使う予定ですが・・・

もし、時間が不足でしたら、for loopの中にこの関数を置いて、それを複数回繰り返して必要な時間を得るのが簡単だと思います。

A/Dからデータを取り込んで、電子VRへシリアルデータを送るためのソースを作ってみましたので、必要なら送りますよ。

No title

Chaosさん、 こんばんは、

有難う御座います。

クロックはどちらでも大丈夫ですか、分かりました。
MUTEの遅延は、delay_ms関数をfor loopの中において数回繰り返すのですね。
少し考えてみます。

>A/Dからデータを取り込んで、電子VRへシリアルデータを送るためのソースを作ってみましたので、必要なら送りますよ。
お言葉にあまえて戴けますか、後ほど、メールアドレスをお知らせいたします。

No title

またまた神の領域のお話ですね(笑)わたしなんか自作アンプすら戸惑っていりのに(笑)…

No title

いさおさん、 お早う御座います。

ソフトウェアーは、私もよく分からないのですが、自分のレベルアップを目指して挑戦しています。
いさおさんも自作アンプ頑張って下さい。(^-^)/
非公開コメント

    

プロフィール

X_Under bar

Author:X_Under bar
Full balance amplifier

カレンダー

05 | 2020/06 | 07
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 - - - -

I welcome your visit.

最新記事

最新コメント

月別アーカイブ

カテゴリ

ブロとも申請フォーム

検索フォーム

QRコード

QR