AVR programmering med Arduino, AVRdude och AVR-gcc (3 / 7 steg)

Steg 3: Programmering

En AVR chip kan programmeras i olika olika sätt.

  1. Installera Arduino Bootloader för att använda IDE och språk
  2. Använda församling. Även detta kan vara mycket svårt att läsa och skriva, kan det vara mycket effektivt.
  3. Användning Atmel officiella IDE Atmel Studio, men det är bara tillgänglig på Windows, inte Linux eller Mac
  4. Skapa programmet i din favorit C eller text editor och sedan kompilera och flash använder avr-gcc och avrdude.
    Detta ger en fin kompromiss mellan läsbarhet och effektivitet som fungerar på alla plattformar.

Jag kommer detalj det fjärde och sista alternativet.
Många redaktörer kommer att arbeta för detta som du ska helt enkelt skriva en C-program: Eclipse, märka ++, vi, samt många fler.

Ladda ner den bifogade led_flash.c filen och makefile.

Jag använde en ATTiny 85 för detta projekt.

Jag kommer först förklara koden.

Den första raden i koden är:

#include < avr/io.h >

Detta importerar de konstanter som avser din AVR chip i programmet. När du kompilerar programmet, ange du måste typ av AVR chip som du använder.

Nästa import:

#include < util/delay.h >

Detta inkluderar funktionen för att pausa chipet under slingan.

Därefter kommer några definitioner:

#define shift_light_up(port) port << 1

#define shift_light_down(port) port >> 1

Definierar makron för att skifta ljus upp och ner kedjan med ett steg.

#define register_set_output(register) register = 0b11111111
#define enable_first_light(port) port = 0b00000001

Definierar makron för att ställa in en hela registret att produktionen och för att det första ljuset.

Dessa definitioner i huvudsak skapa makron så att vi inte behöver använda koden i slutet senare. Det kan låta koden vara mycket mer läsbar än innan.

Ange register till alla 1 i binär orsakar alla stiften att en utgång, i stället för input.
Porten anger sedan värdet av PIN-koden till hög eller låg.

Port << 1 skiftar den aktiverade pin av 1 plats. Port >> 1 flyttar den i motsatt riktning.

booleska is_last_pin(uint8_t *port) {
om ((* port & 0b00010000) > 0)
return true;
annars returnera falskt;
}

booleska is_first_pin(uint8_t *port) {
om ((* port & 0b00000001) > 0)
return true;
annars returnera sant;
}

Två funktioner som gör det lätt testet av om första eller sista stiften används för närvarande av lamporna.

Igen, detta gör senare koden mer lättläst.

int main (void) {
register_set_output(DDRB); Ställa allt till utgång
enable_first_light(PORTB); Ange först ljus till på
booleska upp = sant;
While(true) {
_delay_ms(100); Anhörigen på det chip klockhastighet, hastighet måste anges

om (is_first_pin(&PORTB) == true) //check om det är från början
upp = sant;
annat if (is_last_pin(&PORTB) == true) / / kolla om det är i slutet
upp = false;

om (upp == true)
PORTB = shift_light_up(PORTB); Flytta vårt ljus
annat
PORTB = shift_light_down(PORTB); Flytta vårt ljus
}
}

Detta är den viktigaste delen av vår funktion. Funktionen int main(void) kallas när chipet startar. Vi först aktivera registret B vara alla utgångar. Sedan vi inställd första ljuset på och förklarar ett booleskt värde som minns vilken riktning att gå. Varje slinga första förseningar för 2. andra, kontrollerar sedan om riktning behöver förändras. Det slutligen skiftar ljuset i viss riktning och upprepas loopen.

Det är det! sista programmet är lite frånvarande för att den ska vara väldigt lättläst.

Upp nästa: Den makefile att automatisera sammanställningen och blinkande processen

Se Steg
Relaterade Ämnen

Stoppur & varvtid med Arduino Nano och Maxi 7219 LED Display (8 gräva X 7 Seg)

Hej alla,Detta är en mycket lätt projekt göras åt ett stoppur med Arduino Nano och Maxi 7219 LED display (8 siffror x 7 segment).Stoppuret använda denna typ av display är ny och jag kunde inte hitta något liknande.De första 4 siffrorna i displayen vi...

PC mus gjorda med Arduino Uno och Joystick

Hej! Välkommen till min första Instructable.Jag nyligen började mixtra med min nya Arduino Uno och bestämde mig för att hitta ett program för en PS2 joystick modul. Jag trodde det skulle vara tjusig att förvandla min Arduino till en joystick kontroll...

Pimpa din choklad med Arduino IDE och ATtiny13

Idén till projektet kom till mig på väg till papperskorgen. Jag fick i uppdrag att kasta bort en ruta som bara har tömts på sitt ursprungliga Ferrero Rocher sötma innehåll av min kära fru. Detta var strax efter alla hjärtans dag. Så jag fick spendera...

ATtiny programmering med Arduino

efter detta Instructable bör du kunna programmera en A Ttiny85/45 med en arduino. Det låter kanske komplicerat men det är verkligen inte. Efter lite forskning kunde jag inte hitta till mycket information om hur detta skulle kunna ske. Jag har dock hi...

Tweeting sensordata med Arduino / RedBoard och SparkFun BME280 och SparkFun ESP8266 sköld

Material:SparkFun BME280 atmosfäriska SensorSparkFun WiFi sköldSparkFun RedBoardLödkolvEn dator med en USB-Port och Arduino programvaraEtt Twitter-kontoEn Internet-anslutning (WPA2 - bara för att vara säker)Cirka 15 minuterSe till att testa din ESP82...

1 LED spel med Arduino Uno och en RGB LED

ibland har jag bara dessa dagar där jag verkligen vill göra något snyggt med Arduino jag har liggande, men jag vet jag inte har tålamod för ett mer engagerat projekt som tar mer än en dag eller så. Detta är för en av dessa dagar.Utgångspunkten är enl...

Real Time temperatur loggning med Arduino, NodeJS och Plotly!

Motivationen för det här projektet grodde efter behandlingen om Mark Zuckerberg önskan att skapa ett Smart hem för en av hans 2016 projekt. Att vara nyfiken på mig själv, jag ville försöka genomföra en mycket grundläggande temperatur loggning program...

Bilar leksak med arduino uno och 3dprinting

Kroppen av bilen trycktes av 3D-skrivare. (makerbot mini 5.)Och hjärnan är utformad med enkla arduino skiss...Först min 3D printer(mini) plattform storlek är så liten (about10x10).Så, jag omgjorda bil kropp med rhino 3D som lämplig plattform storlek...

Styra åtkomsten till din låsa distans med Arduino, SensorMonkey och RF modul

styra åtkomsten till din dörr från någonstans på planeten med hjälp av din telefon, Tab eller PC.Denna inställning har två huvudsegment, har en GUI med hjälp av jQuery, SensorMonkey, Freeduino (Arduino kompatibel utveckling styrelsen) och en sändare....

Kyl övervakning med Arduino MKR1000 och thethings.iO

Idag kommer att vi visa dig hur du övervakar ett kylskåp med en Arduino MKR1000 och Sakernas Internet plattform thethings.iO för att hålla din öl (eller andra drycker) vid en sval temperatur.Sommaren kommer!Vi använder en ena sladden vattentät temper...

Universell fjärrkontroll med Arduino, 1Sheeld och Android mobil

Detta projekt visar hur du kan styra din TV, satellitmottagare och Stereo med din Android mobil istället för att använda det fjärrkontroll.I princip kan du använda denna teknik för alla andra enheter som fungerar med fjärrkontrollen. Jag undrar om du...

2-spelare Pong spel med Arduino Uno och 8 x 8 ledde matrisen

klassiska Pong spelet genomförs på en Arduino Uno och 8 x 8 mono-färg ledde matrisen.Spelare pinnar styrs av en potentiometer för varje spelare. Vill du pinnen att gå till vänster, bara slå potentiometern kvar.Hastigheten på spelet ökar med tiden. Ef...

Mäta hastigheten på ljud med Arduino microcontroller och ultrasonic sensor

Min 6-åriga dotter, Kennet, visar hur man mäter ljudets hastighet i luft med Arduino Uno microcontroller och ultrasonic sensor.Jag tycker detta är ett bra projekt för barn att blir exponerade för vetenskap, teknik och matematik.Steg 1: Vi behöver 1....

No.03 ratt köra R/C bil med Arduino, webbkamera och net. USB etc. Men detta är krypande och 4WS (4 hjulsstyrning)

denna bil No.03 använder liknande system som bil No.02, men olika chassi Crawler CR-01 tillämpas, som har tillval 2 servon system och som gör krabba-körning (4 hjul samma riktning) eller kort svängradie körning (fram och bakhjulen annan riktning) til...

Sjungande växt. Gör din anläggning sjunga med Arduino, touche och en gameduino

projektet är en del av experiment gjort medan du gör en konstnär i bostad på Instructables. Du kan se de andra projekten här.Att göra en växt sjunga har ett trick sedan Theremin uppfanns. Här kommer jag att lära dig hur man gör detta med och arduino...

Programmering med arduino: Introduktion

Progduino är ett gratis program för Arduino användare. Progduino byggd för att hjälpa Arduino användare som vill bygga sina egna dataprogram som kunde kommunicera med Arduino i ett riktigt enkelt sätt.In på webbplatsen och Hämta programvaran gratis:...

Hur du använder 2,4 tums TFT LCD-SPFD5408 med Arduino Uno och Mega

Detta Instructable är att veta hur man arbetar TFT 2,4 med controller SPFD5408med Adafruit för TFT bibliotek.Detta bibliotek är Adafruit TFT bibliotek ändras till fungerar i TFT 2,4 sköldar med SPFD5408 controller.Nu är det för Uno och Mega, är Teens...

Hur du använder IR-fjärrkontroller med Arduino (aktuella och uppdaterade)

Jag är trött på dessa komplicerade tutorials om hur du använder vissa saker. Jag gillar enkla och lätta att förstå, steg för steg instruktioner. Mitt största problem var med IR och POV *. Jag har äntligen lärt hur man styr mitt projekt med valfri TV...

Dataöverföring av icke-internet ansluten solvärmesystem med Arduino, PHP och MySQL

BeskrivningSyftet med denna arduino projekt är att förvärva och överföra data via GSM-nätet. Fördelen är att kunna samla in data (till exempel övervakning av en sol anläggning) även om det finns ingen svårt kabelansluten Internetanslutning.Detta är h...