超ローコストPICWRITERの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
「PICBASICコンパイラ」からスピンオフ!!
過去記事を参照することなどを考えて該当する過去記事は「PICBASICコンパイラ」のまま連載回もそのままとします。
以後は前回記事からの流れで[第236回]からとします。
「PICBASICコンパイラ」はなるべく早く連載を再開したいと考えています。
PICはローコスト、高機能で種類も豊富なお手軽マイコンですがプログラムを書き込むためのWRITERが必要です。
それをできるだけ安価に作ってしまおうというプロジェクトです。
最終的には製品化を考えています(組立キット、完成品)。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第271回]
●PIC16F716(3)BOR(ブラウンアウトリセット)
前回のテストで書くつもりでいてうっかりして書かずに終ってしまったことがあります。
PIC16F716は電池での動作も可能なPICのはずです。
ここで「はず」と書いたのは実は前回のテストでは乾電池2個直列(3V)では動作しなかったからです。
前回のテストは+5Vで行ないました。
ちょいと納得できない気持ちではありました。
どこがWide operatingだちゅうねん。

[出典]Microchip Technology Inc.PIC16F716 DataSheet
確かに3Vはぎりといえばぎりですけれど。
今朝になりましてから突然にひらめきました。
確かConfigの説明のどこかにBORつうのがあったような。
やっぱり!

[出典]Microchip Technology Inc.PIC16F716 Memory Programming Specification
BOR(Brown Out Reset)はVddが既定の電圧以下になったときにリセットをかける機能です。
bit7(BORV)を見ましたらdefaultではその電圧は4Vになってました。
これでは3Vで起動できるわけがありません。
ここを’0’(2.5V)にしてもよいのですけれど電池でこの機能は要りませんでしょう。
bit6のBORENをOFFにするほうが確実です。
そこでテストプログラムをそのように変更しました。
;;;pic16f716test frompic p16f627 test
;25/4/25 4/27
;
#include <p16f716.inc>
__CONFIG _WDT_OFF & _RC_OSC & _BOREN_OFF
;
;
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
;
|
上から5行目、__CONFIGに_BOREN_OFFを追加しました。
3Vで動作するようになりました!

そういえば。
以前にほかのPICでも同じことを経験したことを思い出しました。
Datasheetでは低電圧でも動作すると書いてあるのに3Vでは動作しないPICがあったことを思い出しました。
確認してみたところPIC16F883とPIC16F887でした。

[出典]Microchip Technology Inc.PIC16F882/883/884/886/887 DataSheet
やっぱりBORがありました。
犯人はお前だったのか!
PIC16F883のテストプログラムは[第263回]にあります。
PIC16F887のテストは[第268回]で行ないましたがPIC16F883のときと同じテストプログラムを使いました。
そのときのテストプログラムを下のように変更しました。
;pic16f883test
;25/04/16 4/18 4/19 4/21 4/27
;
; internal 4MHz
#include <p16f883.inc>
__CONFIG _CONFIG1,_WDT_OFF & _MCLRE_ON & _LVP_OFF & _BOR_OFF
__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
movlw 60;bk3
movwf STATUS
clrf ANSEL
clrf ANSELH
bcf STATUS,6;bk1
movlw 65;=4MHz
movwf OSCCON
clrf TRISB
clrf TRISC
bcf STATUS,5 ;bank0
;
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
;
|
上から6行目、__CONFIGに_BOR_OFFを追加しました。
そのように変更したプログラムであらためて動作テストをしたところPIC16F883もPIC16F887も3V(単三乾電池2本直列)で動作するようになりました。
超ローコストPICWRITERの製作[第271回]
2025.4.27 upload
前へ
次へ
ホームページトップへ戻る