• 締切済み

H8マイコンについての質問です

現在H8マイコンでプログラムを実施しようと 思っております。 秋月電子のマザーボードにマイコンH3052Fを接続して、 PCからマザーボードにプログラムで書き込みをしようと 思っております。 書き込み方法については、HEW4、FDT4.08を使用する予定です。 HEW4でプログラムファイルをmotファイルまで作成して、 FDT 4.08でマイコンに書き込もうと思いますが、 Device H8/3052F PORT E8DIrect の設定でスタートしましたが、下記のようなエラーがでてしまって、 書き込めません。 エラー内容 Power will be set to 5.0v Opening port 'E8DirectPrepare' ... No E8 found to re-enumerate, looking for already re-enumerated E8Direct... Error No 17657: E8Direct/E8aDirectは見つけられませんでした Clock Frequency (External) = 25.0000MHz, Clock Mode = 0, CKM = 1, and CKP = N/A Connecting to device 'H8/3052F' on 'E8Direct' Configuration: 'BOOT Mode' connection - using emulated interface Opening port 'E8Direct' ... Error No 15026: 通信ポートがオープンできません PCは富士通のBIBLO LOOX M/G30を使用しており、windows7です。 現在推定する原因としては、接続がうまくいっていないのではと 考えております。 USBを使用して、接続をしておりますが、FDTのマニュアルをみたところ E8DirectはUARTと記載ありました。 UARTてなんですか?通常のUSB接続ではないのでしょうか? また、マザーボードにはRS-232Cもありますので、こちらで接続できるのでしょうか? ちなみにPCには、15pinの外部ディスプレイコネクタがあります。 マザーボードの方はRS-s232C 9pin(たぶんシリアル)なのですが、 15pinの外部ディスプレイコネクタと接続できますでしょうか? また、RS-s232C 9pinをUSBに変換できるコネクタはもっておりますが、 このUSBに接続して試しましたが、だめでした。 FDTのポートの接続方法について教えてください。 また、RS-s232C 9pinを接続する場合は、電源必要でしょうか? いろいろと質問して申し訳ないですが、教えてください。

みんなの回答

回答No.6

通信は解決したとのことで、良かったですね。 さて、I/Oポートの問題は、別件でご質問されたほうが良いのでは? 参考までに、AKI-H8/3052Fは、書き込み時も、通常動作時も「モード7」の設定ですよ。 書き込み時:MD0オープン、MD1オープン、MD2のみをショート 通常動作時:MD0~2全てオープン モード6は、ポート1、2、5 およびポートA の一部の機能がアドレス端子A23~A0となり、最大16M バイトのアドレス空間をアクセスできます。リセット直後は入力ポートになっています。したがってポート1、2、5 をアドレスバスとして使用する場合は、おのおのの対応するデータディレクションレジスタ(P1DDR、P2DDR、P5DDR)を1 にセットして、ポート1、2、5 を出力に設定してください。また、A23~A21を出力する場合には、BRCR のビット7~5 に0 をライトしてください(本モードではA20は常に出力となります)。 バスモードはリセット直後に、8 ビットバスモードとなり、すべてのエリアは8 ビットアクセス空間となります。ただし、ABWCR により、少なくとも1 つのエリアを16 ビットアクセス空間に設定した場合には、16 ビットバスモードとなります。 モード7は、内蔵ROM とRAM、内部I/O レジスタで動作するモードです。すべてのポートを使用することが できます。 モード7 はアドレス空間が1M バイトとなります。 各動作モードにおいて端子機能が変化します。 つまり、動作モードによりポート1~5、およびポートA の端子機能が切り替わります。 そういう意味では、ポートBの機能はモードには関係ないのですが、他の端子の機能が変わってしまいます。AKI-H8/3052Fは、単体では汎用のH8CPUボードですからどんなモードでも使えるように鳴っていますが、通常はCPUの外部へのメモリーアクセス等を行う外付けのハード構成でない限り、モード7で使います。

回答No.5

過去に多くのUSB機器を使用していませんか? ドライバなどのソフトウエアによっては、COMポート番号が2桁になると接続できなくなります。 私はHEWでE8aを使用しているときにこの現象が起きました。 現在物理的には繋げていない1桁台のCOMポート番号を、自己責任で強制的に割りつけて下さい。

g00m0534
質問者

お礼

ご回答ありがとうございます。 ポート番号はひとけたです。 書き込みできました。 どうやら原因はハードの接続不良になります。 ただし、思った通りの動きをしてくれません。 PB0~PB3に接続しているLEDがすべて 交互に点滅をするのかとおもいましたが、 ひとつのLEDが点滅しません。 また、秋月電子のマザーボードを使用しておりますが、 その説明だと、書き込み(ブートモード7)では MD2にジャンパー、通常動作(モード6)では MD0にジャンパーと記載ありましたので、その通り しましたが、通常動作で上手く動きませんでした。 かわりにジャンパーをすべて取り外して、 通常動作にして電源を入れなおすと、 ひとつのLED以外は交互に点滅するようになります。 なぜでしょうか?ご回答のほど何卒よろしくお願いいたします。 Processing file :"C:\WorkSpace\pio_test1\pio_test1\Debug\pio_test1.mot" Operation on User Flash Downloaded the operation module Writing image to device... [0x00000000 - 0x000000FF] Writing image to device... [0x00000400 - 0x0000047F] Writing image to device... [0x00000800 - 0x0000097F] Data programmed at the following positions: 0x00000000 - 0x000000FF Length : 0x00000100 0x00000400 - 0x0000047F Length : 0x00000080 0x00000800 - 0x0000097F Length : 0x00000180 768 Bytes programmed in 2 seconds 書き込みが完了しました

回答No.4

大変失礼をいたしました。 AKIH8/3052Fは、FDTを使ってこのAKIH8/3052Fマイコンボードをプログラムする事が可能です。必ずシリアルインターフェース(UART :Universal Asynchronous Receiver Transmitter,調歩同期方式による シリアル通信)で行います。 ところが現在では、R232Cのインターフェースを持たないパソコンが増えているために、ダイレクトにつなげることができません。 そこで、パソコンのUSB端子とAKIH8/3052Fマイコンボードのシリアルインターフェース(RS232C)端子との間に、USB-UART変換ICを搭載したケーブルをはさみ、そのケーブルの専用の変換ドライバソフトをパソコン側に組込んで、USBがあたかもパソコンのCOMポート(UART)に見えるようにして使うのが、現在最もよく使われている方法です。 重要なことは、「FDTがCOMポート番号の1桁以上には対応していない」ことです。 これはなかなか気が付きません。 もしも割り当てられるCOMポート番号が2桁になっていたら、現状使用していないCOM番号に強制的に設定して下さい。COMポート番号を変更する場合には、現在使用している番号と重複しないように十分注意して下さい。 方法は、下記手順に従って自己責任で行なって下さい。 http://hioki.jp/soudan/logger/pdf/3920.pdf

回答No.3

HEWはRenesas純正のコンパイラーですね。フラッシュ開発ツールキット ( Flash Development Toolkit ) とは、ルネサス製フラッシュ 内蔵マイコンのフラッシュメモリに対し書き込みを行うためのソフトウェアです。 残念ながらFDTは、統合開発環境のHEWから書き込む時と同じで、Renesasの専用の書き込み器(E8a)等を介してターゲットマイコンをプログラミングするツールです。直接ターゲットにプログラミングすることは出来ません。

g00m0534
質問者

お礼

ご回答ありがとうございます。 下記のサイトを参考にHEW4とFDTを使用していました。 下記のサイトではRS-232Cを使用して、HEW4とFDT を利用してプログラムを書き込んでいましたが、 違うのでしょうか? ご確認をお願いいたします。 http://homepage1.nifty.com/rikiya/program/fdt_setup/fdt_setup.html

noname#194317
noname#194317
回答No.2

> クロスケーブルとストレートケーブルをつなげて > 接続すれば上手く認識するのでしょうか? そういう問題ではありません。信号線とコモン線は同じですが、フロー制御の線をどうするかが千差万別なんですよ。確実に共通なのはDSUB9ピンの2,3,5ピンだけで、後はどうなっているか(どうすればいいか)は各機器のマニュアルで確認しないと解りません。 今のメッセージ内容からすると、PC側の設定はできているっぽいので、後はケーブルを何とかしてください。秋月のマニュアルに、ケーブルの結線図が出ていたはずです。 ちなみに、2,3,5ピンをそのままつなぐとストレートに、2<-->3,3<-->2,5<-->5とつなぐとクロスになります。他のピンも使われていますが、そこをどうすればいいかはさんざん述べたようにマニュアルで調べてください。

g00m0534
質問者

お礼

ご回答ありがとうございます。 秋月電子マザーボード結線図確認しました。 2pin TXD1 3pin RDD1 5pin gnd 7pin-8pin です。 ほかの結線は配線されていませんでした。 そのため、クロスケーブルを挟みました。 RS-232C(クロスケーブル)-RS-232C⇔USB変換ケーブル(ストレートケーブル)-PC で接続してみましたが、やはりだめでした。 ちなみに、RS-232C⇔USB変換ケーブル(ストレートケーブル)は 1pin CD 2pin RXD 3pin TXD 4pin DTR 5pin GND 6pin DSR 7pin RTS 8pin CTS 9pin RI エラーは下記の表示になります。 Clock Frequency (External) = 25.0000MHz, Clock Mode = 0, CKM = 1, and CKP = N/A Connecting to device 'H8/3052F' on 'COM4' Configuration: 'BOOT Mode' connection - using emulated interface Opening port 'COM4' ... Loading Comms DLL Loaded Comms DLL Initiating BOOT SCI sequence Attempting 9600 Attempting 4800 Attempting 2400 Attempting 1200 Error No 15024: ブートの合わせ込みに失敗しました あとは、どの辺を疑ったらよろしいのでしょうか?

noname#194317
noname#194317
回答No.1

> UARTてなんですか?通常のUSB接続ではないのでしょうか? UARTとは、シリアルポートのドライバICのことです。ドライバと言ってもソフトじゃなくて、ハード的に信号をドライブするものだと思ってください。で、PCとマイコンの間にE8aエミュレータなるものをはさみ、こいつがUSB-シリアル変換を行ってくれるアダプタのようです。ということは、E8aエミュレータを使用していない(シリアルポート直結)にもかかわらず、それを使って接続するように設定しているから、見つからないぞエラーが出ているものと考えられます。 実は秋月のキットはしばらく触ってなくて(以前は3048Fのボードを触っていた)、その時も開発環境は以下のリンク先のGCC Developer Liteだったんですが、シリアルポートで接続するソフトは例外なく、ポート設定は手動です。つまり、COM番号の何番を使って接続するかを指定するのはユーザー責任で、これが間違っているとつながりません。もしマザーボードからRS-232C端子が出ているなら、そっちを使う方がむしろ確実です。USB-シリアル変換の相性問題でつながらないトラブルは、事例に事欠きませんので。 http://www.besttechnology.co.jp/modules/knowledge/?GCC%20Developer%20Lite また、RS-232Cケーブルの内部結線は種類が複数あります。クロスケーブルと言っても一種類じゃないんですよ。これが違っているとやっぱりつながりません。なのでマイコンボート側のマニュアルなどを調べて、要求されている結線を調べておく必要があります。なお、DSUB15ピンでつなぐのはこれは全然無理です。共通点は、DSUBであると言うことだけ。 あとシリアルポートには電源供給機能などというしゃれたものはないので、電源は不要です。

g00m0534
質問者

お礼

ご丁寧にありがとうございます。 非常によくわかりました。 上手くRS-232Cのドライバがインストールされていなかったため、 PC上で認識されていませんでした。 インストールしたら認識されて、ポートNO.もわかりました。 >>また、RS-232Cケーブルの内部結線は種類が複数あります。クロスケーブルと言っても一種類じゃないんですよ。これが違っているとやっぱりつながりません。 ただし、上記については、2PINと3PINの配置が違っていました。 クロスケーブルとストレートケーブルをつなげて 接続すれば上手く認識するのでしょうか? 上記のせいなのか、下記のようなエラーがまだ表示されます。 FCF Settings Applied: H8/3052F, (C:\Program Files\Renesas\FDT4.08\kernels\ProtB\3052\Renesas\1_2_00\) Clock Frequency (External) = 25.0000MHz, Clock Mode = 0, CKM = 1, and CKP = N/A Connecting to device 'H8/3052F' on 'COM3' Configuration: 'BOOT Mode' connection - using emulated interface Opening port 'COM3' ... Loading Comms DLL Loaded Comms DLL Initiating BOOT SCI sequence Attempting 9600 Attempting 4800 Attempting 2400 Attempting 1200 Error No 15024: ブートの合わせ込みに失敗しました お手数ですが、ご回答を何卒よろしくお願いいたします。

関連するQ&A

  • H8マイコンでの開発について

    秋月電子通商でH8用のUSBでの開発ボード http://akizukidenshi.com/catalog/g/gK-00171/ を買おうと思っているのですが(マイコンはH8/3048Fを持っています)、 買う前に気になったことがいくつかあります。 (1)これはUSBでプログラムを書き込めるということですよね? (2)USBには色々な形の種類(Aタイプ、Bタイプなど)がありますが、パソコンとマイコンをつなぐのはどれを買えばいいのでしょうか? (3)電源は3048Fの場合、12Vで合っているでしょうか?また、電流は商品によって違う(1A、1.5Aなど)のですがどうすればいいのでしょうか?  現在、http://akizukidenshi.com/catalog/g/gM-00031/  を買おうと思っていますが大丈夫でしょうか?  (または、パソコンにつないだUSBから電圧が送られてきて付属のMAX662をつけることでプログラムを書き込め、電源は必要ないのでしょうか?) (4)パソコンとシリアル通信をする場合はUSBで出来るのでしょうか?また、もし違う場合はやり方を教えてください。 (5)HEW4を用いてプログラムを書き込もうと思うのですが大丈夫でしょうか?(開発環境はWindows7です) 以上です。質問が多くて申し訳ありません。 回答よろしくお願いします。

  • H8マイコンの選定に関して

    H8初心者で、評価用ボードしか利用したことがありません。 今回H8で本格的に作りこんでみたいと思いH8を買おうと思ったのですがいろいろ種類があって選定ができません。 H8マイコンを選定する上で条件があるのですが、以下を満たしている必要があります。 ・UARTを搭載している。 ・ADを利用したい。 ・ADをROMかなにかに書き溜めたい。 ・タイマー、もしくは内部時計を利用したい。 この条件でできるだけハードの改造なしで行いたいのですがなにかよいものはないでしょうか? もしくは、これらを実現するのに参考となる書籍などを教えて頂けないでしょうか? お手数ですが何卒ご教授くださるようお願いします。

  • H8(マイコン)のプログラムサイズ

    マイコンの勉強ということでH8/3694F(ROM:32KB、RAM:2KB)を 購入しました。 開発環境はルネサスのHEWを使い、プログラムは同社のFDTを使って 拡張子motファイルをROMに書き込んでいるのですが、そのmotファイル が59KBであることに気付きました。 59KBだとCPUのROMサイズ(32KB)を超えているのですが、これは32KB分 までしか書き込まれていないということになるのでしょうか? プログラム実行中は問題なく動作しているように見えるのですが・・・ また、プログラムサイズを簡単に確認する方法、見積もる方法など 参考になるサイトをご存知でしたら教えて下さい。 よろしくお願いいたします。

  • H8マイコンの書き込みエラーについてです。

    H8マイコンの書き込みエラーについてです。 H8/36087を使用してコンパイル完了となり、MOTファイルを書き込むのですが、書き込みエラーがでます。 エラー内容:「Err0040 ビットレート調整終了の合図を受信できませんでした」 このエラーに対して調べ、swの切り替え、ジャンパピンの設定、シリアルケーブル接続状態を確認したのですが、 それでも同じエラーがでます。 他に考えられる要素はないでしょうか? マイコンは、北斗電子ので、書き込みソフトは、付属のソフトとルネサスのflash development toolkitの二つを試してみたのですが駄目でした。 ちなみに、シリアル通信ポートは、RS232cケーブルの直接と、USBタイプの二つを試しても同じエラーがでました。

  • H8 マイコン セクションの設定について

    最近H8/3694Fを使ってマイコンの勉強をしております。 HEWを使ってコンパイルするときのセクションの設定に ついて質問があります。 プログラム・セクションの設定を一通り終え、ビルドすると 「L2321 (E) section "S" overlaps sction "P"」 とエラーメッセージが出てしまいました。 色々調べてみるとSはスタック領域、Pはプログラム領域 でこれに重なりができてしまっているようなのですが、 これ以上どうしてよいのかわからず困っています。 おそらくセクション設定を変更すればよいと思っていますが プログラム領域にどれくらい、スタック領域にどれくらい を配置すればいいというのはどうやって求めればよいのでしょう? HEWのメモリマップを表示させて見る方法があるようですが 見てもいまいちわかりませんでした。 使用環境:OS:WindowsXP、HEW4.04.01.001 以上、追記補足いたします。詳しい方教えていただけないでしょうか

  • H8とJTAGコネクタの接続について

    H8マイコン(Tiny,36057,CAN機能内蔵)にJTAGで書き込みをしたいのですが、マイコンとJTAG用コネクタの何pinと何pinを対応させればよいのでしょうか?ご存知の方教えていただけないでしょうか?

  • フロントパネルでUSB

    フロントパネルでUSBを使用できるようにしたいのですが、コネクタの接続方法がわかりません、どなたか教えてください。マザーボードの方は、+5V,SBD6-,SBD6+,GNDと書いてあり、ケースからでているコネクタには、+,port+,port-,-、と書いてあります。

  • H8マイコンとPCをUSBでシリアル通信

    H8マイコンとPCをUSBでシリアル通信 マイコン( H8/2215 )をUSBでPCと繋ぎ、RAM上にあるデータを シリアル通信で送りたいと思っています。 現在、書籍のサンプルソースを参考に図1のような構成で プログラムを実行すれば H8/2215 から PC_1 へデータが送れる ことを確認しました。 しかし、図2の構成で実行するとデータが送れません。 また、PCとは繋がず RS232C のケーブルだけをマイコンにさせば なぜか問題なく動作します。 このような状態なので、プログラムを試行錯誤しながら調整 しているのですがなかなかうまく通信出来ません。 図2のような構成でシリアル通信したい場合、どこをどんな風に 調整すれば良いのでしょうか? 参考URLでも何でも構いませんのでアドバイスお願いします。 図1  PC_1 <--- USB ---> H8/2215 <--- RS232C ---> PC_2 図2  PC_1 <--- USB ---> H8/2215 <サンプルソースの書籍> 「USBターゲット機器開発のすべて」(CQ出版社)  サンプルソースはルネサスのH8S/2215用USB-シリアル  変換サンプル・プログラム

  • H8マイコンのD/A変換について

    H8マイコンのD/A変換を使ってみようと思い、出力させるところまではできたのですが、最大出力にしたところ、無負荷時はAVrefが出るのですが、負荷に接続するとAVrefの半分の出力しか出ません。 負荷はアンプの入力(Mオーム)や抵抗(3kオーム)で試したのですが、結果は全く同じでした。 マイコンは、秋月のH8マイコンボードをそのまま使用していますので、ボード内の5V電源がAVrefに接続されています。 出力が半分になったときでも、AVrefは5Vを保っていました。 測定は、H8の84ピン(DA0)とVss間で、テスターとオシロを使い行いました。 なぜ出力が半分になってしまうのでしょうか。 以上、よろしくお願いいたします。

  • H8マイコンのシリアル通信について。

    H8マイコンでのシリアル通信についてお聞きしたいことがあります。 現在PCとマイコン(H8/3052F)をRS32Cでシリアル通信ができています。 今回は有線ではなく無線(Bluetooth)を利用してシリアル通信が行いたく、RBT-001というものを購入しました。 そのマニュアルには一番簡単に通信する方法としてPICマイコンとの例が挙げられており、要するに初期設定さえすれば無線を意識せずに使えるとの事だったのですが、どうも出来ていないみたいです。 --------------------私のプログラム---------------------- #include<3052.h> void initSCI1 (void){ int i; SCI1.SCR.BYTE = SCI1.SMR.BYTE = 0;//初期値は0、本文参照 SCI1.BRR = 80; //ビットレート for (i = 0; i <4000; i++) ; //待つ SCI1.SCR.BYTE = 0x30; //受信割り込み許可、送受信許可 SCI1.SSR.BYTE; //ダミーリード SCI1.SSR.BYTE = 0x80; //エラーフラグクリア } //1文字受信 char SCI1_IN_d(void){ //受信文字を返す。 unsigned char c; //受信データの格納変数 while (!(SCI1.SSR.BYTE & 0x78)); //受信またはエラーフラグが立つまで待つ if (SCI1.SSR.BIT.RDRF == 1) { //受信完了なら c = SCI1.RDR; //データを取り出す。 SCI1.SSR.BIT.RDRF = 0; //受信フラグクリア } else { SCI1.SSR.BYTE &= 0x80; //エラーならエラーフラグクリア c = 0; } return c; } //1文字送信 void SCI1_OUT_d(char c) //文字コードを受け取る。 { while (SCI1.SSR.BIT.TDRE == 0); //0でデータあり、1になるまで待つ。 SCI1.TDR = c; //受け取った文字を送信 SCI1.SSR.BIT.TDRE = 0; //TDREビットをクリア } //BLUETOOTH初期設定 void BT_Init(void){ SCI1_OUT_d(0x02); SCI1_OUT_d(0x52); SCI1_OUT_d(0x4E); SCI1_OUT_d(0x01); SCI1_OUT_d(0x00); SCI1_OUT_d(0xA1); SCI1_OUT_d(0x03); SCI1_OUT_d(0x03); return; } int main (void){ unsigned char rd; BT_Init(); initSCI1(); while(1){ rd=SCI1_IN_d(); SCI1_OUT_d(rd); } } ------------------------------------------------------------ 問題はmain文中「initSCI1();」でSCI1を初期化するとズット変な文字化けみたいなのを延々と吐き出して、逆に初期化しないとPCでなんらかのキーを押すとRBT-001は点滅はするけど、文字を返してこないという状況です。 なので「initSCI1();」がおかしいのかと思うのですが、有線では現にこれで出来ているのでなにが原因かわかりません。 良かったらどこがダメでどうするべきか教えてください。 本当に困っています。よろしくお願いします。 通信速度9600bps データ長8ビット長 ストップピット1 パリティ無 CPU最高動作周波数25MHz -------------------RBT-001マニュアルに記載されているサンプルプログラム------------------------- char text; void BT_Init(); void MPU_Init(); int TRISB,ANSEL,ANSELH; int _LCD_FIRST_ROW,_LCD_CURSUR_OFF,_LCD_CLEAR; void main(){ MPU_Init(); BT_Init(); while(1){ if(Uart1_Data_Ready()){ text = Uart1_Read(); Uart1_Write(text); Lcd_Chr_Cp(text); } } } void MPU_Init(){ TRISB = 0; ANSEL = 0; ANSELH = 0; Uart1_init(9600); Lcd_Init(); Lcd_Cmd(_LCD_FIRST_ROW); Lcd_Cmd(_LCD_CURSUR_OFF); Lcd_Cmd(_LCD_CLEAR); return; } void BT_Init(){ Uart1_Write(0x02); Uart1_Write(0x52); Uart1_Write(0x4E); Uart1_Write(0x01); Uart1_Write(0x00); Uart1_Write(0xA1); Uart1_Write(0x03); Uart1_Write(0x03); return; } -------------------------------------------------------------------