Il y a des avantages à utiliser une puce USB séparée et à laisser l'AVR communiquer via son UART.
Une pile USB doit répondre à l'interrogation du PC hôte. Cela se produit au moins toutes les millisecondes. Cela signifie qu'il est encore plus difficile de garantir une réponse dure en temps réel aux événements, car le MCU pourrait être interrompu pour répondre au sondage USB des hôtes.
Lorsqu'il n'y a rien à communiquer ou que le MCU souhaite se concentrer pleinement sur une tâche en temps réel, il doit toujours répondre à certains événements d'interrogation USB de l'hôte, ou l'hôte `` perdra '' le périphérique. Il est donc difficile de l'ignorer. Une puce USB dédiée, comme un FTDI, décharge ces tâches de l'AVR.
Un petit problème est que la pile USB consommera une quantité raisonnable de mémoire flash et de RAM, donc la puce a besoin de plus de ressources qu'un simple AVR.
De plus, les deux parties peuvent être séparées sur deux cartes, donc l'USB n'est pas un coût fixe, mais peut être partagé entre plusieurs cartes.
D'un autre côté, le principal avantage d'utiliser un AVR avec un périphérique USB intégré et une pile USB est qu'il n'y a qu'une seule pièce à acheter et à assembler.
Je n'ai pas vérifié récemment, mais je pense que les nouvelles puces FTDI ont fourni un taux de transfert de données USB plus élevé que le USB de l'AVR. Cependant, les AVR UART étaient si lents qu'un AVR avec USB est un transfert plus rapide que la combinaison de FTDI (ou de toute interface USB) communiquant via l'UART de l'AVR en raison de la lenteur de l'AVR UART.
Edit: FTDI fait d'autres interfaces que UART. Par exemple SPI. Je n'ai aucune expérience de leur utilisation. Certains AVR prennent en charge le transfert SPI 9 (peut-être 12) mégabits. Le FTDI est le maître SPI, ce qui n'est pas idéal. Si l'AVR est en train de transmettre, cela peut être correct, car les FTDI ont des tampons, mais recevoir peut être «comme boire dans une lance à incendie». AFAIK, vous devrez travailler sur le PC hôte pour le faire fonctionner.
Le transfert le plus rapide pourrait être via une carte fille Ethernet de 100 Mbits, mais je n'ai pas vu de mesures de débit.
Je suis heureux d'utiliser d'autres microcontrôleurs que l'AVR. Donc, je pourrais utiliser quelque chose avec un UART rapide et un contrôleur DMA qui pourrait déplacer des caractères sans implication du processeur. Si c'est une approche utile, regardez peut-être le Arduin Due, ou le mbed, le ST mbed est appelé nucelo qui est à faible coût.