Ich hoffe, das ist keine dumme Frage, aber ich bin nicht in der Lage, die Antwort auf mein Problem selbst zu finden.Microcontroller empfängt den Wert "255ld" kontinuierlich über virtuelle serielle Schnittstelle
Ich arbeite an einem Atmega32U4-Mikrocontroller-Gerät, das eine Reihe von Bytes empfangen und speichern soll. Mein Code basiert auf einer CDC Virtual Serial Treiber Vorlage aus der LUFA-Library 151115. Um meinen Code zu testen, benutze ich das sehr nützliche Tool ScriptCommunicator 04.11. Die Mikrocontroller-Einheit (MCU) ist über USB mit dem PC verbunden und wird vom PC-Host als serielles Kommunikationsgerät behandelt. Mein Betriebssystem ist Windows 7 64 Bit.
Derzeit schreibe ich eine Funktion, in der sechs Werte empfangen und gespeichert werden sollen. Dafür habe ich den folgenden Code:
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);
Ich habe bisher verwendeten einen ähnlichen Code-Schnipsel und alles schien in Ordnung zu arbeiten. Jetzt habe ich folgendes Problem festgestellt: Das Gerät erhält fortlaufend den Wert "255ld". Wenn ich den obigen Code mit dem ScriptCommunicator teste, erhalte ich diesen Wert sechs Mal (deshalb ist die printf-Anweisung im obigen Code enthalten).
Ich habe den Verdacht, dass dies passiert, weil Windows die MCU als ein übliches USB-Gerät, z. eine Maus? Könnte das der Fall sein?
Oder was könnte der Grund dafür sein?
Wie kann ich mein Problem umgehen?
Vielen Dank im Voraus für Hinweise und Antworten!
Keine Initialisierung der Geräte erforderlich? –
'" 255ld "' ist 5 Werte, nicht eins. – Olaf