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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ATX_12Vの電源ですが、普通は8...
-
USBのピン数について(マザーオ...
-
ICの1ピンの見分け方について
-
CPUのピンを保護して発送するに...
-
CMOSクリアで、ジャンパのショ...
-
ATX電源の-5V端子について
-
ATX電源の24ピンとは別に分岐す...
-
自作PC用のPOWER LEDの挿し込み...
-
12V電源について
-
corei7-8700にグラボGeForce306...
-
ケースファンのDCとPWMの違い
-
現在自作pcを作ってる途中なの...
-
no keyboard detectedと表示される
-
今朝PC起動時、American Megatr...
-
PCのケースファンが回らない
-
CPUファンがフル回転したままな...
-
パソコンwindows10なんですが...
-
I/Oシールドとは何ですか?
-
デスクトップ電源を入れると一...
-
マザーボードが故障しているの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ATX_12Vの電源ですが、普通は8...
-
大4ピン電源のピンの外し方
-
CMOSセッティングエラーの直し方
-
CPUのピンを保護して発送するに...
-
USBのピン数について(マザーオ...
-
ICの1ピンの見分け方について
-
自作PC用のPOWER LEDの挿し込み...
-
グラフィックボードの補助電源...
-
SATAの電源は,なぜピン数が非...
-
ループロックがはずせず困って...
-
Dell Optiplex 3020 電源ユニッ...
-
ATX電源の24ピンとは別に分岐す...
-
RS-232Cのピンアサインの役割に...
-
ATX電源の-5V端子について
-
ピン折れしているCPU というの...
-
ハードディスクの後ろのジャン...
-
東芝ノートQosmioの光学ドライ...
-
Seagate製HDDのジャンパーピン...
-
CMOSクリアで、ジャンパのショ...
-
ハードディスクのジャンパーピ...
おすすめ情報