Für Echtzeit-Anwendungen wie SimHub, wo deterministische Latenz und hohe Update-Raten kritisch sind, ist die native...
Warum ein Arduino Pro Micro aus unserer Sicht besser ist als ein Arduino Nano V3 für SimHub.
1. USB-Controller-Architektur: Native vs. Bridged
Arduino Pro Micro (ATmega32U4):
-
Integrierter USB 2.0 Full-Speed Controller im AVR-Core
-
Direct Memory Access (DMA)-fähige USB-Endpunkte
-
Hardware-Implementierung von USB-Protokollschichten (PHY, SIE - Serial Interface Engine)
-
Der Prozessor selbst handelt USB-Transaktionen auf Hardware-Ebene
-
Endpoint 0: Control (64 Byte), Endpoints 1-3: Interrupt/ Bulk/ Isochronous (je 64 Byte)
-
USB Clock: Aus internem 16MHz RC-Oszillator oder von externem 16MHz Crystal über PLL
Arduino Nano (ATmega328P + CH340G/FT232RL):
-
Zwei-Chip-Architektur mit USB-UART-Bridge
-
CH340G implementiert USB Device Stack in eigener Hardware (dedizierter RISC-Core)
-
Kommunikation zwischen Bridge und MCU über asynchrone serielle Schnittstelle (UART)
-
Baudrate-Limit: Praktisch max. 2Mbps (CH340G) bzw. 3Mbps (FT232RL) bei 16MHz AVR
-
USB-Latenz: ~1ms pro Bridge + ~1ms pro UART-Übertragung + AVR-Processing
2. USB Device Class Implementation
Pro Micro:
// Hardware-unterstützte USB HID Report Descriptor Implementation const uint8_t HID_ReportDescriptor[] PROGMEM = { 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x04, // USAGE (Joystick) 0xA1, 0x01, // COLLECTION (Application) // ... Hardware-gesteuerte Report-Übertragung };
-
Native HID (Human Interface Device) Class Support in Hardware
-
Polling Interval: Konfigurierbar bis 1ms (1000Hz)
-
Report Size: Bis 64 Bytes pro Interrupt Transfer
-
Keine Software-Overhead für USB-Protokollhandling
Nano:
-
CDC/ACM (Communications Device Class) über Bridge
-
Virtual COM Port (VCP) Emulation
-
Flow Control: RTS/CTS auf UART-Ebene erforderlich für zuverlässige High-Speed-Übertragung
-
Buffer Limitations: CH340G hat 128-Byte FIFO, FT232RL 384-Byte FIFO
3. SimHub-Kommunikationsprotokollanalyse
Pro Micro mit Native HID:
SimHub → USB Stack → HID Driver → Pro Micro (USB Interrupt)
↓
[USB Frame: SOF → IN Token → Data Packet → ACK]
↓
AVR: USBINT Interrupt → Endpoint Buffer Read → DMA to RAM
↓
Processing → HID Report Update → Endpoint ready for next poll
-
Latency: < 125μs (1 USB Frame bei 8kHz)
-
Jitter: < ±1μs (USB Synchronisierung)
-
Throughput: 64 Bytes/ms = 512 kbps (theoretisch)
Nano mit Serial Bridge:
SimHub → USB Stack → COM Port Driver → CH340G USB Core
↓
CH340G: USB Bulk Transfer → UART FIFO → Serial Transmission
↓
[Start Bit + 8 Data Bits + Stop Bit] × N @ 115200 baud = 868μs pro Byte!
↓
AVR: UART RX Complete Interrupt → Buffer in RAM
-
Latency: 2-10ms (abhängig von Baudrate und Buffering)
-
Jitter: > 100μs (UART asynchron, OS Scheduler)
-
Throughput bottleneck: UART-Schnittstelle
4. Timing- und Performance-Metriken
| Metrik | Pro Micro (32U4) | Nano (328P+CH340) |
|---|---|---|
| USB Poll Rate | 1000Hz (konfigurierbar) | 1-100Hz (OS-abhängig) |
| Interrupt Latency | 2-4 Clock Cycles (125-250ns @16MHz) | 20-40 Cycles + UART Sync |
| Data Consistency | Atomic HID Reports | Fragmented Serial Stream |
| Clock Synchronization | USB SOF Sync möglich | Asynchron (Crystal Tolerance ±100ppm) |
| Power Management | USB Suspend/Resume | Always-on (Bridge) |
5. SimHub-Spezifische Optimierungen
Pro Micro Vorteile für Dashboards/Shaker:
-
PWM-Generierung ohne CPU-Last:
// Hardware-PWM auf Timer1 (16-bit) TCCR1A = _BV(COM1A1) | _BV(WGM11); TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); ICR1 = 4096; // 12-bit Resolution OCR1A = value; // SimHub → HID → Direct PWM Update
-
-
Update Rate: Bis 4kHz PWM bei 16MHz
-
Jitter: < 62.5ns (1 CPU Cycle)
-
-
ADC-Sampling für Analog Inputs:
-
10-bit ADC mit 15kSPS
-
Free-running Mode mit DMA zu USB Endpoint
-
-
Encoder-Handling:
-
Pin Change Interrupts + Hardware Debouncing
-
Quadrature Decoding in Hardware (Timer2 Input Capture)
-
Nano Limitationen:
-
Serial Protocol Overhead: 30-40% für Start/Stop/Parity Bits
-
Flow Control Issues: RTS/CTS Implementation benötigt extra Pins
-
Buffer Overruns: Bei >115200 baud wird UART-FIFO überlaufen
6. Elektrische/Elektronische Unterschiede
Pro Micro:
-
USB D± Lines direkt an MCU (Series Resistors onboard)
-
ESD Protection: TVS Diodes auf USB Data Lines
-
Voltage Regulation: 5V → 3.3V LDO für USB PHY
Nano:
-
Galvanic Isolation: Bridge isoliert MCU von USB-Bus (Fehlerschutz)
-
Signal Integrity: CH340G hat bessere USB-Eye-Diagram Compliance
-
Power Sequencing: Separate Power Domains (MCU kann unabhängig von USB laufen)
7. Debugging & Development
Pro Micro:
-
USB DFU (Device Firmware Upgrade) Bootloader
-
Caterina Bootloader: 4096 Byte, ermöglicht HID + Serial gleichzeitig
-
USB Descriptor Debugging direkt über Endpoint 0
Nano:
-
STK500 Protocol über Serial
-
Bootloader: Optiboot (512 Byte)
-
Keine gleichzeitige Kommunikation während Flash möglich
Technisches Fazit:
Die Überlegenheit des Pro Micro liegt in der Single-Chip-USB-Implementierung mit hardware-integriertem USB 2.0 Stack. Dies eliminiert:
-
Protokoll-Overhead der UART-Bridge
-
Scheduler-Latenzen im OS-COM-Port-Stack
-
Buffer-Copies zwischen Bridge und MCU
Für Echtzeit-Anwendungen wie SimHub, wo deterministische Latenz und hohe Update-Raten kritisch sind, ist die native USB-Architektur des ATmega32U4 systemisch überlegen. Die UART-Bottleneck-Architektur des Nano begrenzt die Performance auf serielle Geschwindigkeiten, während der Pro Micro volle USB 2.0 Bandbreite (12Mbps) mit hardware-unterstützten Protokollen nutzt.
In Zahlen: Der Pro Micro bietet ~10x niedrigere Latenz, ~50x höhere Polling-Rate und ~5x höheren Datendurchsatz für SimHub-Anwendungen gegenüber einem Nano mit typischer 115200 Baud Konfiguration.
Leave a comment