16F1829覚書
〔PICの動かせ方入門に戻る〕
PIC16F1827と殆ど変りません、ですから異なる所のみ記述して置きます、
後は16F1827覚書を参考にして下さい。
ここでの記載はMPLAB X V2.15と
MPLAB(R) XC8 C Compiler Version 1.32を使用しての内容です。
データシートはこちらです。英語だけどね
※ 1827はMemory=4Kword,SRAM=384,Pin=18で、1829はMemory=8Kword,SRAM=1024,Pin=20
※ 1829は温度計モジュール”TEMPERATURE INDICATOR MODULE”機能が有ります。
※ プルアップ抵抗が、1827はポートBのみですが、18291は全ピンOKの様です。
※ 入力ピンのON/OFF判断電圧値のしきい値を制御するレジスターが増えている
※ あとぉ、状態変化割り込みを行うピンが少し違うかな。
※ それとぉ、各種モジュール類の入出力ピン割り当ても違います。(それってぇ大分違わないかい?)
PICの内部に付いているクロック周波数回路は4MHz/8MHz/16MHz/32MHzを利用できる。
また、32MHZにする場合は、内部・外部クロックとも8MHzにして内蔵PLL回路を通す必要がある。
内部クロックを利用する場合
コンフィギュレーションを
#pragma config PLLEN = OFF , FOSC = INTOSC
にして
OSCCONレジスターにて使用する周波数を設定します。
OSCCON = 0b01111010 ;赤い数字部分を変更する事により周波数を変更できます。
緑の数字部分が内部クロックを使用する時の設定です。
赤い数字部分を変更する事により周波数を変更できます。
それ以外の数字部分はそのまま使用する。
1111 |
16MHz |
1110 |
8MHz |
1101 |
4MHz |
1100 |
2MHz |
1011 |
1MHz |
その他 |
500KHz/250KHz/125KHz
62.5KHz/31.25KHz/31KHz
|
内部クロック32MHzを利用する場合(4xPLLで動作)
コンフィギュレーションを PLLEN = ON , FOSC = INTOSC にして
OSCCON = 0b01110000 として 8MHz x 4倍 で動作させます。
外部クロック(プライマリ外部オシレータ)を利用する場合
コンフィギュレーションを FOSC = HS にして
OSCCON = 0b00000000 として動作させます。
また、プライマリとは別にセカンダリ外部オシレータとして、
外付けの32.768 kHz 水晶振動子を駆動出来ます、って事はRTC(リアルタイムクロック)が実現出来そうですね。
#pragma config キーワード1 = 設定値 , キーワード2 = 設定値 の様に記述する。
#pragma config BOREN = ON , BORV = HI , FOSC = INTOSC // 記述の例
CONFIG1
FCMEN :外部クロックの監視ビット
ON = 外部オシレータに障害が発生した場合に内部オシレータに切替えるか監視する
OFF= 外部クロックの監視はしない
IESO :内部・外部クロック切り換えビット(2段階起動モード)
ON = 内部から外部クロックへの切替えで起動を行う
OFF= 内部から外部クロックへの切替えでの起動はしない
CLKOUTEN :クロック出力の有無設定ビット
ON = CLKOUTピンは有効とする
OFF= CLKOUTピンは無効、RA4ピンとして使用する
BOREN :電源電圧がBORVより下がったらリセットを行うかの設定ビット
ON = 電源電圧降下常時監視機能は有効とする
OFF= 電源電圧降下常時監視機能は無効とする
NSLEEP = 動作時に有効、スリープ中に無効にする
SBODEN= BORCONレジスタのSBORENビットで制御する
CPD :データメモリー保護の有無設定ビット
ON = データメモリーの保護を行う
OFF= データメモリーの保護はしない
CP :プログラムメモリー保護の有無設定ビット
ON = プログラムメモリーの保護を行う
OFF= プログラムメモリーの保護はしない
MCLRE :MCLR/VPP ピン機能選択ビット
ON = ピンはMCLR(外部リセットピン)として機能する
OFF= ピンはデジタル入力ピン(RA3)として機能する
LVP=ONの場合はこのビットは無視される。
PWRTE :パワーアップタイマの有無設定ビット
ON = 電源ONから64ms後にプログラムを開始する
OFF= パワーアップタイマは無効とする
WDTE :ウォッチドッグタイマの有無設定ビット
ON = ウォッチドッグタイマを有効にする
OFF= ウォッチドッグタイマを無効にする
NSLEEP = 動作時に有効、スリープ中に無効にする
SWDTEN= WDTCONレジスタのSWDTENビットで制御する
FOSC :オシレータ選択ビット
HS = 外部発振器で高い振動子を使用する
INTOSC= 内部クロックを使用し、CLKINピン(RA5)はデジタルピンとする
ほかにRCオシレータや外部クロック利用等有るが詳しくはデータシート(P-48)参照。
CONFIG2
LVP :低電圧プログラミング機能の有無設定ビット
ON = 低電圧プログラミングを行う
OFF= 低電圧プログラミングは行わない
BORV :電源電圧降下常時監視の電圧設定ビット
HI = リセット電圧(VBOR)のトリップポイントを高(2.9V)に設定する
LO = リセット電圧(VBOR)のトリップポイントを低(2.5V)に設定する
STVRENR :スタックがオーバフローやアンダーフローしたらリセットを行うかの有無設定ビット
ON = リセットを行う
ON = リセットを行なわない
PLLEN :4xPLLを動作させるかの有無設定ビット
ON = 動作させない
OFF= 動作させる(クロックを32MHzで動作させる場合に使用)
WRT :8KWのフラッシュメモリ自己書き込み保護ビット
OFF= 保護しない
BOOT= 000h-1FFhを書込み保護にし、200h-1FFFhをEECON制御によって変更可能
HALF= 000h-FFFhを書込み保護にし、1000h-1FFFhをEECON制御によって変更可能
ALL= 000h-1FFFhを書込み保護にし、EECON制御によるアドレス変更を不可にする
Vpp
PICチップにプログラムを書込む時の、書込み電圧を負荷するピンという意味なので、
動作時には気にしなくて良い。
MCLR
外部リセット信号を入力する場合のピンとして使用。
リセット信号はLOW(0V:GND接続)でリセットが掛かります。
リセットスイッチを付けない場合は、内部でプルアップされているので端子はオープンでも構わない。
RA3
MCLRをDisable(禁止)にしI/OのRA3の入力端子とした方が良いでしょう。
__CONFIG(MCLRE_OFF)、__CONFIG(LVP_OFF) を記述すればDisableに出来ます。
但し、プルアップが無効になるので利用する場合は別途プルアップをONさせる必要が有ります。
入力しきい値制御
INLVLB/INLVLCレジスタは入力ピンのON/OFF判断電圧値のしきい値を制御します。
1 = ポートの読み出しと状態変化割り込みに使うST(ショットトリガ)入力(デフォルト値)
0 = ポートの読み出しと状態変化割り込みに使うTTL入力
・ I/Oポートに入出力を行う際の注意点
I/Oポートへ高速クロックで連続的に入出力を繰り返した場合に上手く入出力が出来ない場合が
有ります、そんな時はPORT?レジスタで入力し、LAT?レジスタで出力します。(LAT?では入力しない)
・ 初期値のピン割り当てがアナログ入力となっています。
ANSELA/ANSELB/ANSELC レジスタの各ピンに該当するビットをクリアすればデジタル入力として
使う事が出来ます。(1 = アナログ 0 = デジタル)
・ PIC内部プルアップ抵抗の使い方は?
全てのピンで内蔵プルアップが使用出来ます。
使用する場合は、下記のレジスターにて設定する必要があります。
OPTION_REG = 0b00000000 ; 赤い所0を1とするとプルアップを使用しないです。
デフォルトは内蔵プルアップは使用しないです。
また、使用する場合は何れのピンをプルアップするのかを指定する必要が有ります。
(以下で"x" は設定なしです)
WPUA = 0b00000001 ; この設定でRA0のみ内部プルアップ抵抗を使うです
右のビットから左へ RA0〜RA5/x/x の順番です。
WPUB = 0b00010000 ; この設定でRB4のみ内部プルアップ抵抗を使うです
右のビットから左へ x/x/x/x/RB4〜RB7 の順番です。
WPUC = 0b10000001 ; この設定でRC0/RC7のみ内部プルアップ抵抗を使うです
右のビットから左へ RC0〜RC7 の順番です。
記事変更(*1) 2015/06/30
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2020 Shigehiro Kimura All Rights Reserved.