トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

PSoC3 USBUART デバイスが再起動時におかしくなる問題

[電子工作]

現象

  • PSoC の USBFS (USB-UART) デバイスのサンプル(エコーする)コードを参考に USB-UART デバイスを作成すると、接続したまま PC 再起動をするとデバイスが正常に動作しない

対処

・PSoC1 の時のサンプルと同じ問題を引きずっている。
・バスリセットがかかったら再コンフィグレーションされるまで待つべき

[出典] PSoC HID デバイスが再起動時にフリーズする問題

メイン部のコード修正例

・USBUART_1_bGetConfiguration() を常に監視し、false になったら 再Init するように修正。

#define LED_UNCONFIG (0x01)
#define LED_CONFIGURED (0x02)

void main()
{	
 /* Initialization Code: */
 CYGlobalIntEnable; 	
 USBUART_1_Start(0,USBUART_1_3V_OPERATION);	
 /* Main Loop: */
 for(;;) 
 {
  // Wait until ready and reset 
  Control_Reg_1_Write(LED_UNCONFIG) ; // for PSoC3 DVK LED
  while(!USBUART_1_bGetConfiguration());
  USBUART_1_CDC_Init();

  // Loop until reset
  Control_Reg_1_Write(LED_CONFIGURED) ; // for PSoC3 DVK LED
  while(USBUART_1_bGetConfiguration()) {	
   Count =USBUART_1_bGetRxCount();
   if(Count!=0) {
    USBUART_1_ReadAll(Buffer);
    USBUART_1_Write(Buffer, Count);
    while(!USBUART_1_bTxIsReady()){
     if (!USBUART_1_bGetConfiguration()) break;	
    }/* Wait for Tx to finish */ 
   }
  }
 }
}

 カテゴリ : もくしいゲームレシピコンピュータ雑文生活電子工作おいしい店マップ

                  Topページへ | もてないSNS「もくしい」