2016-10-06 18 views
1

を介して連続的に値 "255ld"を受信します。これは愚かな質問ではないことを願っていますが、自分で自分の答えを見つけることができません。マイクロコントローラは、仮想シリアルポート

私はAtmega32U4マイクロコントローラデバイスで作業しています。これは、一連のバイトを受信して​​格納することになっています。私のコードは、LUFA-Library 151115のCDC Virtual Serialドライバテンプレートに基づいています。私のコードをテストするために、私は非常に便利なScriptCommunicator 04.11ツールを使用します。マイクロコントローラユニット(MCU)は、USBを介してPCに接続され、PCホストによってシリアルCOMポートデバイスとして扱われます。私のOSはWindows 7 64ビットです。

現在、6つの値を受け取って保存する関数を作成しています。

int16_t Register_1 = 0;  
int16_t Register_2 = 0;  
int16_t Register_3 = 0;  

int16_t Register_4 = 0; 
int16_t Register_5 = 0; 
int16_t Register_6 = 0;  

int16_t serial_byte = 0; 
int8_t loop = 1; 

do 
{ 
    serial_byte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface); 

    serial_byte &= 0x00FF; 

    switch (loop) 
    { 
     case 1:  Register_1 = ad7194_byte;  break; 
     case 2:  Register_2 = ad7194_byte;  break; 
     case 3:  Register_3 = ad7194_byte;  break; 
     case 4:  Register_4 = ad7194_byte;  break; 
     case 5:  Register_5 = ad7194_byte;  break; 
     case 6:  Register_6 = ad7194_byte;  break; 
    } 


    CDC_Device_USBTask(&VirtualSerial_CDC_Interface); 

    USB_USBTask(); 

    loop ++ ; 

    printf("%i" PRId32 "\n", serial_byte) ; 

    _delay_ms(1000); 

} while (loop < 7); 

は、私が以前に同様のコードスニペットを使用している、すべてが正常に動作しているように見えた: は、そのために私は次のコードを使用します。今私は以下の問題を特定しました: デバイスは値 "255ld"を継続的に示しています。 ScriptCommunicatorで上記のコードをテストすると、この値が6回受け取られます(これがprintf-statementが上記のコードに含まれている理由です)。

私は、WindowsがMCUを一般的なUSBデバイスとして扱っているとの疑いがあります。ネズミ?それは事実でしょうか?

また、これには他に何かがありますか?

問題を回避するにはどうすればよいですか?

ありがとうございました。

+0

デバイスの初期化は必要ありませんか? –

+0

'' 255ld "'は5つの値で、1つではありません。 – Olaf

答えて

1

フォーマットの誤りがあります。

int16_t serial_byte = 0; 
//   v (remove i) 
// printf("%i" PRId32 "\n", serial_byte) ; 
//    16 not 32 
printf("%" PRId16 "\n", serial_byte) ; 
0

私の問題を直接解決することはできませんでしたが、ソリューションに感謝しました。

ソリューション: 私はMCUに何も送信していませんでしたが、私は255の値を受け取りました。 But: バイトが受信されない場合、LUFA CDC_Device_ReceiveByte関数は-1を返します。 serial_byteの前にその値を確認するのを忘れていた& = 0x00FF;ステートメント。 -1の値が混ざり、255の値が判明しました。 もう一度愚かな間違い、それは私にもう一度多くの時間を要した。

関連する問題