En komplett starter guide till AVRs (1 / 10 steg)

Steg 1: Binära och bitvis operationer



Innan vi dyker in i datablad måste vi förstå några låga begrepp som ska användas varje gång du vill göra något intressant med en mikro.

Låter start på den mest grundläggande, lite.
En bit är den minsta enheten av data till en dator, det är antingen en '1' eller en '0'.
Med andra ord är det antingen på eller av.

För att göra något användbart i en dator, en enda bit räcker inte, så de är kombinerade i byte.
En byte är 8 bitar tillsammans med binära räknar en byte kan antingen lagra 0-255 (256 nummer) eller nummer -128 till 127 (tack till Joel i kommentarerna för märker felet).
Till exempel:
00000000 = 0
00000001 = 1
00000010 = 2
00000011 = 3
00000100 = 4

Precis som när du räknar i decimal (bas 10, som i 10 fingrar!), när du går förbi 9, du sätta en 1 framme och sätta den andra siffran som 0.
Det är samma med binär, förutom eftersom det enda 0 eller 1, när du går förbi '1' du sätta en 1 framför och en '0' som den andra siffran.

Dragen av en mikrokontroller styrs av register. För en 8-bitars AVR är de antingen 8 eller 16 bitar långa.
I stället för det hela som representerar flera emellertid, avgör varje bit om en viss funktion är på eller av.

Vi kommer att titta på en massa olika register senare, men för nu Låt oss göra upp en imaginära så vi kan se hur man manipulera dem.

Tänk dig finner vi ett register i databladet som ansluter till 8 lysdioder kallas LEDREG.
Varje bit i registret är antingen en 1 eller 0, LED är antingen på eller den är avstängd.

Vi kunde vända på den första lysdioden som så:
LEDREG = 1; 00000001
2. LED
LEDREG = 2; 00000010

Men hur är den 3: e LED?
Om vi gjorde detta:
LEDREG = 3; 00000011
Vi skulle inte få den 3: e LED, skulle vi få LED 1 & 2 lyste upp istället!

Med register det inte hur många som är viktigt, men vad de underliggande bitarna ser ut.
3: e LED skulle utseende vara så här:
LEDREG = 4; 00000100

Om du ville vända på olika mönster av lysdioder kan du träna alla 256 kombinationer, men det skulle vara tråkiga.
Det finns ett bättre sätt!

Boolesk logik
Datorer på lägsta nivå arbetet med något som heter boolesk logik.
De använder logik gates för att kombinera binära tal.
Till exempel kommer en AND-gate bara ut en 1 om båda ingångarna är 1.
En eller-grind kommer ut en 1 om något av det är insatsvaror är 1.

Ta en titt här:
http://www.Electronics-tutorials.ws/Boolean/bool_6.html

Det visar "sanning tabeller" för gemensamma logik gates.

Så, vad är allt detta för oss?
Kan vi använda dessa logiska grindar direkt med bitvisa operatorer

Bitvis operationer

Kan säga att vi redan har den 3: e LED på:
LEDREG = 4; 00000100

Hur kan vi vända på första LED?
Vi skulle kunna sätta i värdet av 5 (00000101) men vi vill inte behöva räkna ut vilken kombination varje gång.
Vi kan i stället använda en OR-operator som så:
LEDREG = LEDREG | 1.
Vad detta innebär är detta
00000100 eller
00000001
--------------
00000101

Operatorn eller ställer upp varje bit och om det är på antingen byte, det kommer att vara på i utdata.
Ett snabbare sätt att skriva "LEDREG = LEDREG | 1."är:
LEDREG | = 1;

Du kan också länka din operatörer som så:
LEDREG | = 1 | 2.
Detta kommer komma till hands när vi lär oss SKIFT operatörer.

Vad händer om du ville växla alla lysdioder?
Du kan använda en inte operatör:
LEDREG = ~ LEDREG;

En inte operatören vänder alla bitar, så att du får:
00000101 inte
--------------
11111010

Nästa låt oss titta på en AND-operatorn.
OCH används för att maskera ett värde.
Det vill säga den används att tomma ut delar av en byte men behålla värdet av avsnittet omaskerade som så:

11111010 och
00001111
-------------
00001010

Du kan använda en och för att stänga av en hel grupp av lysdioder utan ändrar läget för resten.
I exemplet ovan skulle det användas som:
LEDREG & = 15. 00001111

En mer användbar operatör innan vi går vidare är XOR.
XOR står för exklusiv eller.
Det liknar en eller-grind, men om båda bitar på, då de är avstängda.
Till exempel:

LEDREG ^ = 15.

00001010 XOR
00001111
-------------
00000101

Nu, själva operatörerna är begränsade, du fortfarande behöva konvertera från binär till motsvarande decimaltal.
Det är där SKIFT aktörer kommer

Shift operatörer
Ett skift operatör skiftar helt enkelt alla siffror åt vänster eller höger.

Till exempel en vänster SKIFT 1:
x = 5 << 1.
ger dig x == 10
i binär som är:
00000101 <<
-------------
00001010

En höger SKIFT flyttas helt enkelt bitarna till höger:
00001010 >>
--------------
00000101

Några bitar i ändarna förloras helt enkelt (eller lagras i ett register som bär, men kan ignorera att för nu!)
Ett skift operatör kan användas som en mycket snabb multiplikation och division, så länge du är nöjd med bara att multiplicera / dividera med befogenheter 2, t.ex.:

x << 1 == x * 2
x << 2 == x * 4
x << 3 == x * 8

Skiften används mycket i inställningen register.
Kan återgå till vårt LED exempel.

Om vi vill ange den 6: e lite, istället för att arbeta ut vad som skulle vara och sedan ORing det med registret, kan vi använda en vänster SKIFT som så:
LEDREG | = (1 << 5);

Obs: Det är '5', inte '6' så behöver vi bara flytta den '1' 5 gånger.
I binär det skulle se ut som så:

00000001 <<
-------------
00100000

Vilket är då ORed med registret som så:

00000101 ELLER
00100000
-------------
00100101

I datablad ges vissa lite ställning vanligtvis ett namn som "RXEN" som används för att aktivera få mode i det seriella perifera och "TXEN" för sändnings.
Tillsammans skulle de se ut så här:
UCSRB | = (1 <

Detta bör vara tillräckligt för att komma igång, kan gå in på några riktiga exempel!

Se Steg
Relaterade Ämnen

Min Guide till AVR Transistortesters

Om du är en elektronik hobby sedan är AVR Transistortesters den största sak sedan skivat bröd! Varför om Ron Popiel levde han skulle hawking dessa natt och dag på Shopping nätverket. Men ibland finns det något sådant som för mycket av goda. Sortering...

Kompletta idioter guide till rc flygplan flyger

i detta instructables, jag kommer att visa dig hur till och vad du kommer att behöva bygga en modellflygplan. Jag ska berätta hur man bygger och reparerar ett rc plan. Nu kan börja med teorin, flygplan kan flyga på grund av sina vingar form, de är of...

Quick Start Guide till 3Doodler 2.0

Steg 1: Att lära känna 3Doodler 2.0 Steg 2: Slå på den Till vända den på plug in den och sedan flytta växeln till hög eller låg. (PLA/trä) lo (ABS, Flexy) högSteg 3: Vänta för ljus för att indikera den är redo Om du ställer in det för "lo" ljuse...

Guide till få Epic Helander skrivbordsunderlägg

Här är den kompletta Ultimate Guide till att få episka Helander skrivbordsunderlägg (detta är för din dator!) =)Steg 1: Wll behöver du:En dator, mac eller windows är absolut bra, så du kan använda någon jag använder windows men mac är mycket lik så d...

Din kompletta Guide till Minecraft PE

så, naturligtvis, jag gjorde min typiska bläddra-igenom cykel av Instructables, som jag bara om en gång i timmen eller så, när jag såg en av mina favorit medlemmar hade postat nyligen ännu ett Minecraft tutorial (denna medlem var Austydude). Jag klic...

En nybörjares guide till Arduino

Efter några år av experimentera med Arduino, beslutade jag att det är dags att dela den kunskapen har jag fått. Så jag här går, en guide till Arduino, med nakna grunderna för nybörjare och lite mer avancerade förklaringar för personer som är något me...

Alltid aktuell Guide till Ubuntu

Hej killar! Detta är det alltid uppdaterat Guide till Ubuntu. Det kommer att uppdateras med varje ny version av Ubuntu. Den nuvarande utgåvan är Ubuntu 13.04 Raring Ringtail. Nästa utgåva, 13.10 uppkäftig Salamander, beror den 17 oktober eller så. Om...

Arduino VFD Display klocka handledning - en Guide till VFD displayer

... + Lite om VFDsMinns du (fortfarande) visning av din gamla CD-spelare, HiFi system eller bil radio? Har du någonsin märkt displayerna används på din lokala mataffär som visar du skannade objektet och priset för det?Dessa skärmar har en karakterist...

Starta guiden till att bygga ett omvänd osmos hydroponics filter

Hej alla, detta är en grundläggande guide till planering ut en RO (omvänd osmos) och hydroponics vattenfilter. Detta instructable kommer att ge några grundläggande steg, personliga erfarenheter och information du behöver att hjälpa dig bygga ett RO h...

Grundläggande Guide till Flux kärnhus bågsvetsning

Hej och Välkommen till SLO Makerspace guide till Flux kärnhus bågsvetsning! Detta Instructable syftar till att lära dig att använda Lincoln Weld Pak HD flux Metallpulverfylld båge svetsare. Denna maskin är är en av de mest grundläggande svetsare till...

Guide till Nerf

jag vet, jag vet, alla mod NERF vapen att göra dem mer kraftfull och skjuta längre. Dock om du var i ett NERF krig, inte skulle du förmodligen kunna använda dem. Jag skrev detta som en guide till NERF krig sedan bara guider redan ute finns för mods....

En Guide till Raspberry Pi Arduino kommunikation i inbyggda system

Det här är en guide till olika metoder för kommunikation mellan Raspberry Pi och Arduino. Denna guide är skapad av allt jag lärt mig från inrättandet av en kapacitet skog. Inlägget av projektet kan ses, en video av projektet kan ses här, och dokument...

En vetenskapsman Guide till Citizen Science

Den underbara rouzejp var vänlig nog att översätta denna guide till franska. Läs den här!Le merveilleux rouzejp en eu la gentillesse de traduire ce guide sv français. Lisez-le ici!Citizen science är i ropet just nu, som det ska vara!Dock kan det vara...

Nexus 7 Wifi (2013, Flo, Razor) - Guide till firmware installationer och flera ROM

Jag investerat mycket tid och försökte göra det så enkelt som möjligt, så Läs den information som tillhandahålls helt innan du börjar att bråka med din enhet.Infos här kan användas på modeller också, särskilt från Nexus-serien.Men du måste använda mo...

Omfattande Guide till elektroniska brödunderläggen: en Meta Instructable

Brödunderläggen vet ibland som prototyping styrelser eller proto styrelser är ett snabbt sätt att arbeta upp och experimenterar med elektroniska kretsar. Set av brödunderläggen kretsar var ursprungligen kretsar byggd på riktigt trä brödunderläggen. V...

Den samverkande Guide till spela leda gitarr

detta är en guide till att spela gitarr. Eftersom jag är en aktiv medlem, och Danny's instructable är oavslutad (och i något förlägger verkligen innacurate, t.ex.. hans flikar var upp och ner), beslöt jag att göra en av mina egna till höger hans miss...

En Super vaga Guide till brygga öl

En Super vaga Guide till brygga ölInga detaljer men om du letar efter en allmän uppfattning om vad som händer i hem brygga öl sedan denna video är för dig...

En Pissheads Guid till varenda droppe

Steg 1: Saker du behöver 1 box vin1 par sax1 pissheadNär du tror du har slut på vin från ditt vin box tänka igen, snabb och enkel guide till få varenda droppeSteg 2: När vinet inte längre filtrerar från kranen slita öppna upp i rutan och ta bort påse...

A-Z Modding Guide till Nerf natt-Finder

här är en mod guide till om allt du kan mod på en nerf nightfinderMATERIALNight finderskruvmejselEpoxi (eller varmt lim)PVC-rör 1/8hacka sågDrilltångelastiskt bandBuzz bee enda skott våreno-ringarrörmokare tejpdartsmörjmedel (vaseline)skumpermanenta...