AVR Chronograph från koncept till PCB (5 / 13 steg)

Steg 5: Intro till ATMEL Studio IDE




Det är dags att komma tillbaka in i studion för ATMEL och skapa projektet. Vi kommer att skriva programvaran i C. Om du inte vet något om C ännu, det är ok. Du kan kopiera koden, eller jag kommer att göra den tillgänglig att ladda ner om du vill ta den lätta vägen. Jag ska också förklara koden i sektioner liknar det sätt jag förklarade schematiskt. "C programmering för Microcontrollers" är också en utmärkt resurs för nybörjare att lära sig programmet AVRs. PDF kan laddas ner här: http://www.4shared.com/office/2y4F0nMo/c_programming_for_microcontrol.html

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.

Se Steg
Relaterade Ämnen

DIY ALLT I EN DATOR; Koncept till verklighet "komplett"

HejDess min första instructable. där jag ska försöka förklara visa dig hur du kan göra en billig alla i en PC.Men det är inte billigt men billigare än Orignal produkt veryyyyyyOKzzz min första bild är ett koncept bild förklara vad jag vill göra.Jag v...

Älskling, jag krympte Arduino: flytta från Arduino till ATtiny och skriva din kod i ren AVR-C

Arduino är en stor hård- och mjukvaruplattform, men med alla dess funktioner är det också lite uppsvälld och ofta behöver du bara en liten del av alla funktioner. Projektet kräver ibland för att ha mindre och billigare enheter. Vad du behöver är ATti...

Montering av Dragon Rider 500 för användning med AVR Dragon

inte länge sedan företaget Atmel kom ut med ett bra verktyg för användning med AVR microcontrollers kallas AVR Dragon. Denna lilla USB-enhet ger proffs och amatörer både förmågan att använda: I System programmering (ISP), JTAG, felsöka tråd och hög s...

Konvertera en NES gamepad till USB med Arduino

Hej!I detta instructable, jag visar dig hur du koppla in en Nintendo Entertainment System control pad till en arduino, arduino är i sin tur kör en särskild skiss som gör det möjligt att visa upp till en dator som en USB-HID-joystick!Och om detta inte...

PCB UV-exponering enhet

En UV exponering låda är ett mycket användbart att göra PCB.Jag har sökt och funnit att de är för stort och för dyrt för min använder. Dessutom kräver alla enheter en extern ström sorce.Därom bestämde jag mig att bygga en som passar bättre på mina be...

GameCube Controller till Wiimote

För det andra Instructable. Låt mig veta om något behöver fixas.Jag gjorde inte det krets eller program. Jag gör bara en guide som visar steg för steg montering av hur man gör en Gamecube till Wiimote controller.Den ursprungliga sidan finns här:http:...

Designa en Expansion PCB (Intel® IoT)

Detta Instructable har skrivits som utgångspunkt för dem som är angelägen om att använda Intel® Edison till dess fulla potential, genom att införliva det i en fullt utvecklad inbäddade projekt. För att göra detta, behöver du förmodligen att göra – so...

Snabb Digital termometer med billiga USB till TTL omvandlare och DS18B20 - utan Arduino eller Raspberry Pi

I min tidigare instructable jag gav en introduktion till Digital termometer med DS18B20 och ESP8266 nodemcu ombord med SPI OLED-skärm och programmering använder Arduino IDE. Det krävs kunskaper i programmering, grundläggande elektronik och krävs lite...

Universal programmerare för AVR: s och S51 plus ZIF socket!

Detta programmerare har utformats av företaget och har producerats minst 2500PCS av detta och det är ganska testad och standarder och nu vi inte tillverka denna version mer, här är en länk produkt (ledsen bara Farsi var tillgänglig)Universal AVR prog...

Billiga AVR/51 Development board

jag nyligen upptäckt STC microcontrollers tillverkas av TSMC. Att vara nyfiken på dessa microcontrollers började jag leta efter en utveckling styrelse för dem.Efter lite sökningar på google / ebay / AliExpress / jag beslutat att köpa denna PCB som ja...

Schweiziska AVR kniv

The Swiss AVR Knife buntar ett antal AVR programmering projekt tillsammans i en enda bekväm Altoids tuggummi tenn. På grund av den flexibilitet som erbjuds genom microcontroller programmering, ger det också en utgångspunkt för ett antal projekt baser...

LED Cube med Arduino och anpassade PCB

detta instructable Detaljer design och byggprocessen för en 5 x 5 x 5 LED cube, kontrolleras med en Arduino, som befinner sig på ett tryckt kretskort.Ytterligare information, foton och video finns på min hemsida.Den färdiga produkten visas i videon n...

PCB isolering spår fräsning med MyDIYCNC Desktop CNC maskin

Hej där,Tory @ MyDIYCNC här igen för att visa dig en annan cool projekt som är mycket lätt på din desktopen CNC-maskin. Vi ska vara fräsning ut isolering spår till Tom PCB material till manliga rapid prototyping mönsterkort. Med alla de rätta verktyg...

Lägga till knappar i musen

Jag har spelat FPS spel på min dator ett tag nu och jag fann mig ofta i behov av fler knappar på min mus. Det är därför jag köpte en gång en Logitech G9, utan i vissa spel även knapparna på det är extra 4 de tycktes vara några. Någon gång köpte senar...

En ram för att göra prisvärda & eleganta modulära styrsystem (USB till MIDI, gömde sig, eller seriella)

***JAG HAR SKAPAT EN NY INSTRUCTABLE FÖR DIY STYRENHETER:*************************************************************************************************************************************************************************************************...

Projektor lampa konvertering till LED

fick jag en projektor från en vän December 2010. Det är en kraftig D100U från 1997. Det hade inte den ursprungliga glödlampan, men allt annat fungerade bra. Jag gjorde lite efterforskningar på nätet för att se om jag kunde få en lampa för det och fic...

Hur man löda din fumeFan PCB KIT / några PCB KIT

Du är förmodligen en av de fantastiska människor som stöttat vår Kickstarter kampanj - fumeFan. Om du missade kampanjen kan du hitta mer om fumeFan på maketechnics.com.Detta instructable beskriver hur att löda den PCB KIT för varvtal styrkrets använd...

Tillägg lysdioder för sol dag lampa

Detta projekt föreslås för att öka nyttan av soldag lampa som publicerades tidigare i Instuctables:I det föreslagna projektet, är två ytterligare matriser av små lysdioder anslutna till solpanelen. Dessa tillägg LED matriser är utformade för att dra...

En enkel, låg spänning inverter för lysrör upp till 15 watt

tack till Burak Incepinar för att jag dokumentera hans design. Här är hans hemsida om du vill kolla in mer awesome mönster.Detta Instructable hjälper dig köra något fluorescerande ljus av låga spänningar, det har testats för att köra kompakt fluoresc...