を介して連続的に値 "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デバイスとして扱っているとの疑いがあります。ネズミ?それは事実でしょうか?
また、これには他に何かがありますか?
問題を回避するにはどうすればよいですか?
ありがとうございました。
デバイスの初期化は必要ありませんか? –
'' 255ld "'は5つの値で、1つではありません。 – Olaf