2012-01-09 6 views
1

comport에 연결된 하이퍼 터미널에 상수 문자열을 보내기 위해 CD90으로 내 AT90USB162 (Minimus USB 보드)를 사용하려고합니다. 그래서 나는 데모 코드 데모/장치/ClassDriver/VirtualSerial있어 일부 변경했다 :LUFA를 문자열 전송을위한 CDC로 사용합니다.

  • 모두 제거 :

    MCU = at90usb162 
    BOARD = MINIMUS 
    F_CPU = 16000000 
    

    VirtualSerial.h에서 : 메이크에서

    을 Joystick.h와 관련된 항목은 AT90USB162가 없기 때문에

  • Functon의 머리글을 만들었습니다. SendSpecific 문자열()합니다 (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(); 
} 

는 공극 CheckJoystickMovement (공극)를 제거하고, 최초에 기초 공극 SendSpecificString (공극)을 만들지 만, 조이스틱 거즈없이 : 최종적

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 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); 
} 

그래, 그게 전부입니다.