2025.4.26
前へ
次へ
ホームページトップへ戻る


超ローコストPICWRITERの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
「PICBASICコンパイラ」からスピンオフ!!
過去記事を参照することなどを考えて該当する過去記事は「PICBASICコンパイラ」のまま連載回もそのままとします。
以後は前回記事からの流れで[第236回]からとします。
「PICBASICコンパイラ」はなるべく早く連載を再開したいと考えています。
PICはローコスト、高機能で種類も豊富なお手軽マイコンですがプログラムを書き込むためのWRITERが必要です。
それをできるだけ安価に作ってしまおうというプロジェクトです。
最終的には製品化を考えています(組立キット、完成品)。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第270回]



●PIC16F716(2)テストプログラム

いつものように簡単なテストプログラムを作りました。
以前PIC16F627用に作ったものをもとに作成しました。
;;;pic16f716test frompic p16f627 test
;25/4/25
;
        #include <p16f716.inc>
        __CONFIG _WDT_OFF & _RC_OSC
;
;
w=0
f=1
c=0
z=2
;
cntr0=20
cntr1=21
cntr2=22
;
        org 0
        goto start
;
        org 5
start
        bsf STATUS,5 ;bank 1
        movlw 7;a0-a3 is digital
        movwf ADCON1
        clrf TRISA
        clrf TRISB
        bcf STATUS,5 ;bank0
;
testloop
        movf cntr2,w
        movwf PORTA
testloop2
        call t1
        movf cntr1,w
        movwf PORTB
        decfsz cntr1
        goto testloop2
        decf cntr2
        goto testloop   
;
t1
        nop;1
        decfsz cntr0;1
        goto t1;2
        return
;
        end
;

PIC16F627/628は内蔵クロック発振モードがありましたがPIC16F716にはありません。
その代わりにクロック端子に抵抗とコンデンサを接続することでRC発振をCPUクロックにすることができます。
この点もPIC16F627/628よりもPIC16F84に近いPICといえます。


[出典]Microchip Technology Inc.PIC16F716 DataSheet

RC発振の場合抵抗とコンデンサの組み合わせによる発振周波数については「一概に言えない」とあります。
目安ぐらいは書いていただきたいところなのですが。


[出典]Microchip Technology Inc.PIC16F716 DataSheet

OSC2/CLKOUT端子から発振周波数/4のクロック(命令クロック)が出力されますからそれを見てカットアンドトライして決めるとよいでしょう。
抵抗、コンデンサの誤差もありますし温度によっても変化します。
個々のPICのハードウェア特性も影響します。
いずれにせよ水晶発振ほどの精度は期待できませんからアバウトでもよいという用途に使うことになります。
ちょうどPIC16F84を使ったLCD表示回路基板がそのまま使えそうなので今回はそれをテストに利用しました。
PIC16F84のテストと同じです([第207回])。
テストプログラムは同じではありません。
下はLCDIFの回路図です。


テスト中の写真です。

オシロでOSC2/CLKOUT端子の出力を観測してみたところ上の画像のようにFosc/4は周期が約6μsでした。
これから逆算すると発振周波数は4/6≒667KHzになります。
テスト回路のRは10KΩでCは100pFです。
うむむむ。
アバウトでもなんでもよいのですけれどなんとかこの値と発振周波数との間の目安になる式が欲しいところです。
こういうときはGoogle様のお力をお借りするとよろしいです。
で。
RC発振回路で検索してみたのですけれど。
なんたらかんたらめっちゃややこしい計算式しか出てきません。
そんなんじゃなくってたとえば0.6RCだとかそんな程度の簡単な式はありませんかねえ。
さらに検索してみましたら。
おお。
2.2RC
それそれ。
そーいうのが欲しかったの。
って。
あれ?
これって…。
TTLでCPUをつくろう…
ウチのサイトじゃないの!
はるか昔に私が書いた記事じゃありませんか。
「TTLでCPUをつくろう」[第127回]のずっと下のほうに書いてあります。
f=1/(2.2RC)は周波数ですから周期に換算すると2.2RCになります。
どこから引用したかは書いてありません(だめじゃん)。
「だそうです」なんていいかげんな書き方をしています。
2008年の記事ですから16年も前です。
当時のノートを調べればなにかわかるかもしれませんが、まあ目安がわかればよいのですから、これでよいことにしましょう。

さてそれで。
R=10KΩとC=100pFを2.2RCという計算式にあてはめて計算してみると2.2×10KΩ×100pFになります。
これでは単位がばらばらですからこれをμsに合わせて書き換えてみます。
10KΩは10000です。
100pFは1/10nFですから1/10000μFです。
ですから単位をμsにすると10000と1/10000が打ち消しあうので2.2μsになります。
オシロスコープの観測値は6μsでこれは発振周波数Foscの周期の4倍ですからFoscの1周期は6/4=1.5μsです。
計算値の2.2μsにまあまあ近い値です。
まあたまたまそうなったということなのかもしれませんけれど。
ここは素直にそういうことだということにいたしましょう。

PIC16F716のところを拡大しました。

名前のところがかすれてちょっと不鮮明ですがなんとかPIC16F716と読めます。

超ローコストPICWRITERの製作[第270回]
2025.4.26 upload

前へ
次へ
ホームページトップへ戻る