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