AVR Chronograph från koncept till PCB (5 / 13 steg)
Steg 5: Intro till ATMEL Studio IDE
Gå tillbaka till ATMEL Studio 6, och på startsidan, klicka på 'nytt projekt'. Till vänster i fönstret som öppnas, klicka på C/C++ eftersom vi kommer att skriva vår kod i C. Sedan i mitten av fönstret, välj "GCC C körbara Project" (se bild 2.) GCC är den C-kompilator som kommer att översätta vår kod till en HEX-fil AVR kan förstå. Skriv ett namn på projektet och välj en plats, klicka "OK." Sedan en annan nytt fönster visas där du ombeds väljer du enheten du använder (bild 3). Välj ATMega328P och innan du klickar på ok, se till höger i fönstret. Här kan du ladda enhetens datablad och lära sig om stöds verktyg. Klicka på "OK" och vi äntligen se ATMEL Studio IDE (integrerad utvecklingsmiljö - pic 4.)
Till höger hittar du fönstret "solution explorer". Detta är praktiskt för att visa de filer som används i projektet. Det stora fönstret i mitten är den *. C-filen redan öppen att börja skriva koden. Det kommer verkligen allt vi behöver för att få detta projekt, men du bör gå till hjälp-menyn och titta runt. Det kommer att ta dig till ATMELS webbplats där du hittar massor av information om hur du använder denna programvara. I synnerhet leta upp lite info om AVR simulatorn. Det är i grunden en programvaruversion av en AVR chip som kan testa programmet och visar dig många körning påstår av chipet. Det är ganska coolt, men jag kommer inte att täcka det här eftersom vi egentligen inte behöver det för detta projekt.
I huvudfönstret, det blir lite grön text med projektets namn, datum och författare grejer på toppen. Varje bit av grön text är en kommentar. När du skriver ett "/ /" allt som följer på den linjen kommer att vara en kommentar. ELLER, du kan börja en kommentar med "/ *" och avsluta den senare med "* /". På så sätt kan du få kommentarer som tar upp flera linjer mycket lätt. Det är också användbart under felsökning till "kommentera ut" besvärande rader kod att testa utan dem och enkelt "avkommentera" dem senare.
Instruktionen "#include" är den första riktiga koden ser vi. Den instruerar kompilatorn att inkludera (Tänk som!) eller de filer som kommer efter "#include" uttalande. I detta fall är < avr/io.h > en hex-fil som ger kompilatorn specifik information om de olika AVR marker vi kan använda.
int main(void) - Detta är huvudprogrammet kroppen, ja, i början av det ändå. "Main () '" är faktiskt en funktion (mer om funktioner senare) måste finnas i varje program och innehåller allt i vårt program. Andra funktioner kan anropas från inom main () så att flödet av programmet att lämna main (), men efter andra funktionen har avslutat sitt jobb, det måste återvända till Main () att fortsätta.
While(1) är en oändlig loop där vår huvudsakliga kod kommer att köra över och över och över. '1' är villkora för öglan för att köra och kan också vara ett uttryck som: while(a == 1) i vilket fall loopen ska fortsätta tills "a" inte lika en längre. Vi vill ha våra loop att köra för evigt, så while(1) kommer att göra det för oss. Kompilatorn ser på uttryck inom parentes efter den "medan" och utvärderar det som antingen att vara sant eller falskt. Baserat på att loopen ska fortsätta om detta är sant. Om vi vill kunna köra för alltid, vi hoppa över uttrycket och berätta bara kompilatorn att det stämmer hela tiden genom att sätta en '1'.
i planeringen av denna typ finns det många sätt att säga i princip samma sak i olika sammanhang. EX. '1' är "logiska hög" är "sanna" är "som" och "0" är "logiska låg" är "falska" är "rensa"... kan det bli lite förvirrande, men... Tja, det är bara förvirrande. ---referera den PDF bok jag länkade till ovan "C programmering för Microcontrollers." Den har all info du behöver något vettigt ur C. ***
Märkte du klammerparenteser "{}"? Detta är hur vi berätta kompilatorn att behandla alla kodrader som finns inom klammerparenteser som ett enstaka avrättas tillsammans. Till exempel kommer att while(1) slingan kontinuerligt utföra alla de instruktioner som finns inom klammerparenteser omedelbart efter while(1). Om det fanns ingen klammerparentes, while loop skulle bara köra första instruktionen efter while(1) om och om igen. Ägna stor uppmärksamhet åt dessa klammerparenteser. varje gång det är en öppen klammerparentes "{", det måste finnas en nära klammerparentes"}" associerade med den. Om du missar en nära klammerparentes, kommer kompilatorn leta efter nästa nära lockigt stag som hittas och köra allt mellan två som ett block... Lämnar en av dessa ut spenderar ett bra sätt att hitta dig själv tiden avlysningen din huvud försökande till räkna ut varför programmet inte kommer att göra vad du tror det ska!
While(1) {thisishowthecompilerseeswhatyoutype; it'shardforapersontoread, butthecompilerlikesit;}
Det var svårt att läsa var det? Det är därför while(1) och dess associerade klammerparenteser är flikar över till höger. När klammerparenteser och blocket de innehåller flikar över, är det mycket lättare att identifiera koden som ett block. Denna formatering gör ingenting för kompilatorn; Det är bara för att göra koden lättare för människor att läsa. Du kan sätta extra blanksteg, tabbar och radbrytningar alla du vill; de är osynliga för kompilatorn. Det är en god vana att formatera din kod så sätt och lägga till massor av kommentarer. Ett år från och med nu kommer du aldrig ihåg vad du tänkte när du skrev denna nya funktion och kommentarer/formatering hjälper ta dig tillbaka till hastighet snabbare.
Nu är vi redo att börja lägga våra egna kod till programmet. I nästa steg kommer vi att titta på den färdiga kod i avsnitt att göra förstå det så enkelt som möjligt.