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

PICプログラミングをしているのですが、
グローバルでint型の変数を宣言しているのですが、
割り込み時にインクリメントをしているのですが、
それをログ出力するとインクリメントができていません。

コードの一部を載せます。
http://drp.ly/1pH841

なにかわかる方いらっしゃいましたら教えてください。

PIC24FJ32GA

開発環境
Windows7 64bit
MPLAB IDE v8.53
C30コンパイラ

よろしくお願いします。

A 回答 (3件)

こんにちは。


そんなにじっくり見ていないので、ちょっと的外れかも知れませんが。
UART1の受信割り込みハンドラの中で、UART2へポーリングで2バイト以上送信しようとしている所があるように見えます。
1バイト受信するごとに3バイト送信、とかしていたら通信処理は破綻します。
プログラムの作りを見直した方が良いと思います。
割り込みハンドラはバッファリングするだけ、というのが基本かと思います。
    • good
    • 0
この回答へのお礼

割り込み中にUART2への送信が1バイトであると
言うことを知りませんでした。
無事解決しました!
ありがとうございました。

お礼日時:2010/07/26 11:26

コードのリンク先にはアクセスできなかったので推測になりますが、


変数の volatile 宣言はしていますか?

volatile にしていない場合、最適化によって、割り込みルーチンでの値の変更が反映されなくなる場合があります。

この回答への補足

http://drp.ly/1pKa5B
リンク先が間違っていました。修正します。

Volatile宣言もしてみたのですが、結果は変わりませんでした。
どうもインクリメントはできているのですが、
割り込み発生時に変数chaCntがリセットされているみたいです。

なんででしょう?

補足日時:2010/07/24 00:55
    • good
    • 0
この回答へのお礼

ありがとうございました。
無事解決しました!

お礼日時:2010/07/26 11:27

ちなみ、再入関連は大丈夫ですか?


自分もPIC使うんですが、アセンブラ使いなので、CはPICでは
ちょい力になれずで、ごめんなさい

この回答への補足

再入関連ってなんですか~~?
初心者で><

補足日時:2010/07/24 00:57
    • good
    • 0
この回答へのお礼

ありがとうございました。
無事解決しました!

お礼日時:2010/07/26 11:27

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