Översikt Arduino skiss belastande upp processen och ISP (7 / 10 steg)
Steg 7: Andra protokollet, CDC-serial
Kom ihåg när jag sa det finns två metoder för uppladdning programvaran till en Arduino? Tja, kan jag ha fibbed lite. Här är ett tredje. Vissa modeller av Arduino, som Leonardo, Pro Micro, Micro, Robot, Esplora, har en ATmega32U4 processor. Den har stift för USB-protokollet och har låg nivå logik syftar till att samverka med USB. Vad detta innebär är det finns ingen USB till seriell adapter eller chip alls, och ATmega32U4 är ansluten direkt till USB på datorn.
Informationen skickas mellan datorn och Arduino ett protokoll att härmar eller står i för TTL seriell, men det är inga synliga stift för RX och TX inblandade. RX- och TX stiften på Leonardo och andra ATmega32U4-baserade Arduinos berörs inte alls i bootloader eller ladda upp process. USB-anslutningen är en typ av firmware-genomfört UART0 som används i dina skisser med uttalanden som Serial.print. RX- och TX stiften är anslutna till en sekundär UART, som är UART1, och används i din skiss med uttalanden som Serial1.print.
Eftersom USB CDC-seriella gränssnittet inte har fysiska pins som RX och TX och den andra med TTL-232 stift, har vi inte tillgång till en DTR pin reset Arduino och göra den springa bootloader. USB-stiften är helt enkelt D + och D-. Vad gör vi om det? Leonardo konstruktörerna tänkte hårt och länge på detta och kom med ett intressant verk-runt omkring. Även om gränssnittet CDC-serial i ATmega32U4 processorn inte använder verkligen överföringshastigheter som seriella linjer gör, är det medvetna om när datorn begär för att ställa särskilda baudvärde. De programmerade Arduino IDE att göra en baud rate förändring till 1200 för bara en sekund och sedan ändra det till 57600. Detta kallas en 1200bps_touch och du kan se inställningen om du studerar den boards.txt fil som ingår i programpaketet Arduino IDE. Leonardo upptäcker detta och återställer processorn med en metod som vakthund. Sedan körs bootloader. Bootloader kallas Caterina. Det är annorlunda från den ATmega328P-baserade Arduinos i att den inte accepterar skissen använder raderna RX och TX. Caterina använder USB-D+ och D-linjer.
Så, Leonardo och andra ATmega32U4-baserade Arduinos Återställ inte när du öppnar seriell övervaka eller starta någon annan seriell process med dem.. De återställa endast när IDE gör 1200bps_touch precis innan du lägger upp en skiss. Det är därför du inte behöver inaktivera automatisk återställning med en kondensator när du använda den som en programmerare.