Stap 7: Het andere protocol, CDC-serial
Vergeet niet wanneer ik zei er zijn twee methoden voor het uploaden van software aan een Arduino? Nou, kan ik een beetje hebben fibbed. Hier is een derde. Sommige modellen van Arduino, zoals Leonardo, Pro Micro, Micro, Robot, Esplora, hebben een ATmega32U4-processor. Het heeft pinnen voor het USB-protocol en heeft low-level logica speciaal ontworpen om met USB interface. Wat dit betekent is er geen USB-naar-serieel adapter of chip helemaal, en de ATmega32U4 rechtstreeks is aangesloten op de USB van uw computer.
De informatie wordt doorgegeven tussen de computer en de Arduino met behulp van een protocol dat nabootsers of staat in voor TTL seriële, maar er geen blootgestelde pinnen voor RX en TX betrokken zijn. De RX en TX pinnen op de Leonardo en andere ATmega32U4 gebaseerde Arduinos zijn niet betrokken bij de bootloader helemaal of upload proces. De USB-aansluiting is een soort van ingebouwde programmatuur geïmplementeerde UART0 die wordt gebruikt in uw schetsen met uitspraken als Serial.print. De RX en TX pinnen zijn aangesloten op een secundaire UART, oftewel UART1, en in uw schets met uitspraken als Serial1.print worden gebruikt.
Aangezien de interface USB-CDC-serial geen fysieke pinnen zoals RX en TX heeft en anderzijds TTL-232 pinnen gerelateerde, hebben wij geen toegang tot een DTR pincode opnieuw instellen van de Arduino te laten draaien van de bootloader. De USB-pennen zijn gewoon D + en D-. Wat we daaraan doen? De ontwerpers van Leonardo lang en hard over nagedacht en kwam met een interessant werk-around. Hoewel de CDC-serial interface in de ATmega32U4-processor geen echt baud-rates gebruikt zoals seriële lijnen doen, is het bewust zijn van wanneer de computer vraagt om een bijzondere baud-rate. Ze de Arduino IDE te doen een tariefwijziging baud tot 1200 voor slechts een seconde en wijzig het 57600 geprogrammeerd. Dit heet een 1200bps_touch en kunt u de instelling als je studie het boards.txt-bestand dat deel uitmaakt van de Arduino IDE softwarepakket. De Leonardo gedetecteerd en stelt de processor via een watchdog-methode. De bootloader wordt uitgevoerd. De bootloader heet Caterina. Het is verschillend van de ATmega328P gebaseerde Arduinos daarin het accepteert niet de schets met de RX en TX lijnen. Caterina maakt gebruik van de USB-d + en D-lijnen.
Dus, het Leonardo en andere ATmega32U4 gebaseerde Arduinos doen niet teruggezet als u seriële monitor open of begin met een andere seriële werkwijze met hen. Ze alleen opnieuw instellen als de IDE de 1200bps_touch doet vlak voor het uploaden van een schets. Dat is waarom u niet nodig hebt uitschakelen van automatische reset met een condensator, wanneer u deze als een programmeur gebruikt.