Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

PIC18F46J50 LED Blinking Test

PIC18F46J50 でLチカを試す。

今回は、変換基板にL字型のピンヘッダを取り付けてみた。
ICの周りを取り囲んで立ちふさがる感じのピンソケットと違って、ピンヘッダは風通しがいい感じだし見通しはいい。
しかし、何をするにも指がピンに触れてしまうという、あまり好ましくない状態になった。
見た目はこっちの方が好みだけどな。
次からはやはりピンソケットにしよう。
20150721214307
裏はこんな感じに配線してある。
20150729162159
使ったのは太さ0.26mmのポリウレタン線だ。
長さ数ミリでは作業が細かくて、これだけ配線するのもなかなか骨が折れる。
出来合いの変換基板を使わずに、自分でプリント基板を作った方が結局は楽かもしれないと思った。

20150729162141
とりあえず、接続チェックもかねてLEDを1つ点灯させてみる。

例によって、プログラム本体よりConfiguration Bitsの分量の方が多いということになる。
予定では点灯しっぱなし(肉眼では点滅しているのがわからない)のはずが、細かく点滅している様子が分かる。
つまり、数10Hz程度以下の点滅周期ということだ。
案の定、測定してみたら25Hzだった。
pic18f46j50_1led_blink_01
プログラム内では__delay_ms(10);と指定しているので、100Hzで点滅を繰り返し、周期としては50Hzのはずだ。
#define _XTAL_FREQ 48000000
と書いてあるのに半分の周期になったということは、実際には24MHzで動いてるってことになる。
適当に設定したどこかに問題があるのだろう。

以下、悩んだ挙句に2・3日放置後の追記
問題は設定ではなく、MCLRピンのプルアップを忘れていたことだった。
少ピンのPICは貴重なPINをMCLR専用にしないでせめてInputにも使おうということで、Configuration Bitsの設定でMCLRをDisabledにする(Inputとして使う)ことが出来るようになっている。
この場合、MCLRのPINは何も接続しなくても特に問題は起きない(ホントはいけないんだろうけど)。
多ピンのPICはピン数に余裕があるので、MCLRはそれ専用のピンとなっている。
専用なのでInputとして使うことは無く、当然Configuration Bitsの設定にMCLRをDisabledにする項目は無い。
無いのに今までの癖で設定した気になっていて、当然プルアップもしてない。
というよりMCLRのICSP時の役割以外をそもそもほとんど意識していない。
で、思ったように動かない。

気を取り直して、PORTBにつないだLEDを約1秒間隔で点滅させるプログラム

20150729145305
MCLRをプルアップして今度は問題なく動いている。
MCLR専用PINのプルアップは省略できない。
Datasheetによれば、

If programming and debugging are not required in the end application, a direct connection to VDD may be all that is required.

とあるので、プログラムが終われば単にVddへつないどけばいいようだ。
プログラムやデバッグの際はコンデンサが必要で、下の図のようにジャンパーでも付けて、実行時には外しなさいとある。
pic18f46j50_MCLR
面倒だなと思って抵抗を付けてプルアップだけにしてあるが、プログラム時にも特に支障は無いようだ。
抵抗無しのVdd直結だと「Target Device ID (0x0) does not match expected Device ID (0x4d60).」と出て書き込めない。
20150801182757

このエントリーをはてなブックマークに追加

Posted under: PIC18F46J50


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.