Bygg din egen (billigt!) multi-function Trådlös kamera controller. (11 / 22 steg)
Steg 11: Skriva och kompilera AVR kod
Först av allt, ladda ner en kopia av WinAVR - http://winavr.sourceforge.net/ eller MacAVR http://www.harbaum.org/till/macavr/index.shtml
WinAVR är en svit av användbara verktyg som kompilatorn, kodbibliotek rubriker med mera. I princip allt du behöver att starta programmering och belastande upp din kod.
Kodar för AVRs är mycket enkel. Du skriver helt enkelt ut din kod med normal C, kan du inkludera standardbibliotek för sortering, string manipulation, matematik och mycket mer. Du måste inkludera relevanta AVR biblioteken som io, sömn, avbryta paket beroende på vad din kod innehåller (biblioteket är alltid nödvändig).
När koden är skriven, måste det vara kompilerat och länkade. Det enklaste sättet att göra detta använder en makefile. Makefile gör allt det hårda arbetet för dig, allt du behöver göra är att ange namnet på filerna C och församlingen filer (måste anropas. S - skiftlägeskänsliga) och processorn du använder. Denna fil går i samma katalog som din källkod.
Det finns en bra mall här: http://electrons.psychogenic.com/modules/arms/art/8/AVRProjectOrganizationStandardizedAVRMakefileTemplate.php
Jag kommer inte gå igenom processen att skriva en fil, mallen ovan är kommenterade och borde vara uppenbart :)
För att faktiskt sammanställa din kod i hex binärfilen som din micro kan förstå, använda vi bara Kommandotolken. Navigera till katalogen måste du använda kommandot "cd" ersätta med katalogen i filen. Sedan helt enkelt typ "gör hex" och tryck enter. Vad bör leda är några rader att skriva som du kan ignorera och en hex-fil ska visas i katalogen med din källkod. Om något gick fel, kommer kompilatorn spotta ut ett fel vanligtvis med ett radnummer och filen som felet var i. Sedan kan du gå till raden referensen, åtgärda problemet och försök igen. Koden ger jag här bör vara kompileras, eller åtminstone sammanställer på min maskin. Jag säger inte felfri eftersom ingen kod någonsin!
Jag ska försöka, om jag kan för att ge en springa ner av vad koden gör. Det är ganska väl kommenterade i min mening så bör vara ganska självförklarande för kryddat kodare. Vi kommer att använda koden är ganska komplicerade och erbjudanden med en massa saker som nybörjare vill veta, att göra med ingång och utgång, gränssnitt med en skärm, med hjälp av ADC och Timer avbryter, sova lägen och mer. Det var en bra primer för mig i alla fall = D
OK, gå låter på din första program och försöka ladda upp den!