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


超ローコストPICWRITERの製作

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

[第274回]



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

PIC16F1938用に簡単なテストプログラムを作りました。
PIC16F883用のプログラムを一部変更して作りました。
;pic16f1938test from pic16f883test
;25/04/28
;
; internal 4MHz
        #include <p16f1938.inc>
        __CONFIG _CONFIG1,_WDTE_OFF & _MCLRE_ON & _IESO_OFF & _BOREN_OFF & _FOSC_INTOSC
        __CONFIG _CONFIG2,_WRT_OFF
;
cf=0
zf=2
f=1
w=0
;
cntr0 equ 20
cntr1 equ 21
cntr2 equ 22
;
     org 00
st0
     goto start
;
     org 05
start
        banksel ANSELA
        clrf ANSELA
        clrf ANSELB
        banksel OSCCON
        movlw 68;=4MHz
        movwf OSCCON
        clrf TRISB
        clrf TRISC
     banksel PORTB
;
loop
        movf cntr1,w
        movwf PORTB
        call t1ms
        incfsz cntr1
        goto loop
        incf cntr2
        movf cntr2,w
        movwf PORTC
        goto loop
;
t1ms
        movlw 0fa;=250
        movwf cntr0
t1ms2
        nop
        decfsz cntr0,f
        goto t1ms2
        return
;
     end
;

カウンタ用のワークレジスタをカウントすることでタイマーを作りそのワークレジスタの値をI/Oポートに出力するだけという簡単なプログラムなのにPICごとにプログラムの一部を書き換えなくてはならないというところがPICのなんだかなあという所以です。
どういう考えによるものかアナログと兼用するI/Oポートはアナログがデフォルトになっているためデジタルポートとして使う場合には前もってアナログポートであることを禁止しなければなりません。
そのためのレジスタ(SFR)がPIC16F1938ではANSELA、ANSELBなのですがその名前もそれが置かれている場所(バンク)もPICによってまちまちです。
ほんとになんだかなあです。
PIC16F84などはバンク切り替えはもっぱらSTATUSレジスタのビットを操作するものでしたがさすがに32バンクともなるとそれも大変ということでBANKSELという擬似アセンブラ命令(?)を使います。
もっともこれはそれなりに便利ですから文句を言う筋合いではありませんけれど。
PIC16F1938はシステムクロックに内蔵オシレータを利用することができます。
その選択はOSCCONレジスタで行ないます。


[出典]Microchip Technology Inc.PIC16F193X DataSheet

選択できるクロックの種類が多いこともあって同じ4MHzを指定するのでもPIC16F883などとは設定値が異なります。
おや。
PIC16F1938は4xPLLが使えるのですか。
内蔵オシレータはMax32MHz?
いや16MHzか?
そのあたりはちょいと確認が必要ですね。


[出典]Microchip Technology Inc.PIC16F193X DataSheet

なるほど。
内蔵オシレータは最高16MHzで8MHzを4xPLLに通すことで32MHzにするのか。
納得です。
あれ?
外部クロック入力なら周波数が何でも4xPLLに通せるのか?
これも確認してみたいですね。
こちらは内蔵オシレータについてです。


[出典]Microchip Technology Inc.PIC16F193X DataSheet

こちらは外部クロックについてです。


[出典]Microchip Technology Inc.PIC16F193X DataSheet

クリスタルによる外部クロック発振は20MHzまでということのようです。
外部クロック入力の場合は32MHzまでいけるようです。
ということは外部クロック入力なら32MHzを4xPLLで4倍の128MHzにできる???
むむむむ。
そういうことになるとそのあたりも試してみたくなります。
が。
今回はそれについては置くことにしてまずはテストプログラムを実行しなくては。
ということで。
テストプログラムを実行中の写真です。

3Vでも動作しました。

超ローコストPICWRITERの製作[第274回]
2025.5.3 upload

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