Ci sono vantaggi nell'usare un chip USB separato e nel far comunicare l'AVR tramite il suo UART.
Uno stack USB deve rispondere al polling dal PC host. Questo succede almeno ogni millisecondo. Ciò significa che è ancora più difficile garantire una risposta dura in tempo reale agli eventi, poiché l'MCU potrebbe essere interrotta per rispondere al sondaggio USB degli host.
Quando non c'è nulla da comunicare o l'MCU vuole concentrarsi completamente su un'attività in tempo reale, deve comunque rispondere ad alcuni eventi di polling USB dell'host, altrimenti l'host "perderà" il dispositivo. Quindi è difficile ignorarlo. Un chip USB dedicato, come un FTDI, scarica tali compiti dall'AVR.
Un piccolo problema è che lo stack USB consumerà una quantità ragionevole di memoria flash e RAM, quindi il chip ha bisogno di più risorse di un semplice AVR.
Inoltre, le due parti possono essere separate su due schede, quindi l'USB non è un costo fisso, ma potrebbe essere condiviso su più schede.
D'altro canto, il vantaggio principale dell'utilizzo di un AVR con una periferica USB integrata e uno stack USB è che c'è solo una parte da acquistare e assemblare.
Non ho verificato di recente, ma credo che i chip FTDI più recenti abbiano fornito una velocità di trasferimento dati USB superiore rispetto a quella dell'AVR. Tuttavia, gli UART AVR erano così lenti che un AVR con USB è un trasferimento più veloce della combinazione di FTDI (o qualsiasi interfaccia USB) che comunica tramite l'UART dell'AVR a causa del lento UART AVR.
Modifica: FTDI crea interfacce diverse da UART. Ad esempio SPI. Non ho esperienza con loro. Alcuni AVR supportano il trasferimento SPI da 9 (forse 12) megabit. FTDI è il master SPI, che non è l'ideale. Se l'AVR sta trasmettendo, potrebbe andare bene, visto che gli FTDI hanno dei buffer, ma ricevere potrebbe essere "come bere da una manichetta antincendio". AFAIK, dovrai fare un lavoro sul PC host per farlo funzionare.
Il trasferimento ad alta velocità potrebbe avvenire tramite una scheda figlia Ethernet da 100 MB, ma non ho visto le misurazioni della velocità effettiva.
Sono felice di usare altri microcontrollori diversi dall'AVR. Quindi potrei usare qualcosa con un UART veloce e un controller DMA che potrebbe spostare i personaggi senza il coinvolgimento della CPU. Se questo è un approccio utile, forse guardate l'Arduino Due, o il mbed, il mbed ST si chiama nucelo che è a basso costo.