Översikt Arduino skiss belastande upp processen och ISP (1 / 10 steg)
Steg 1: FTDI eller seriell upp
FTDI är faktiskt ett chips. FTDI företaget specialiserat på marker används för att ansluta via USB. I Arduino mark för USB till seriell marker att interface en dator med Arduino IDE till din Arduino huvudsaklig processorn för att ladda upp nya skisser och för att interagera med dina skisser via en seriell Övervakningsfönstret. USB till seriell chip gränssnitten med UART gränssnitt av ATMEL processorn på din Arduino.
För Arduino att acceptera en skiss från det seriella gränssnittet, körs det ett program som heter en bootloader, som accepterar skissen och skriver den till Flash-minne. Bootloader faktiskt bor i en liten del av flashminnet i upperen spänna av minnesadresser, som är reserverad för bootloader. Som får bootloader programmet skissen, lagras in i nedre delen av blixt minne.
Denna Seriell programmering använder ett protokoll som kallas TTL följetong. Den är baserad på en gammal kommunikationsprotokoll kallas RS-232. RS-232 kommunikation använder spänningar som snabbt ändra från en positiv spänning av 3 till 25 volt, till en negativ spänning på -3 till-25 volt. Persondatorer normalt inte längre att komma med RS-232 gränssnitt, men de använde för några år sedan. En PC med ett gränssnitt används vanligtvis spänningar som svänga mellan 12 till-12 volt till en RS-232 signal. ATMEL processorn på en Arduino använder signaler i intervallet 0 till 5 volt. Versionen av detta RS-232-protokoll som är kompatibel med spänningar i intervallet Arduino processorn kan hantera kallas TTL seriell eller ibland du kan höra det som kallas TTL-232, eller bara följetong.
De flesta Arduinos har ett USB till seriell adapter chip inbyggt, så du kan ansluta Arduino direkt till datorn utan någon särskild gränssnitt eller programmerare. Vissa Arduinos, som LilyPad, Mini och Mini Pro, kommer inte med en USB-till-seriell adapter och du behöver för att leverera din egen utsida en. De externa adaptrarna kallas ofta FTDI adaptrar, även om märket på chip inte är FTDI.
Det finns flera ledningar eller anslutningar med seriell kommunikation. Viktigaste kallas RX (kort för får) och TX (kort för Sänd).
Som namnet antyder, RX tråd eller pin tar emot från en annan enhet. Det lyssnar efter inkommande kommunikation. TX vajer eller pin skickar data till en annan enhet. TX tråd från din USB till seriell adapter växlar snabbt mellan 0 och 5 volt i ett mönster, och den är kopplad till RX stift på den Arduino processor, som lyssnar på dessa mönster.
Kommunikationen är tvåvägs, så den Arduino processor kan skicka signaler till USB till seriell adapter. Processorn använder det är egna TX pin för att skicka en signal till USB till seriell adapter RX stift. USB till seriell adapter översätter signaler fram och tillbaka mellan Arduino och datorn via USB-kabeln.
Datorn skickar skissen till din Arduino och får skissa tillbaka från Arduino så att datorn kan kontrollera att programmet laddas okej. Samma seriell anslutning kan användas av din skiss på Arduino för att kommunicera tillbaka till dig via seriell Övervakningsfönstret. Det är vanligt att använda denna metod för att felsöka dina skisser, eftersom du kan stänka Serial.print uttalanden i koden på strategiska platser att rapportera tillbaka värdet på variabler eller berätta vad koden gör just nu. Och du kan skicka data till din dator, exempelvis sensor eller mata in pin avläsningar. Du kan också skicka data från datorn till skiss körs på din Arduino använder den seriella bildskärmen.
Du kanske undrar hur Arduino vet när seriell kommunikation är försöker skicka en skiss att ladda, eller bara kommunicera via seriell monitorn med skissen som redan körs på Arduino? Svaret är enkelt. Bootloader programmet som accepterar skisser och omprogrammerar Arduino körs endast under de första sekunder efter den Arduino processorn återställs. Om bootloader programmet körs på Arduino inte erhåller en viss sekvens av tecken som visar en skiss försöker ladda upp, det avslutas igång och startar den skiss som du laddade tidigare.
När Arduinos utvecklades först, tvungen den person som du laddar upp en skiss till Arduino att trycka på återställningsknappen på Arduino alldeles i början av ladda upp processen, och tid det korrekt, eller försök igen. Senare versioner av Arduino gjorde användning av en seriell tilläggsprotokollet kallas DTR återställa Arduino automatiskt. Eftersom DTR signalen går från 5V till 0 just nu en ny anslutning till Arduino startas, om du skicka denna signal till Återställ fodra av den Arduino processor, återställs. Om anledningen till den nya seriell anslutningen upprättas är att Arduino IDE är att skicka en skiss till bootloader, bootloader går framåt och accepterar skissen och lagrar den. Om anledningen till den nya seriell anslutningen upprättas är att du öppnar den seriella monitorn för Arduino IDE, sedan Arduino återställs, bootloader körs bara lång nog att inse IDE inte försöker skicka en skiss och skissen du tidigare lagt upp börjar köra.
Det är bra att veta om dessa signaler såsom DTR signalen används för automatisk återställning, särskilt om du vill att korrekt ansluta en USB-till-seriell adapter till en Arduino som inte har kortet byggdes, som LilyPad, Mini eller Pro Mini. Eller, om du vill felsöka problem med en Arduino, eller programmera en Arduino använder en annan. Jag nämnde i föregående punkt DTR signalen går från 5V till 0 just nu en ny anslutning har upprättats. Tja, denna signal går låg och stannar låg hela tiden den är ansluten. Om denna signal var ansluten direkt till processorns reset pin, processorn skulle bo i ett tillstånd av återställning och skulle aldrig komma igång med bootloader eller skiss du lagt upp tidigare.
Så här är tricket: The DTR signalen skickas genom en liten kondensator till Återställ PIN-koden av processorn. Kondensatorn blir spänningen från DTR signalen (som går låg och stannar låg) till en tillfällig stegring som går låg till 0V och kommer tillbaka upp till 5V. Detta återställer Arduino och låter det starta bootloader, som senare börjar skissa.
En USB till seriell adapter kräver en drivrutin som skall lastas på din dator, så att din dator kommer att förstå hur man kan kommunicera med den. Äkta Arduinos använda specifik och ändlig listan över modeller av USB-till-seriell adaptrar så IDE kan vara färdigförpackade med alla drivrutiner du kan behöva. Om du använder en klon, fake, derivat, hemgjorda, eller annars inte-stöttat utveckling styrelsen gjort av någon arduino.cc eller en av deras partner tillverkare, det är faktiskt bara bra eftersom det är öppen källkod maskin- och programvara. Vem som helst kan göra en. Men styrelsen kan du använda en USB-till-seriell adapter som kräver en drivrutin för din dator och som inte ingår i nedladdning av mjukvara för Arduino IDE. Ett exempel på detta är det CH340G USB till seriell chip som är mycket vanligt på Arduino-kompatibla skivor säljs på eBay och Amazon. Det är bra för dig att ha kunskap om detta så att du laga din dator med rätt drivrutin.
Denna seriell kommunikation sker med den Arduino processor oftast händer genom specialiserade stift på den processor som är speciellt utformade för TTL seriell kommunikation. Processorn har speciell hårdvara kallas en UART, som hanterar data ur TX PIN-koden skickas eller tar emot data på RX stift. Logiken för att hantera dessa signaler är inbyggda i processorn på en mycket grundläggande nivå. Om du inte använder RX och TX stiften på processorn för seriell kommunikation med UART, är stiften tillgängliga för att göra andra saker, till exempel aktivera reläer, transistorer, lysdioder, eller ta emot digitala signaler från givare. De är helt enkelt digital stift om inte upptagna med seriella signaler. Några processor marker har flera UARTs och därför flera uppsättningar av RX och TX stift. Dessa stift är också vanlig digital stift om inte används av UART del av processorn för seriell kommunikation.
En bootloader kan vara konstruerad för skisser via protokoll använder nästan alla stiften på processorn. Processorn har en mängd olika stift som är vanlig digital stift men dessa stift kan eventuellt användas för specialiserade protokoll. Till exempel finns det en grupp av stift som kan användas för IIC eller I2C-protokollet, som är en speciell seriell buss protokoll kan kommunicera med flera enheter. Och det finns en annan grupp av stift som kan användas för SPI-protokollet, vilket är ännu ett annat olika seriebuss protokoll används för att kommunicera med enheter. Processorn har speciell hårdvara för att genomföra dessa olika protokoll om olika dedikerad stiften och logik för att hantera dessa signaler är inbyggda i processorn på en mycket grundläggande nivå.
Twister #1: Dessa olika protokoll som TTL seriell, I2C och SPI har lägsta-nivå-logiken inbyggd i processorn för att hantera protokoll om särskilda stiften för protokollet är ansluten till en annan enhet, men protokollen kan genomföras för att arbeta med digital stiften på processorn genom att skriva program som emulerar uppförandet av processorns inbyggda logiska kretsar. Detta kallas lite smällar. Ett program kan skrivas som driver stiften i ett mönster som uppfyller de krav eller specifikationerna för protokollet. Till exempel kan ett mjukvaran följetong protokoll skrivas som använder icke-UART stift av processorn. Sedan tar programmet förlägga av hårdvara UART kretsar. Detta är användbart om stiften du normalt skulle använda för ett visst protokoll upptas annars och du behöver använda andra stift. Eller, om du vill ha mer än en inbyggd seriellt gränssnitt. Till exempel ATmega328P processorn har endast en UART och det använder digital stift 0 och 1. Det normalt bara kommunicerar med en annan seriell enhet i taget. Om du vill bifoga en annan seriell enhet på stift 2 och 3, kan du göra det med en seriell programvara som bit-bangs protokollet. Optiboot bootloader kan sammanställas för att kommunicera via mjukvaran följetong på icke-UART stift.
Arduinos kommer vanligen med en seriell bootloader installerat, som använder hårdvaran UART ombord ATMEL processorn, och Arduino IDE körs på datorn är utformat för att kommunicera med det bootloader.
Twister #2: Du behöver inte en bootloader! Läs om ISP nästa.