楽々PIC

水田除草と言うブログを書いていますが、PIC関連の記事が意外に人気で驚いています。 PICを使った電子工作に興味を持つ方が多いことを知って、一緒にPICを学ぶブログを作りたいと思いました。 「楽々PIC」は教材と言うよりも少し実用性?のある楽しい道具を作りながら学ぶブログを目指します。

ADC

RRP1320-1-04 温度誤差

RRP1320-1-04-2 を書き込んで PICkit3 無しの単独で動作確認していたところ、PICkit3 から電源供給していた時と比べて表示温度が5℃程も低くなることに気付きました。 LCD のバックライト用電流が大きいためか PICkit3 の供給電圧が低い(4.75V程度)と認識していましたが、25℃の5%なら1℃程度と漠然と考えていましたから、5℃も違うと原因を確かめる必要があります。

DSC00185

温度センサー LM60 の誤差は ±2℃@25℃ ですが、同じ(一つの)センサーで比較していますから無視します。 RRP1320-1-04 のA/D変換基準電圧(Vref)はPICの電源電圧を使っています。 電源電圧(5V)の変化に連れて入力電圧に対するA/D変換結果が変化します。 電源電圧を±5%振った時の電圧誤差と、温度換算結果は下図のようになると思います。 (厳密には間違った図ですが誤差範囲は同等です。)
温度換算の方法は「温度センサー4」で紹介しています。


vref

±5℃@25℃もの誤差が生じます。 これに LM60 の誤差が加わりますから、現状では温度表示値はあてに出来ません。 電源との組み合わせを固定し、誤差を確認して使うか電源電圧または基準電圧(Vref)を調整可能に作ります。 基準電圧端子は LCD に使っていますから、調整可能にする為には PICkit3 が使っている端子に LCD 出力を移す必要があります。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。



ポート入出力

温度制御定数と出力」の中で、下図のようにポート出力を High / Low に切り替えるアセンブラ・ソースを紹介しています。 <PICデバイス=18F1320>

温度制御出力

ポートの入出力を行う SFR には、PORTn と LATn があり上図の LATB はポートBに対応しています。 PORTn を入力(読み出し)、LATn を出力(書き込み)に使うようなので、私もそれに従っています。

PORTn と LATn の違いは以下のページが勉強になります。
 PORTレジスタとLATレジスタ
 http://homepage3.nifty.com/mitt/pic/pic1320_06.html

ポート出力は LATn に書き込み、入力は PORTn を読み出したりビットチェックを行うことで実現します。
1bit だけ書き換える場合には BSF , BCF , BTG と言ったニーモニックを使います。 複数の bit を同時に(同期して)書き換える場合は ANDWF , IORWF , XORWF が便利です。 8bit を一気に書き換える際には MOVF , MOVWF , MOVFF , CLRF , SETF 等が使えます。 ただし、8bit の中に他の割り込みプログラムで(も)書き換える bit がある場合は、割り込み処理による書き換えタイミングにより、他のプログラムの実行結果に対して意図しない悪影響を与える場合があり注意が必要です。

同様にポート入力では 1bit だけの時に BTFSC , BTFSS を使い、複数 bit を同時に(同期して)読み出す場合は 8bit 全てを読み出してから処理します。 入力時には他のプログラムに影響を与えることは無いでしょう。

ポートの入出力を行う前に下図のように各ポートについて bit 単位で入出力の設定を済ませる必要があります。

ポート定義

A/DコンバーターとUSARTの設定を先に済ませ、各ポートの入出力を設定します。 ポートとして使う bit だけでなく、A/Dコンバーター、USART、PWM、タイマー入力、外部割込みと言った用途の端子についても矛盾の無い入出力設定を行います。 (例 受信端子=入力 送信端子=出力)


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。




温度センサー2

 「温度センサー」の続きです。 初めにA/Dコンバーターの設定を行います。 <PICデバイス=18F1320> 温度センサーはNational Semiconductor 製 LM60 で、AN4に接続しています。

以下は、A/Dコンバーターの設定を行っているアセンブラ・ソース( intdef.asm の一部)です。 A/Dコンバーター設定に続いてポートの入出力設定を行っています。

intdef_adc

以前から気付いていたのですが、いつも頼りにしている参考書はA/Dコンバーターに関する説明が 18F1320 のものと異なるようです。 デーシートで確認した ADCON0 , ADCON1 , ADCON2 の資料は以下の通りです。
ADCON2 は参考書と一緒ですが、他の2つは異なる内容になっています。

下図を参考に上の10~13号目を書きました。 ADCON2 はクロック周波数によって設定値が異なり、上図は Fosc = 8MHz の設定です。


18F1320_ADCON0



18F1320_ADCON1




18F1320_ADCON2


動作がおかしいと思った時はデータシートを確認することも大切ですね。


温度センサー関連記事のインデックスはこちら → 温度センサー 


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。



PIC18F1320の入出力ピン

 PICのプログラムは、PICデバイスに書き込んで周辺回路を動かしてなんぼのものです。 このブログでも小規模ながら実際に基板を製作し、周辺回路の動作を確かめてPICについて学びたいと思います。

最初に作る基板(RRP1320-0)はPICKit3と接続してPIC18F1320を動かすに必要な最小限の機能を持った物にします。 その後に幾つかの周辺回路基板を作って、RRP1320-0と接続すれば目に見える入出力結果を楽しめるようにしたいと考えています。

PIC18F1320の概要は以下の通りです。
 ピン数                           18pin
 プログラム・メモリー     4Kワード(8Kbyte)
 データ・メモリー             256byte
 EEPROMメモリー        256byte
 I/Oポート ポート           A,B
 ADC                              7入力
 USART                          1ch
 CCP                              1個

PIC18Fシリーズの中で、最もピン数の少ないPICデバイスですが、最小規模の18F1220に比べて2倍のプログラム・メモリー容量を持っています。

ピン配置は下図のようになっています。
1320pin

18ピンの内、以下のピンは自由に使えない(使い難い)ピンで、残り11ピンが使えます。
 1.電源ピン ( 5 , 14 )
 2.PICKit3と接続 ( 4 , 12 , 13 )
 3.クロック接続 ( 15 , 16 )


下表は、18F1320各ピンの機能概要で、左端の数字はピン番号を示します。

1RA0/AN0
 入出力ポート or ADC入力
2RA1/AN1/LVDIN
 入出力ポート or ADC入力 or LVD外部電圧設定
3RA4/T0CKI
 入出力ポート(OD) or TIMER0外部クロック入力
4MCLR~/Vpp/RA5
 MCLR~ or 入力専用ポート
5VSS/AVSS
 電源VSS
6RA2/AN2/Vref-
 入出力ポート or ADC入力 or Vref-
7RA3/AN3/Vref+
 入出力ポート or ADC入力 or Vref+
8RB0/AN4/INT0
 入出力ポート or ADC入力 or INT0入力
9RB1/AN5/TX/CK/INT1
 入出力ポート or ADC入力 or USART CK/TX
10RB4/AN6/RX/DT/KBI0
 入出力ポート(状態変化割込) or ADC入力 or USART RX/DT
11RB5/PGM/KBI1
 PGM or 入出力ポート(状態変化割込)
12RB6/PGC/T1OSO/T13CKI/P1C/KBI2
 PGC or 入出力ポート(状態変化割込) or タイマー入出力
13RB7/PGD/T1OSI/P1D/KBI3
 PGD or 入出力ポート(状態変化割込) or タイマー出力
14VDD/AVDD
 電源VDD
15OSC2/CLKO/RA6
 OSC2 or クロック出力 or 入出力ポート
16OSC1/CLKI/RA7
 OSC1 or クロック入力 or 入出力ポート
17RB2/P1B/INT2
 入出力ポート or INT2入力
18RB3/CCP1/P1A
 入出力ポート or CCP入出力

ピン名称が赤色のものはPICKit3を接続してデバックやプログラミングをする間、決められた負荷以外は接続できません。 ピン番号が青色のもの ( RB ) はプログラムで内部プルアップ抵抗の有無を設定出来るピンです。 ピン番号が緑色のRA4はオープンドレイン出力です。(知らずにロジックICを接続するとスゴ~ク悩みます。)

各ピン毎に機能が決められていて、なおかつ複数の機能を受け持っています。 今回は以上の説明にとどめます。


RRP1320-0 関連記事のインデックスはこちら → RRP1320-0 回路図


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。



ダウンロードコーナー
記事検索
アンケートに御協力下さい


アーカイブ
楽々PIC 宛てBlogMail


--- ご了承下さい ---

注意して記事を書いていますが、記事及びリンク先の情報による不利益について、一切責任を負い(負え)ません。
QRコード
QRコード
アクセスカウンター

    Atsuhiro Imai

    バナーを作成


    プロフィール

    jyosou_robot

    • ライブドアブログ