dポイントプレゼントキャンペーン実施中!

PIC16F877です。
[環境]
 MPLAB IDE 6.6
 CCS 3.15
 WinXP sp3

送受信ピンは専用ピンに割り当て、内蔵USARTを使ってRS232C通信しています。
PICから相手機器にコマンド発行し、相手から応答データが帰ってきていますが、
kbhit()を確認してもHighになってくれません。
PIC入力ピンをオシロで当たって波形も確認済み、また信号ラインをシリアルモニタで
受信データラインを横取りして確認してもデータは正常に読み取れていますので、データは
正常だと思います。

同じような経験をお待ちの方はおられませんか?
よろしくご教授、お願いします。

A 回答 (2件)

経験則ですが, PICは独特の内部アーキテクチャになっていますので, 不慣れな頃は勘違いによる設定ミスが私自身意外とありました.



IDEとの親和性において, コンパイラのバグは特殊条件において確認できているものもありますが, 基本動作において問題が発生するレベルのものはあるとは思えません.

文面から設定値等の詳細が分かりませんが, 少なくとも"Highになってくれません"ということから原因は以下の2点に絞れるのではないでしょうか.

(1)I/Oモジュール部の出力(トライステート等)がEnableとなっておりLowに引いてしまっている.(出力設定値を確認できれば進展があるかも)
(2)USART入力がEnableとなっていない
データシートでPORT I/Oの仕様を図で確認するのも必須ですが, 慣れてないと多少難しいかもしれません.

ファンクションを実装する前に, USART動作確認用のプロジェクトを作成しデフォルト起動時の状態からUSARTのみ動作させる動作確認を行うのが近道だと思います.

私ならまずささっとアセンブラでプロジェクトを作成して動作確認し, デバイス動作を含むハードの面に問題はないコトを切り分けすると思います.
877であればネット上にアセンブラのサンプルなどゴロゴロ転がっていますしさほど手間ではないかと.

今頂いている情報ではここらが限界ぽいです.
他に試せることと言ったらレジスタ設定をBIT命令をBYTE命令に置き換えて試すことくらいでしょうか.どうにもお困りでしたら, ソースを晒した方が早そうですね.
    • good
    • 0
この回答へのお礼

ありがとうございます。

日程の事もあり少々あせっている所もありました。
ご指摘の通り、原因の切り分けから、一つ一つ潰していこうと思います。

お礼日時:2009/09/12 18:44

入力信号に問題は無さそうですので, PIC場合I/Oマルチファンクションに伴う設定ミスか, ボーレート設定のミスのどちらかだと思います.



データシートを見てみましたが, 他のPICの石と比べてレジスタ設定において躓く点は少なそうです.
SPENが1である事と該当ポートの出力が切ってあればデータ入力できそうです.
TRISC[7]は"1"になっていますでしょうか?(デフォルト入力のはず)
    • good
    • 0
この回答へのお礼

ありがとうございます。
ご指摘の箇所、いずれも、確認しましたが問題ないようでした。

PICで今回ほど複雑なもの(たかが知れてますが)を作るのは初めてでして。。
コンパイラバグの問題、リソースの問題なども考えた方が良いのか、等とも思っております。

お礼日時:2009/09/12 11:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!