pyonmae の回答履歴
- シリアルSRAMとEEPROMのデータ転送について
ルネサステクノロジのSHシリーズでCのプログラムを勉強しています。私が採用したSH7125にはDMACの機能がありませんので、勉強ですので効率的ではありませんが、シリアルSRAMである23LC1024とEPROMの25LC1024を外部接続してのプログラムを考えています。 16ビットのデータを23LC1024に逐次保存していき、計測が終了してから25LC1024に一括してデータ転送をする機能のプログラムです。 ハードウェアとしてはADCの入力ポートとシリアルRAM、EEPROMのICを付け、データの内容を確認するLCD表示器とポートEにLEDを取り付けましたが、このほかに追加する機能が必要でしょうか。 ここでいくつか疑問点があります。パラレルデータをシリアルデータに変換するにはソフトで行うのかSH7125にその機能があるかの確認はできませんでした。また、23LC1024から25LC1024に一括してデータを転送するにはどのようなプログラムをすればよいか見当がつきません。
- R8C/27のデータフラッシュに保存する
タイトルのとおり、R8C/27のデータフラッシュにデータを保存する方法に関して 言語はアセンブリです。セクションを設定して、MOV命令で読み書きできるのでしょうか。 ご教授お願い致します。また参考になるサイト等あれば教えてください。
- 締切済み
- その他(プログラミング・開発)
- new_okwave
- 回答数1
- PIC のデータEEPROMに書き込みができません
お世話になります。 PICのデータEEPROMへの初歩的な書き込みができずに悩んでいます。 ご経験のある方、私の誤りについてご教示いただければありがたく思います。 PICについてはいくつかの種類でプログラムを書いていますがEEPROMのデータ領域は初めてです。 各種のサイトでは簡単らしいのですが・・・ 当方の試験作業は次のとおりです。 対象チップ PIC16F819 パソコン Windows-XP 書き込み装置 PIC-kit3 書き込みソフト MP-LAB IDE V8.83 プログラム言語 HI-TECH C V9.83 電源 Pic-Kit3から5Vで供給 確認方法 ・MP-LAB- View- EEPROM- のFillmemoryにより、EEPROMにすべてFFH/00Hのいずれもが書き込めることを確認の上、256バイトすべてにFFH ・下記プログラムを走らせる (実行後1秒後に1回書き込み(十進15番地に十進20の例)、以降ランプの点滅。ランプの状態でひとまずの動作の正常は確認) ・MP-LAB- View- EEPROM- により確認・・(全部FFHのまま(泣)) そのほか、チップを新品に交換したり、書き込み時間をEEIFで検査するアルゴリズムにしてみたり、いろいろやってみましたが、壁にぶつかっています。 よろしくお願いいたします。 #include<htc.h> #ifndef _XTAL_FREQ #define _XTAL_FREQ 4000000 #endif __CONFIG(CP_OFF & BOREN_OFF & MCLRE_OFF & PWRTE_ON & LVP_OFF & WDTE_OFF & FOSC_INTOSCIO & DEBUG_OFF & CPD_OFF); void main() { OPTION_REG = 0b00000000; // output pullup OSCCON = 0b01100100; // internal OSC 4MHz TRISA = 0b11111110; // GP-A input RA7=output ADCON1 = 0b10000111; // No AD all digital TRISB = 0b00000000; // GP-B output INTCON = 0b00000000; // no interrupt RB1 = 0; //Green Lamp off RB3 = 0; //Red Lamp off while (WR = 1) { __delay_ms(1000); } EEADR = 15; EEDATA = 20; EEPGD = 0; GIE = 0; WREN = 1; EECON2 = 0x55; EECON2 = 0xaa; WR = 1; RB1 = 1; // Green Lamp __delay_ms(100); RB1 = 0; GIE = 1; WREN = 0; EWWW:; // IDLE Lamp Red RB3 = 1; __delay_ms(400); RB3 = 0; __delay_ms(500); goto EWWW; }
- R8Cのツールチェイン
仕事の関係上、外注からR8Cマイコンの ソースコードを提供して頂き、勉強がてら 色々とプログラムをいじってみようと HEW(無償評価版)で開いてみると 「Toolchain 'Renesas R8C Standard Toolchain, version 5.3.0.0' is missing form the following project(s)・・・・」 という警告メッセージが出ます。 単純に「R8Cのツールチェインを入れれば解決するだろう」と思い、 色々調べ、R8Cの上位バージョンの「M16C」のツールチェインを 使えば問題ないという情報を見つけ、HEWを 「【無償評価版】M16Cシリーズ, R8Cファミリ用・・・ V.6.00 Release 00」に 入れ替えプログラム(hws)を開く際、ツールチェインを 「Renesas M16C Standard Toolchain」に変更してみましたが 結果は同じでした。 ツールチェインが違うためか、ビルドが選択できない ためプログラムを書き換えることもできません。 一応素直に「Renesas R8C Standard Toolchain」を 探したのですが、見つかりません。 文章で素人ということはお分かりかと思いますが 解決策のご教授をお願い致します。
- オシロスコープ DPO4104 波形表示に関して
早速質問させていただきます。 現在、DPO4104 で 200~500μsec で発生する5Vの波形測定を行っています。 周期はばらばらで、実際に測定指定みると、画面に前波形の残像が残ってしまい。 全ての波形がつながったように見えてしまいます。 (測定停止にしても残像が残っています。) この残像を消すことはできないでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- iwatobi7
- 回答数5
- オシロスコープ DPO4104 波形表示に関して
早速質問させていただきます。 現在、DPO4104 で 200~500μsec で発生する5Vの波形測定を行っています。 周期はばらばらで、実際に測定指定みると、画面に前波形の残像が残ってしまい。 全ての波形がつながったように見えてしまいます。 (測定停止にしても残像が残っています。) この残像を消すことはできないでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- iwatobi7
- 回答数5
- SH7144でパルス幅を測定したい。
マイコン初心者です。 SH7144でPIOに接続された信号のパルス幅を測定したいです。 ネットで検索をしてH8-3048のサンプルプログラムを見つけたのですが、 SH7144への変更のしかがたが分かりません。 どなたか分かる方がいましたらお教えください。 初心者ですので、具体的に教えていただけると助かります。 ちなみに、下記がネットで見つけたH8-3048でのプログラムです。 宜しくお願いいたします。 /* メイン関数************************************************/ int main(void){ long counter; P1.DDR = 0xff; // port1出力に設定 表示LED PA.DDR = 0x00; // portA入力に設定 パルス入力用 ITU1.TCR.BYTE = 0x23; // GRAインプットキャプチャ,カウンタクリアGRA clock 1/8 ITU1.TIOR.BYTE = 0xCD; // GRA立下り,GRB立ち上がりインプットキャプチャ ITU.TSTR.BIT.STR1 = 0; // カウント停止状態 while(1){ while(PA.DR.BIT.B4 == 0){} // 入力パルス立ち上がり検知 ITU.TSTR.BIT.STR1 = 1; // ITU1 TCNTカウント開始 while(ITU1.TSR.BIT.IMFA == 0){} // GRAキャプチャ,パルス立下り検知 ITU1.TSR.BIT.IMFA = 0; // フラグをクリア ITU.TSTR.BIT.STR1 = 0; // ITU1 TCNTカウント停止 counter = ITU1.GRA; // カウント値の取得 P1.DR.BYTE = counter >> 4; // 8bitシフトさせP1に表示 } }
- SH7144でパルス幅を測定したい。
マイコン初心者です。 SH7144でPIOに接続された信号のパルス幅を測定したいです。 ネットで検索をしてH8-3048のサンプルプログラムを見つけたのですが、 SH7144への変更のしかがたが分かりません。 どなたか分かる方がいましたらお教えください。 初心者ですので、具体的に教えていただけると助かります。 ちなみに、下記がネットで見つけたH8-3048でのプログラムです。 宜しくお願いいたします。 /* メイン関数************************************************/ int main(void){ long counter; P1.DDR = 0xff; // port1出力に設定 表示LED PA.DDR = 0x00; // portA入力に設定 パルス入力用 ITU1.TCR.BYTE = 0x23; // GRAインプットキャプチャ,カウンタクリアGRA clock 1/8 ITU1.TIOR.BYTE = 0xCD; // GRA立下り,GRB立ち上がりインプットキャプチャ ITU.TSTR.BIT.STR1 = 0; // カウント停止状態 while(1){ while(PA.DR.BIT.B4 == 0){} // 入力パルス立ち上がり検知 ITU.TSTR.BIT.STR1 = 1; // ITU1 TCNTカウント開始 while(ITU1.TSR.BIT.IMFA == 0){} // GRAキャプチャ,パルス立下り検知 ITU1.TSR.BIT.IMFA = 0; // フラグをクリア ITU.TSTR.BIT.STR1 = 0; // ITU1 TCNTカウント停止 counter = ITU1.GRA; // カウント値の取得 P1.DR.BYTE = counter >> 4; // 8bitシフトさせP1に表示 } }
- picマイコンプログラム手順について
お世話になります。 pic16f88とキャラクタLCDを使った工作物を考えています。 タイマ1とCCPで入力されるパルス(ロー側)幅の時間を測り 得られた時間に定数を掛けて積算し続けてLCDに表示 そして、picの電源を切るときに積算した数値をEEPROMに保存 この様なことをさせたいのですがフローチャートが作れません。 どなたかフローチャートを書いて頂けませんでしょうか? どうぞ宜しくお願いいたします。
- 締切済み
- その他(プログラミング・開発)
- rumi1975
- 回答数4
- picマイコンプログラム手順について
お世話になります。 pic16f88とキャラクタLCDを使った工作物を考えています。 タイマ1とCCPで入力されるパルス(ロー側)幅の時間を測り 得られた時間に定数を掛けて積算し続けてLCDに表示 そして、picの電源を切るときに積算した数値をEEPROMに保存 この様なことをさせたいのですがフローチャートが作れません。 どなたかフローチャートを書いて頂けませんでしょうか? どうぞ宜しくお願いいたします。
- 締切済み
- その他(プログラミング・開発)
- rumi1975
- 回答数4
- ゲームセンターにあったゲーム
動いてる敵に当たらないように線を引いていって 陣地を取っていくゲームでステージクリアすると電話番号が表示されるギャルゲーっぽい絵のゲームをご存知のかた教えて下さい
- PIC12F615でGP5が使えません(T_T)
お世話になりますm(_ _)m PICマイコン初心者です(^^;) MPLAB IDE v8.80で、C言語でプログラムして、 PICkit3を使ってPIC12F615に書き込んでいます。 GP2にスイッチ、GP5にLEDを接続して、スイッチを押すとLEDが点灯するプログラムです。 これだけなら、普通にGP5は利用できます。 タイトルの「GP5が使えない」というのは、 このプログラムに、 割り込みを使用するために INTE=1; を書き込むと何故か、GP5が使えなくなります。 入力も出力も出来ません。 どなたか分かる方、よろしくお願い致しますm(_ _)m ↓プログラム↓ ---------------------------------------------------------------- #include <htc.h> __CONFIG(OSC_4MHZ & UNPROTECT & MCLREN & PWRTEN & WDTDIS & INTIO & BORDIS); void main(void) { //PIC12F615仕様 CMCON0 = 0x07 ; //コンパレート無効化 ANSEL = 0x00 ; //全てデジタル TRISIO = 0b00001100 ; //入力出力設定 WPU = 0b00000100; //プルアップビット指定 GPPU = 0; //プルアップ有効化 GPIO = 0 ; //各ピンデフォルト値 INTEDG = 0; //INT割り込み立ち下がりエッジ INTE = 1; GIE = 1; while(1) { if(!GP2) GP5=1; else GP5=0; } } ----------------------------------------------------------------
- ベストアンサー
- その他(プログラミング・開発)
- tanatanakzh
- 回答数2
- PIC12F615でGP5が使えません(T_T)
お世話になりますm(_ _)m PICマイコン初心者です(^^;) MPLAB IDE v8.80で、C言語でプログラムして、 PICkit3を使ってPIC12F615に書き込んでいます。 GP2にスイッチ、GP5にLEDを接続して、スイッチを押すとLEDが点灯するプログラムです。 これだけなら、普通にGP5は利用できます。 タイトルの「GP5が使えない」というのは、 このプログラムに、 割り込みを使用するために INTE=1; を書き込むと何故か、GP5が使えなくなります。 入力も出力も出来ません。 どなたか分かる方、よろしくお願い致しますm(_ _)m ↓プログラム↓ ---------------------------------------------------------------- #include <htc.h> __CONFIG(OSC_4MHZ & UNPROTECT & MCLREN & PWRTEN & WDTDIS & INTIO & BORDIS); void main(void) { //PIC12F615仕様 CMCON0 = 0x07 ; //コンパレート無効化 ANSEL = 0x00 ; //全てデジタル TRISIO = 0b00001100 ; //入力出力設定 WPU = 0b00000100; //プルアップビット指定 GPPU = 0; //プルアップ有効化 GPIO = 0 ; //各ピンデフォルト値 INTEDG = 0; //INT割り込み立ち下がりエッジ INTE = 1; GIE = 1; while(1) { if(!GP2) GP5=1; else GP5=0; } } ----------------------------------------------------------------
- ベストアンサー
- その他(プログラミング・開発)
- tanatanakzh
- 回答数2
- H8マイコンの出力周波数について
H8マイコン初心者からの質問です。 H8マイコンを用いてsin波を出力したいと考えているのですが、 どれぐらいの周波数まで出力可能なのでしょうか? (H8マイコンは種類がいくつかあり、クロック周波数もさまざまあります。 その中で、できるだけ高い周波数のsin波を出力したいと考えています。) 質問記述が曖昧ですが、ご回答いただければ幸いです。
- ベストアンサー
- その他(プログラミング・開発)
- H83048f
- 回答数3
- H8マイコンの出力周波数について
H8マイコン初心者からの質問です。 H8マイコンを用いてsin波を出力したいと考えているのですが、 どれぐらいの周波数まで出力可能なのでしょうか? (H8マイコンは種類がいくつかあり、クロック周波数もさまざまあります。 その中で、できるだけ高い周波数のsin波を出力したいと考えています。) 質問記述が曖昧ですが、ご回答いただければ幸いです。
- ベストアンサー
- その他(プログラミング・開発)
- H83048f
- 回答数3
- PICでのプログラミングについて教えて下さい。
現在電圧計を製作していて4桁の7セグダイナミック点灯で行き詰っております(超初心者です)。 PICは16F873Aを使用、コンパイラはCCS、書き込みはピックライタ、あとシリアルデバッカを使用しています。 外部から電圧をかけそれをAD変換し、AD変換結果(0~5V)を7セグに表示させようとしています。 一応今の状態でも電圧表示はできていることはできているのですが一桁目から4桁目まで目で追えるくらい遅いスピードでこれを改善したいです。ソースは下記のソースを製作しました。この状態で3日間悩んでおります...知恵をお貸しいただけないでしょうか。 よろしくお願いします。 #include <16F873a.h> #device ADC=10 //A/D変換10bitモード #use fast_io(A) /* TRISレジスタの設定が必要 */ #use fast_io(B) #use fast_io(C) #use delay (clock=10000000) //10MHz #use RS232( BAUD = 9600, XMIT = PIN_C6, RCV = PIN_C7, PARITY = N, BITS = 8 ) #fuses HS,NOWDT,PUT,NOPROTECT,NOBROWNOUT,NOLVP #define VOLTAGE PIN_A0 // (in) #define CORRENT PIN_A1 // (in) #define VREF1 PIN_A2 // (in) #define VREF2 PIN_A3 // (in) #define RESERVE1 PIN_A4 // (out) #define RESERVE2 PIN_A5 // (out) #define LED_DP PIN_B0 // (out) #define LED_A PIN_B1 // (out) #define LED_B PIN_B2 // (out) #define LED_C PIN_B3 // (out) #define LED_D PIN_B4 // (out) #define LED_E PIN_B5 // (out) #define LED_F PIN_B6 // (out) #define LED_G PIN_B7 // (out) #define DIG_0 PIN_C0 // (out) #define DIG_1 PIN_C1 // (out) #define DIG_2 PIN_C2 // (out) #define DIG_3 PIN_C3 // (out) #define INI_TRIS_A_VAL 0x0F // 7:x 6:x 5:out 4:out 3in 2:in 1:in 0:in #define INI_TRIS_B_VAL 0x00 // 7:out 6:out 5:out 4:out 3out 2:out 1:out 0:out #define INI_TRIS_C_VAL 0x80 // 7:in 6:out 5:out 4:out 3:out 2:out 1:out 0:out int ct;//数字の更新間隔 long val;//表示する数字 int digit;//表示する桁 //表示パターン int segment_data[]={0x81,0xF3,0x49,0x61,0x33,0x25,0x05,0xF1,0x01,0x31}; char st[4]; void main() { float ata1,data2,data3,data4; long data5; long val; SET_TRIS_A( INI_TRIS_A_VAL ); SET_TRIS_B( INI_TRIS_B_VAL ); SET_TRIS_C( INI_TRIS_C_VAL ); setup_adc_ports(AN0_AN1_VSS_VREF); setup_adc(ADC_CLOCK_DIV_32); //Fosc/32 最高速度 digit=0; ct=1;//数字を更新する周期 val=0;//表示する値 while(1) { output_low(RESERVE2); //動作ランプ //////////////////////電圧測定///////////////////////////////// set_adc_channel(0); delay_us(50); //アクイジションタイム待ち(マイクロ秒) data1 = read_adc(); //AD変換結果読み込み printf("ADC V %9.3f \r\n", data1 ); //AD変換データ表示 data2 = (data1 * 4.959695) / 1024; //BCDに変換 printf("Volt %6.3f \r\n", data2 ); //変換データ表示 data5 = data2 * 1000 ; //data2を整数に変換 val = data5 ; printf("val %ld \r\n", val); //整数にし表示 /////////////////////7SEG表示////////////////////////////////// ct --; if(ct == 0){//数字の更新 st[3]=val/1000; //4桁目数値取り出し st[2]=val/100-st[3]*10;//3桁目数値取り出し st[1]=val/10-((st[3]*100)+(st[2]*10));//2桁目数値取り出し st[0]=val%10;//あまり val++; if(val==1000) val=0; ct=20; } if(digit== 3){//第4桁の表示 output_b( segment_data[st[3]]); output_bit(DIG_0,1); //4桁表示開始 output_low(LED_DP); //小数点表示 delay_us (5); //表示期間(ミリ秒) output_bit(DIG_0,0); //表示を消す output_high(LED_DP); //小数点を消す delay_us(50); //待ち(マイクロ秒) } if(digit== 2){ output_b( segment_data[st[2]]); output_bit(DIG_1,1); delay_ms (5); output_bit(DIG_1,0); delay_us(50); } if(digit== 1){ output_b( segment_data[st[1]]); output_bit(DIG_2,1); delay_ms (5); output_bit(DIG_2,0); delay_us(50); } if(digit == 0){ output_b( segment_data[st[0]]); output_bit(DIG_3,1); delay_ms (5); output_bit(DIG_3,0); delay_us(50); } digit ++;//表示桁を変更 if(digit ==4 ) digit=0; } }
- H8/SX で I2C通信
H8/SX 1655 を使ってI2C通信を試みています。 マニュアルには、送信レジスタ(ICDRT)にデータを書き込めば 自動的にシフトレジスタ(ICDRS)に転送されて、SCL SDA 端子から クロックパルスが出力されると書かれています。 とすると、パルスの出力だけなら Reset 後 MSTP.CRB.BIT._IIC0 = 0; /* 寝ているI2C0を叩き起こす */ IIC20.ICDRT = 0x90; /* [Start byte] Slave Address + Write */ この2行で事足りると思うのですが、実際にはクロックパルスは 出力されません。きっと必要な何かが不足しているのだと 思うのですが、当方、初心者にて皆目見当がつきません。 どなたかご教示いただけないでしょうか。 因みに動作モードは、モード6とモード7で試してみました。 よろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- holonic_holon
- 回答数1
- WriteFile()でのデータ送信ができなくなる
VisualC++6.0にて、PCと通信相手の機械との間で、同期のシリアル通信を行うツールを作成していますが、たまにWriteFile()のデータ送信が完了しない状況になってしまいます。 問題が発生している状況は、以下となります。 ・WriteFile()を実行した際、戻り値としてTRUEが返却されるが、書き込んだバイト数が0byteとなっていて、送信できていない。 ・上記問題が発生した際でも、ReadFile()でのデータ受信は正常に出来る。 ・WriteFile()やReadFile()の実行前後でClearCommError()を実行しても、いずれもオーバーフロー等のエラー情報は検出できない。 ・上記問題が発生した際、GetLastError()=0となり、エラー情報は検出できない。 ・ツールを最小化したり、IE等のプログラムを立ち上げたりした際に、上記問題が発生しやすい。 ・DCB構造体のfDtrControlとfRtsControlをDISABLEやENABLEに変更したが、状況は改善しなかった。 ・VisualStudio2005のC++にてツールを作り直したが、状況は改善しなかった。 ・処理中にSleep(1)を入れて、WriteFile()とReadFile()の間隔を広げると問題は発生しなくなる。ただし、ツールの処理時間が倍以上となってしまう為、Sleepを入れることでの解決はしたくない。 また、PCと通信相手の機械との間の通信内容は、以下となります。 ・上記問題が発生するまでの通信は、正常にできている。 ・シリアル通信は、仮想COMポートによるUSB2.0の通信。 ・SetCommTimeouts()にて、Read/Write共に、タイムアウト時間を1500msとしている。 ・通信相手からの1回あたりのデータサイズは、最大4100kByte。また、5分間で約500MByteのデータがPC側へ通知される。 ・PCからは、通信相手からのデータを受信した後、ACKとして8Byteのデータを送信する。 ・PCは、USB2.0に対応したWindowsXPとVistaで上記問題が発生することを確認した。 私としては、問題が起こるまでの通信は正常に出来ている点や、Sleepを入れることで、問題が発生しなくなる点から、ツールの不具合ではなく、PC内部でデータ送信できなくなる問題が発生しているのではないかと考えています。しかし、問題の特定には至っていません。 どうか上記問題として考えられる原因や、原因特定の為の調査方法をご教示ください。 よろしくお願いします。
- 仮想ベクタテーブルについて
私、このたび10年ぶりにマイコンプログラム制作をすることになったので、現在必死に勉強しておりますがどうしてもわからないことがあり質問いたしました。 現在は昔と違い、プログラムの書き換えが簡単にできるようにRAM上にフラッシュのプログラムをコピーして、RAM上でプログラムを起動するのが一般的なやり方のようですが、その際、仮想ベクタテーブルはなぜ必要なのでしょうか? ROMの先頭アドレスからマッピングされた通常のベクタテーブルに、RAMにコピーした関数のアドレスを登録しておけばよいように思うのですが? フラッシュの書き換え回数の問題があるからといっても、ベクタテーブルはアドレスを登録しておくだけだから、通常でしたら頻繁に書き換えなど怒らないかと思うのですが。。。? なぜ仮想ベクタテーブルというやり方をしなくてはいけないのかよくわかりません。 どなたかわかりやすくご教授下さい。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- danna1123
- 回答数7
- WriteFile()でのデータ送信ができなくなる
VisualC++6.0にて、PCと通信相手の機械との間で、同期のシリアル通信を行うツールを作成していますが、たまにWriteFile()のデータ送信が完了しない状況になってしまいます。 問題が発生している状況は、以下となります。 ・WriteFile()を実行した際、戻り値としてTRUEが返却されるが、書き込んだバイト数が0byteとなっていて、送信できていない。 ・上記問題が発生した際でも、ReadFile()でのデータ受信は正常に出来る。 ・WriteFile()やReadFile()の実行前後でClearCommError()を実行しても、いずれもオーバーフロー等のエラー情報は検出できない。 ・上記問題が発生した際、GetLastError()=0となり、エラー情報は検出できない。 ・ツールを最小化したり、IE等のプログラムを立ち上げたりした際に、上記問題が発生しやすい。 ・DCB構造体のfDtrControlとfRtsControlをDISABLEやENABLEに変更したが、状況は改善しなかった。 ・VisualStudio2005のC++にてツールを作り直したが、状況は改善しなかった。 ・処理中にSleep(1)を入れて、WriteFile()とReadFile()の間隔を広げると問題は発生しなくなる。ただし、ツールの処理時間が倍以上となってしまう為、Sleepを入れることでの解決はしたくない。 また、PCと通信相手の機械との間の通信内容は、以下となります。 ・上記問題が発生するまでの通信は、正常にできている。 ・シリアル通信は、仮想COMポートによるUSB2.0の通信。 ・SetCommTimeouts()にて、Read/Write共に、タイムアウト時間を1500msとしている。 ・通信相手からの1回あたりのデータサイズは、最大4100kByte。また、5分間で約500MByteのデータがPC側へ通知される。 ・PCからは、通信相手からのデータを受信した後、ACKとして8Byteのデータを送信する。 ・PCは、USB2.0に対応したWindowsXPとVistaで上記問題が発生することを確認した。 私としては、問題が起こるまでの通信は正常に出来ている点や、Sleepを入れることで、問題が発生しなくなる点から、ツールの不具合ではなく、PC内部でデータ送信できなくなる問題が発生しているのではないかと考えています。しかし、問題の特定には至っていません。 どうか上記問題として考えられる原因や、原因特定の為の調査方法をご教示ください。 よろしくお願いします。