いつもお世話になります。
UART通信で送受信とも9600BPS パリティ無し、ストップ1ビットでシリアル・アレイ・ユニットの初期化は次の通り行って ST0 = 0x0003U; STMK0 = 1U; STIF0 = 0U; SRMK0 = 1U; SRIF0 = 0U; SREMK0 = 1U; SREIF0 = 0U;
STPR10 = 1U; STPR00 = 1U; SRPR10 = 1U; SRPR00 = 1U;
SMR00 = 0x0022U; SCR00 = 0x8097U;
SDR00 = 0xCE00U;
NFEN0 = 0x01; SIR01 = 0x0007U; SMR01 = 0x0122U;
SCR01 = 0x4497U; SDR01 = 0xCE00U;
SO0 |= 0x0001U; SOL0 |= 0x0000U; SOE0 |= 0x0001U; PM1 |= 0x02; P1 |= 0x04; PM1 &= 0xFB;
通信開始時に SO0 |= 0x0001U; SOE0 |= 0x0001U; SS0 |= 0x0003U; STIF0 = 0U; SRIF0 = 0U; SREIF0 = 0U; STMK0 = 0U; SRMK0 = 0U; SREMK0 = 1U;と設定した後にシリアルでデータを送っても受信割込みの処理が動作しないのですが(IEフラグは常に1でシリアルのコネクタにオシロで波形を見るとデータは受信しているのですが)何か設定が抜けているのでしょうか。
周辺イネーブル・レジスタでシリアル・アレイ・ユニットへの入力クロック供給は許可してますか?
いわさん、こんにちはNAKAといいます。
あたり前すぎたらごめんなさい。シリアルアレイユニットへのクロック供給はどこか別のところで行っているのでしょうか?クロック供給しないと制御レジスタへの書き込みが無視されてしまうようですよ!
SAU0EN = 1; //入力ククロックの供給 ※これをしないと制御レジスタの書き込み無視される
追記:
【ぎょ!】先回はkijoさまとかぶって、今回はfujita nozomuさまとかぶっちゃた!!!尊敬するお二人とかぶって光栄でございます!.....(笑)
SAU0EN = 1U;
としています。
いわさん、NAKAです。
SPS0はボーレートと合ってますでしょうか?(クロックの分周)
わわいです
受信文字はきちんと読めてますか?
おはようございます。
>SPS0はボーレートと合ってますでしょうか?(クロックの分周)
ボーレートはあっています。
一応コード生成で作成したソースと設定値があっているかのチェックはしています。
>受信文字はきちんと読めてますか?
割込みでしか読み込んでいないのでMAINループでフラグを確認して読み込んでみます。
ボーレート等のシリアル設定が送受信側で異なっていて、受信エラー割り込みが発生しているとか?
シリアルでデータを送った後、SREIF0の値を確認してみてください。
1であれば、受信エラーが発生しています。
チョコです。
SCR01のEOC01(bit10)がセットされているので、受信エラーでINTSRE0が
発生するようになっています。
SREIF0がセットされても、SREMK0=1になっているので、割り込みはマスク
された状態のはずです。下記のようにSCR01の設定を変更することで、受信エラー
でもINTSR0が発生するはずです。
SCR01 = 0x4497U; → SCR01 = 0x4097U;