コンポートに接続されたハイパーターミナルに定数文字列を送信するためのCDCとしてAT90USB162(Minimus USBボード)を使用しようとしています。そこで、デモコードDemos / Device / ClassDriver / VirtualSerialを入手し、いくつかの変更を加えました。
makefile内:
MCU = at90usb162
BOARD = MINIMUS
F_CPU = 16000000
VirtualSerial.hの場合:
- AT90USB162にはJoystick.hがないため、Joystick.hに関連するすべてのエントリを削除しました
- functon SendSpecificString()のヘッダーを作成しました(Joystick.hに関連していた古いCheckJoystickMovement()と引き換えに)
VirtualSerial.cの場合:
SetupHardware()から:Joystick_Init()の呼び出しを削除したため、新しいコードは(コメントなしで)なります。
void SetupHardware(void)
{
MCUSR &= ~(1 << WDRF);
wdt_disable();
clock_prescale_set(clock_div_1);
LEDs_Init();
USB_Init();
}
void CheckJoystickMovement(void)を削除し、最初のものに基づいてvoid SendSpecificString(void)を作成しましたが、ジョイスティックのものはありませんでした。
void SendSpecificString(void)
{
char* ReportString = "data packet";
static bool ActionSent = false;
if ((ReportString != NULL) && (ActionSent == false))
{
ActionSent = true;
fputs(ReportString, &USBSerialStream);
}
}
そして最後にmain()で: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ハイパーターミナルでも同じ結果が得られます)。comportに接続すると、端末が期待どおりにスタックしませんが、文字列ReportString = "data packet"がハイパーターミナルに継続的に表示されることも期待していましたが、実際には何も表示されません。それでは、私は何を逃したでしょうか?
ありがとうございました。