Étape 7: L’autre protocole, CDC-série
Vous vous souvenez quand j’ai dit il y a deux méthodes de téléchargement de logiciels à un Arduino ? Eh bien, je peux avoir fibbed un peu. Voici une troisième. Certains modèles d’Arduino, tels que Leonardo, Pro Micro, Micro, Robot, Esplora, équipés d’un processeur ATmega32U4. Elle possède pour le protocole USB et a bas niveau logique spécialement conçu pour s’interfacer avec USB. Cela veut dire il n’y a pas d’adaptateur USB-to-serial ou puce du tout, et le ATmega32U4 se branche directement sur l’USB de votre ordinateur.
Les informations sont passées entre l’ordinateur et l’Arduino à l’aide d’un protocole qu’imite ou supports en TTL série, , mais il n’y sont pas exposés de broches pour RX et TX impliqués. Les broches RX et TX sur le Leonardo et autres Arduinos axée sur les ATmega32U4 ne participent pas du tout dans le bootloader ou télécharger processus. La connexion USB est une sorte de UART0 mise en oeuvre du firmware qui est utilisé dans votre croquis avec des déclarations comme Serial.print. Les broches RX et TX sont connectés à un UART secondaire, qui est UART1, et sont utilisés dans votre croquis avec des déclarations comme Serial1.print.
Puisque l’interface USB série CDC n’a pas de broches physiques tels que RX et TX et l’autre liées TTL-232 broches, nous n’avons accès à une broche DTR pour réinitialiser l’Arduino et faire fonctionner le programme d’amorçage. Les broches USB sont tout simplement D + et D-. Que faisons-nous à ce sujet ? Les designers de Leonardo pensaient longuement et sérieusement à ce sujet et est venu avec une intéressante solution de contournement. Bien que l’interface de CDC-serial dans le processeur ATmega32U4 n’utilise pas vraiment des vitesses de transfert comme le font les lignes séries, il est conscient de quand l’ordinateur est demandant de fixer un taux de baud particulière. Ils ont programmé l’IDE Arduino pour faire un changement de taux de baud à 1200 pour un instant et puis changer à 57600. C’est ce qu’on appelle un 1200bps_touch et vous pouvez voir le réglage si vous étudiez le fichier boards.txt qui fait partie du progiciel IDE Arduino. Le Leonardo détecte cette et réinitialise le processeur à l’aide d’une méthode de chien de garde. Le programme d’amorçage exécute ensuite. Le bootloader est appelé Caterina. Il diffère de la Arduinos axée sur les ATmega328P qu’il n’accepte pas l’esquisse en utilisant les lignes TX et RX. Caterina utilise l’USB d + et D-lignes.
Ainsi, le Leonardo et autres Arduinos axée sur les ATmega32U4 ne pas re-lorsque vous ouvrez serial monitor ou démarrez un autre processus de série avec eux. Ils ne réinitialisé lorsque l’IDE effectue le 1200bps_touch juste avant le téléchargement d’un croquis. C’est pourquoi vous n’avez pas besoin de désactiver la réinitialisation automatique avec un condensateur lorsqu’il est utilisé en tant que programmeur.