을 통해 계속해서 "255ld"값을받습니다. 바보 같은 질문이 아니길 바래요. 내 문제에 대한 답을 직접 찾을 수는 없습니다.마이크로 컨트롤러는 가상 시리얼 포트
저는 일련의 바이트를 받고이를 저장해야하는 Atmega32U4 마이크로 컨트롤러 디바이스에서 작업하고 있습니다. 내 코드는 LUFA-Library 151115의 CDC 가상 직렬 드라이버 템플릿을 기반으로합니다. 내 코드를 테스트하기 위해 ScriptCommunicator 04.11이라는 매우 유용한 도구를 사용합니다. MCU (microcontroller unit)는 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가 아닌 하나의 값입니다. – Olaf