- 締切済み
Tera Termを使ったマイコンとの通信
H8/3048Fと通信をしようと思い、「Tera Term」を使ってみたのですが、 下のプログラムを実行してもTera Termに何も表示されません(COMの番号はしっかり確認しました) while( 1 ){ ITU0.TCNT = 0; while( ITU0.TCNT < 40000 ); counter++; if( counter > 100 ){ if( P4DR == 0x00 ){ //LEDを点滅させる(確認用) P4DR = 0x10; } else{ P4DR = 0x00; } while( ( SCI0.SSR.BYTE & 0x80 ) == 0 ); SCI0.TDR = 'A'; //Aを送信する SCI0.SSR.BYTE &= ~0x80; counter = 0; } } SCI0の設定は int i; SCI0.SCR.BYTE = 0x00; SCI0.SMR.BYTE = 0x00; SCI0.BRR = 51; for( i = 0 ; i < 1000 ; i++); i = SCI0.SSR.BYTE; SCI0.SSR.BYTE = 0x80; SCI0.SCR.BYTE = 0x30; となっております。 このプログラムを実行すると確認用のLEDは点滅しますが、Tera Termには何も表示されません。 どこか間違っているところなどがあれば教えていただけないでしょうか? ちなみに、使用しているOSはWindows7です。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- KEIS050162
- ベストアンサー率47% (890/1879)
どういう環境で実験されているのか(どういうマイコンボードなのか)分りませんので、チェックのポイントのみ。 1) Windows7のPCは、COMポート(RS232Cポート)が実装されているものですか? もし、もう一台あれば、PC同士でTeraTermで通信、もし一台で2ポート持っているものであれば、その2ポートをRS232Cケーブル(クロスケーブル)で接続して、TeraTermの設定と、ケーブルをチェックする。 これで、先ずはPCの環境を確認する。 2)マイコンボードのRS232Cポート(UART)の仕様を確認。 出力の規格がRS232Cになっているか? (CMOSレベルの出力で、RS232CドライバーICを別付けしないといけない、等の条件はないか?) 配線は、DTEかDCEか?(これによってPCとの接続がクロスかストレートか決まります) 3)通信部分は、マイコンボードか、マイコンのアプリケーションノートなどのサンプルコードなどを利用し、再チェックする。 4)非同期(調歩同期)ですよね?ボーレートの設定(マイコンボードの仕様書に、マスタークロックとBRRレジスタ設定の関係が記載されているはず)がPC側と同じになっているか? 5)データ長、ストップビット長、パリティがPC側と同じになっているか? 経験的には、4)、5)は上の1~3が間違いなければ、文字化けでもなんでも、なにかは出るはずだと思います。 怪しいのはやはりケーブルの結線(クロスかストレートか)と、送信処理自体のフローが怪しい気がします。 市販のマイコンボードであれば、その仕様が公開されているWebサイトなどを紹介すれば、もう少し、詳しい回答が得られるかも知れません。 あと、TeraTermでCOMポートをオープンした時の設定状態も参考になるはずです。 私自身、H8は詳しくないので、参考にはならないかも知れませんが、取り急ぎ。