超ローコスト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
前へ
次へ
ホームページトップへ戻る