2012-01-09 9 views
1

私は、コンパイルに接続されたハイパーターミナルに定数文字列を送信するために、私のAT90USB162(Minimus USBボード)をCDCとして使用しようとしています。 は、だから私はデモコードのデモ/デバイス/ ClassDriver/VirtualSerialを持って、いくつかの変更を行わ:文字列の送信にCDCとしてLUFAを使用

  • はすべて削除:

    MCU = at90usb162 
    BOARD = MINIMUS 
    F_CPU = 16000000 
    

    VirtualSerial.hで:メイクで

    をJoystick.hに関連するエントリは、AT90USB162にはありません。

  • Functonのヘッダを作成しました。SendSpecific文字列()VirtualSerial.c

(Joystick.hに関連していた古いCheckJoystickMovement()、のと引き換えに):

SetupHardwareから():Joystick_Initまで除去呼び出し() 、新しいコードは(コメントなしで)です。メインで

void SendSpecificString(void) 
{ 
    char*  ReportString = "data packet"; 
    static bool ActionSent = false; 

    if ((ReportString != NULL) && (ActionSent == false)) 
    { 
     ActionSent = true; 
     fputs(ReportString, &USBSerialStream); 
    } 
} 

そして最後に():交換が、ジョイスティック詰め込むなし、ボイドCheckJoystickMovement(ボイド)を除去し、ボイドSendSpecificString(ボイド)を作成し、最初に基づいて

void SetupHardware(void) 
{ 
    MCUSR &= ~(1 << WDRF); 
    wdt_disable(); 
    clock_prescale_set(clock_div_1); 
    LEDs_Init(); 
    USB_Init(); 
} 

CheckJoystickMovement()void SendSpecificString()呼び出しを呼び出します。

int main(void) 
{ 
    SetupHardware(); 
    CDC_Device_CreateStream(&VirtualSerial_CDC_Interface, &USBSerialStream); 
    LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); 
    sei(); 

    for (;;) 
    { 
     SendSpecificString(); 
     CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface); 
     CDC_Device_USBTask(&VirtualSerial_CDC_Interface); 
     USB_USBTask(); 
    } 
} 

コードビルドと私はAT90USB162に焼き付けて有効にします。 comport(私の場合#6)が表示され、ハイパーターミナルから接続することができます(私はほとんどの場合HypoTerminalを使用していますが、Microsoft HyperTerminalで同じ結果が発生します)。私がcomportに接続すると、端末が予想どおりに立ち往生することはありませんが、文字列ReportString = "data packet"はハイパーターミナルに連続して表示されることが予想されますが、実際には何も表示されません。それから、私は何を逃したでしょうか?

ありがとうございます。

+1

端末プログラムのビットレートとMCUボードの伝送レートが一致しているかどうかを確認してください。 –

+0

はいそれは一致します。 – Rego

答えて

1

問題がfputsやCDC_Device_SendStringの呼び出しではないことが判明しました。条件ループは不要で、この場合十分です。

void SendSpecificString(void) 
{ 
    char*  ReportString = "data packet\r\n"; 
    fputs(ReportString, &USBSerialStream); 
} 

それだけです。

関連する問題