私がPIC16F18346の記事を書いているのはある方に依頼?されたからなのですが、その方からLATxレジスタとPORTxレジスタの違いなんて書いてないで早くまとめてくれと催促が来ました。

ふざけん(ry とは思いましたが、まあその方にもいろいろ親切にしてくださったのでまとめていきます。

 

ちなみにPIC16F18326はPIC16F18346の下位互換品です。(ピン数が違う)

おそらくCONFIG設定は共通ですので使えます。

 

 

 

 

 

注意点ですが、一部の文章は私が勝手に翻訳・解釈しているところがあります。

また英語から日本語に訳すとき、注釈が無い限り私が勝手に翻訳・解釈していると思って下さい。

私が勝手に解釈しているため一部間違っている所があるかもしれません。

あらかじめご了承ください。

 

・PIC16F18346のポート関連レジスタ

実際にはもう少しあるような気もしますが、今回は直接ポートに関係しているレジスタをまとめます。
  • PORTx
  • TRISx
  • LATx
  • ANSELx
  • WPUx
  • ODCONx
  • SLRCONx
  • INLVLx
以上です。多いですね。
PORTxなどのxはポートのAかBかCが入ります。
 
 

・PORTxレジスタ (PORTx REGISTER)

PIC16F18346のデータシートから参照

 

PORTxの電圧を読み込むレジスタです。

 

1. Vihよりも高い電圧 (HIGH)

0. VILよりも低い電圧 (LOW)

 

PORTxレジスタに値を書き込むと実質的にLATxレジスタに書き込まれます。

PORTxレジスタに書き込むのではなくLATxレジスタに書き込むことを推奨します。

詳しくはLATxレジスタとPORTxレジスタをご覧下さい。

 

 

・TRISxレジスタ (PORTx TRI-STATE REGISTER)

PIC16F18346のデータシートから参照

 

よく分からない言葉が書いてありますが、要は入力にするか出力にするか選べるレジスタです。

 

1.INPUT

0.OUTPUT 

 

ただしTRISBレジスタのみ

1.OUTPUT

0.INPUT

 

MICROCHIP社の落とし穴かなw

 

 

----------追記--------------

TRISBレジスタについてはデータシートに間違いがあったようです。

私の環境では動作がおかしくなったため、最新のデータシートを取得したところ判明しました。ご迷惑をおかけしました。

大変申し訳ありませんでした。

PIC16F18346のデータシートから参照

上のデータシートは間違いです。

下のデータシートが正しいです。

PIC16F18346のデータシートから参照

 

 

 

・LATx (PORTx DATA LATCH REGISTER)

PIC16F18346のデータシートから参照

 

HIGHかLOWを切り替える為のレジスタです。

ただしTRISxレジスタをOUTPUTにする必要があります。

PORTxレジスタとLATxレジスタの違いについてはLATxレジスタとPORTxレジスタをご覧下さい。

 

1.HIGH

0.LOW

 

 

・ANSELxレジスタ (PORTx ANALOG SELECT REGISTER)

PIC16F18346のデータシートから参照

 

PORTをアナログ入力(ADC)に設定するか選べるレジスタです。

もしアナログで使用する場合は、TRISxビットをINPUTに設定して下さい。

 

1.アナログインプット

0.デジタルI/Oとして使用

 

なおアナログ入力は一部ピンは使用できません。

確認して使うようにしてください。

 

 

・WPUレジスタ (WEAK PULL-UP PORTA REGISTER)

PIC16F18346のデータシートから参照

 

マイコン内部の内部プルアップを有効にするか選択出来ます。

 

1.プルアップ有効

0.プルアップ無効

 

・ODCONx (PORTx OPEN-DRAIN CONTROL REGISTER)

PIC16F18346のデータシートから参照

 

マイコン内部のオープンドレインという機能を有効にするか選べます。

オープンドレインについてはまたいつか忘れていなければ書こうかと思います。

 

1.オープンドレイン有効(シンク電流のみ)

0.オープンドレイン無効(シンク電流・ソース電流)

 

 

・SLRCONxレジスタ

PORTx SLEW RATE CONTROL REGISTER (長いので...)
 

PIC16F18346のデータシートから参照

 

正直に言うとよく分かりません。また後日要検証としておきます。

(多分ゆっくり立ち上げたりたち下げたりする機能?)

 

1.ピンのスルーレートを制限

0.ピンのスルーレートを最大に

 

 

INLVLxレジスタ

(PORTx INPUT LEVEL CONTROL REGISTER)
 

PIC16F18346のデータシートから参照

 

デジタル値をST(シュミットトリガ)が入力するかTTLレベルで入力するか選べます。

ST(シュミットトリガ)とは一定のしきい値を定めた入力方法のことです。

 

1.シュミットトリガ入力

0.TTL入力

 

個人的なおすすめはシュミットトリガ入力です。

 

 

結構簡単にまとまりました。

次はUART と PPS(Peripheral Port Select)についてまとめると思います。