Я пытаюсь использовать AT90USB162 (плату USB Minimus) в качестве CDC для отправки постоянной строки на гипертерминал, подключенный к компорту.
Итак, я получил демонстрационный код Demos / Device / ClassDriver / VirtualSerial и внес некоторые изменения:
В make-файле :
MCU = at90usb162
BOARD = MINIMUS
F_CPU = 16000000
В VirtualSerial.h :
- Удалены все записи, связанные с Joystick.h, поскольку у AT90USB162 его нет
- Создал заголовок functon SendSpecificString () (взамен старого CheckJoystickMovement (), который был связан с Joystick.h)
В 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 и включаю его. Появляется компорт (в моем случае № 6), и я могу подключиться к нему из гипертерминала (я использую HypoTerminal большую часть времени, но тот же результат происходит с Microsoft Hyperterminal). Когда я подключаюсь к компорту, терминал не застревает, как ожидалось, однако я ожидал также, что строка ReportString = «пакет данных» будет постоянно появляться в гипертерминале, но на самом деле ничего не появляется. Тогда что бы я пропустил?
Спасибо.