
PIC12F629をC言語でプログラミングしています。
GP2ピンをデジタル入力としてスイッチを接続しGP4をデジタル出力
としてLEDを接続し、スイッチを押すたびにLEDが点灯、消灯を繰り返す
ようにプログラミングしてみました。
ところがデジタル入力のピンをGP0,GP1に変更しピンにスイッチを
接続し入力しても同じように動作しません。回路に電源をいれた瞬間
LEDが点灯しスイッチを入力しても点灯したままです。
GP0,1をGP2と同様にデジタル入力として使いたいのですが、単にピンの
番号をプログラム中で変更するだけではダメなのでしょうか?
ご教授おねがいします。
No.1ベストアンサー
- 回答日時:
はじめまして,
私も趣味でPICの魅力にはまっている一人です.
回路図もソースもわかりませんので,想像の範囲でお答えしますと,PIC12F629に内蔵されているコンパレータの初期化が行われていないのではないでしょうか.手持ちにあったPIC12F629/635のデータシートではP35~P37に説明があります.(先月マイクロチップ社のHPよりダウンロードしたものです)
P35に記載されている"6.0 COMPARATOR MODULE"内蔵コンパレータの制御はCMCON(19H)レジスタで行います.このレジスタのデフォルト値は00000000Bですので,CM2,CM1,CM0ともゼロクリアされています.CM0:CM2の意味はP37にありますが,オールゼロの意味は”不使用”ではなく,コンパレータを(使えるように)初期状態にセットします,という意味で,各種ピンは,GP0,GP1をアナログに,GP2をデジタル入出力にセットします.質問者様の文脈から察するに,GP2は動いたのにGP0と1の(ディジタルIOとしての)I/O動作が期待に反したことに近いと思います.
ですので,コンパレータ機能を使わずにGP0,1,2をディジタル入出力で使う場合には,このCMCONに7H(CM2:CM1:CM0=1:1:1)を書き込まなければなりません.一般的には,スタートアップルーチンでTRISIOレジスタにGPIOをセットする手前にCMCONをconfigureします.
最後にアドバイスになるか否かわかりませんが,データシートや仕様書が間違っていることは本当に稀です.汎用ディジタル入出力として使える,と書いてあれば必ず使えます.ただし,ことPICの場合は小型で多機能である反面,ピンの共用がかなり激しく,思わぬところで勘違いを起こします.偉そうに言っていますが,私も実は毎回はまっています.定番のPIC16F84で作成したソフトをPIC16F88に持ってこようとした時はANSEL(アナログ入力の仕様設定)にやられました.またつい最近,非常に単機能なPIC12F509を使い始める時にも,GP2がTMR0のクロック入力とかぶっていて,OPTIONレジスタのデフォルト値がTMR0を優先させていた為にやはりGPIOが動かない,という現象にはまりました.
その時あまりにも悔しかったので備忘録としてブログに挙げてあります.お暇だったら見てください.
http://fp-masamichi.cocolog-nifty.com/pic/2009/0 …
私も異なるPICを使う度にはまっている状態ですが,いずれにしても最後はデータシート通りにちゃんと動きます.PICを信じてやってください.
参考URL:http://fp-masamichi.cocolog-nifty.com/pic/2009/0 …
ご回答いただきありがとうございます。
ご指摘にありましたCMCOMレジスタにデータをセットしてみました。
CMCOM=0x07;
この1文をIOピンの初期設定を行っているサブルーチン書き込んだ
だけでGP0,1ピンをデジタル入力として使えるようになりました。
プログラムのソースコード、回路図等を掲載したかったのですが、
参考書のサンプルソースなので掲載してはよろしくないのでは
と思い掲載しませんでした。
参考書 オーム社 C言語ではじめるPICマイコン
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4- …
この本のP84,85に載っているプログラムです。
(よくみるとこの本にCMCOMレジスタの説明も載ってましたね^^;)
ブログも今度ゆっくり拝見させていただきます。
今回はどうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PCケースについて質問です
-
ATX_12Vの電源ですが、普通は8...
-
CMOSクリアで、ジャンパのショ...
-
ハードディスクのジャンパーピ...
-
ICの1ピンの見分け方について
-
CMOSセッティングエラーの直し方
-
大4ピン電源のピンの外し方
-
マザーボードの補助電源入力端...
-
【質問】前面パネルコネクタの...
-
CPU電源
-
入力端子の中抜き
-
現在自作pcを作ってる途中なの...
-
パソコンwindows10なんですが...
-
画面でBIOSが表示されません(泣)
-
corei7-8700にグラボGeForce306...
-
パソコンの表と裏のUSBポートの...
-
no keyboard detectedと表示される
-
I/Oシールドとは何ですか?
-
pc関連の質問です。マザーボー...
-
マザボ裏に磁石(マグネット)...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CPU電源
-
ATX_12Vの電源ですが、普通は8...
-
Dell Optiplex 3020 電源ユニッ...
-
ICの1ピンの見分け方について
-
自作PC用のPOWER LEDの挿し込み...
-
大4ピン電源のピンの外し方
-
USBのピン数について(マザーオ...
-
グラフィックボードの補助電源...
-
ATX電源24pinに付いて。
-
PC電源の交換について教えてく...
-
ループロックがはずせず困って...
-
CMOSクリアで、ジャンパのショ...
-
CMOSセッティングエラーの直し方
-
【質問】前面パネルコネクタの...
-
CORSAIR USBリンクのケーブルに...
-
マザーボードASRock H110M-ITX/...
-
SATAの電源は,なぜピン数が非...
-
CPUのピンを保護して発送するに...
-
VGA・7番ピンがないですぅ
-
CMOSとは何のことですか?
おすすめ情報