Atmel start 3: Binky en-PORT, PIN, DDR och LED (4 / 12 steg)

Steg 4: Atmel hemlighet: DDR och portar och stift

Här aktuella steget tar en paus från konstruktion och test. Människor ofta fråga (och bör be) hur man växla spänningsnivån (dvs logik state) på en MCU port pin man gör en LED blinkar (figur 1) och hur man läser en digital ingång.

Ofta en mikrokontroller (MCU) eller processor talar en av "porten" vilket innebär att en grupp av kablar som antingen ger data ur MCU eller till MCU. För en integrerad krets se "trådarna" fysiska stiften på IC. Atmel AVR MCU har i allmänhet portar med 8 stift eftersom MCU använder 1 byte stort data bussar. Hamnarna benämns ofta som Input-Output portar eller IO portar eller bara IO; Detta är digital IO portar. Atmel MCU kan ha många sådana IO portar som är märkta A, B, och så vidare. En finner ofta Atmel nyckelord PORTA, PORTB, PORTC, PORTD. Behaga läsa om denna punkt och märker att en fysisk port avser fysiska stiften på IC. Atmel använder nyckelorden för PORT och PIN (Obs caps) med hänvisning till Output och Input och register. Form av definition är ett register [14] en typ av minnesplats (kanske bättre kallas "lagringsplats") med särskilda förbindelser/sammankoppling till maskinvara. Registret är inte anses vara en del av programmet och variabel minne även om det kan vara möjligt att läsa, skriva, manipulera och överför register innehållet.

Här är nu del av hemligheten. Atmel jargong refererar ordet PORT (som används i PORTB till exempel) till en digital utgångsport whereby MCU genererar en spänning på trådarna spännande MCU. Atmel ordet PIN (som används i PINB till exempel) innebär MCU förlägger gruppen av fysiska ledningar i en hög impedans och MCU kan läsa digitala spänningar (0 eller Vcc där Vcc = 5 för experimenter's board inställningarna). Kanske mer viktigt, PORTB och PINB hänvisar till samma grupp av fysiska ledningar på MCU. En liknande kommentar gäller PORTA och PINA förutom fysiska stiften kommer allmänna skiljer sig från dem som PORTB och PINB hänvisar. Så hur avgör man om en fysisk pin på MCU är en ingång och en utgång för MCU?

Låt oss säga detta igen med andra ord. Det finns en skillnad mellan PORT och stift i ATMEL med C/C++. Ordet hamn refererar till ett register som ger utgångar till MCU fysiska stift. PORT registret lagrar 1: or och 0: or och MCU översätter dessa logiska värden för spänningar av Vcc och noll, respektive, på de fysiska pins. Ordet PIN refererar till ett register som tar emot indata från en grupp av fysiska stift. MCU kommer att översätta spänningar Vcc och noll på fysiska stiften till logisk 1: or och 0: or, respektive, för PIN registret. Observera ordet fysiska syftar till faktiska kort ledningarna utskjutande från MCU-paketet. Vi använder ofta ordet "port" med hänvisning till insamling av 8 stift; Detta bör läsas som fysisk port och fysiska stift.

OK, så hur gör man specificera om en fysisk pin är en ingång och en utgång för MCU? Atmel AVR använder begreppet Data riktning registrera DDR. Varje grupp av kablar bildar en fysisk IO port har sådan en DDR och märkta som DDRA, DDRB, DDRC, DDRD och så vidare. En DDR är ett 8-bitars register (dvs minne/lagring läge) liknar det motsvarande registret för 8-bitars IO portar. Värdet 1 i DDR stånd motsvarar en utgång för motsvarande fysiska stift. Värdet 0 ger en ingång på motsvarande fysiska PIN-koden. Till exempel motsvarar DDRB fysiska PortB. När DDRB bit #i har värdet av 1 sedan pin #i i fysiska PortB blir en utgång för MCU. Å andra sidan, när DDRB lite har #i ett nollvärde då fysiska pin #i i fysiska PortB kommer att vara en ingång. Kanske skulle mer konkreta exempel vara bättre.

Exempel 1: Enkel digital utgång och sju digitala ingångar

Överväga fysiska PortB på ATTiny2313A och anser att tabell 1 nedan. Den övre raden visar fysiska stiften på 20pin dopp paketet som visas på första sidan eller två av Atmel datablad. Den andra raden innehåller Atmel-namn för den fysiska stiftet.

Tabell 1: Exempel visar ATTiny2313A Pin 12 som en utgång och andra port B stiften som insatsvaror.

Fysiska Pins

19

18

17

16

15

14

13

12

Namn

B7

B6

B5

B4

B3

B2

B1

B0

DDRB

0

0

0

0

0

0

0

1

Fysiska PortB

I

I

I

I

I

I

I

Ute

Anta nu att vi först har satt DDRB = 1 som visas i den tredje raden i tabell 1. DDRB registret skulle normalt anges före läsning eller skrivning av PortB. MCU läser DDRB registret och anger det fysiska pin #12 som en utgång. Eftersom de andra bitarna i DDRB är noll, återstående fysiska stiften 13-19, som heter B1-B7, är alla ingångar. Vid denna punkt, programmet kan läsa eller skriva PortB sedan indata och utgångar har ställts in.

Exempel 2: Två produktionen stift och 6 ingångar

Tabell 2: Exempel med stift 13 och 14 som utgångar och resten ingångarna.

Fysiska Pins

19

18

17

16

15

14

13

12

Namn

B7

B6

B5

B4

B3

B2

B1

B0

DDRB = 00000110

0

0

0

0

0

1

1

0

Fysiska PortB

I

I

I

I

I

Ute

Ute

I

Den tredje raden i tabell 2 visar att vi först har satt DDRB = 00000110 i binär. I C/C++ detta skrivs som DDRB = 0b110 där "0b" betyder "binär". De inledande nollorna har utelämnats för enkelhet att ingå "110" men de kan ingå i instruktionen C som DDRB = 0b00000110 om så önskas. Samma värde kan skrivas i decimalform som DDRB = 6. Och det kan skrivas i hexadecimal form som DDRB = 0x06 där "0 x" står för hexadecimalt. Den fysiska PortB har därför pin13 och stift 14 som utgångar och alla andra stift som insatsvaror.

Kommentar: De fysiska stift som är utgångar kommer att kunna generera endera av två stater, nämligen noll och Vcc. För vårt projekt, experimenter's styrelse använder Vcc = 5v medan livlina konstrueras i en plastlåda använder Vcc som batteriets spänning, som kan variera från 4,9 volt till 3 volt beroende på laddning av batterierna. Utspänningen kan sedan användas för att styra andra komponenter. Atmel fysiska stift kan antingen käll- eller diskbänken 40mA av strömmen. För att kontrollera, hänvisa till de elektriska egenskaperna i spec/data täcker till exempel http://www.atmel.com/Images/doc8246.pdf. Så utgångsstiftet kan ge (dvs källa) bias ström när den fysiska stiftet har på utspänning av + Vcc eller det kan ta emot ström (dvs sjunka) när den fysiska pin har 0v.

Exempel 3: Skriva värden till utgångar

OK så låt oss ta ett par exempel för att använda DDRB, PORTB och PINB. Först överväga PORTB.

Tabell 3: Ett exempel att göra IO Port B pins utgångar.

Fysiska Pins

19

18

17

16

15

14

13

12

Namn

B7

B6

B5

B4

B3

B2

B1

B0

DDRB

1

1

1

1

1

1

1

1

Fysiska PortB

Ute

Ute

Ute

Ute

Ute

Ute

Ute

Ute

PORTB = 0b0100100

0

1

0

0

0

1

0

0

Fysiska Pin resultatet

0V

VCC

0V

0V

0V

VCC

0V

0V

I exemplet i tabell 3 har vi först ange DDRB = 0b11111111 = 0xFF = 255 decimal så att fysiska stift 12-19 är alla utgångar för MCU. Nästa antar vi skriver följande byte till utgång registret för B som PORTB = 0b0100100 som visas i den sjätte raden i tabell 3. Obs "PORTB =" sätt att ställa in PortB utgång register till ett värde – det är lättare att tänka på PORTB som en variabel och "PORTB =" sätt att ange variabeln som motsvarar ett värde, som MCU översätts till spänningar på fysisk port. När PORTB har logic '1', produktionen bör ställa ut det fysiska genomförandet av '1' som är Vcc eller, för våra experimenter's styrelse,

Logic 1 = > Vcc = + 5volts

Använder logik 1 på detta sätt kan för en stor många olika plattformar att använda samma kodning så länge MCU vet hur man förvandlar logik värdena till spänningar. Så jämför de sjätte och sjunde raderna i tabell 3 visar att de fysiska pins som en logik 1 har skrivits ställer ut en spänning på Vcc. De andra stiften har noll volt potentiella. VIKTIG punkt: Tecken "PORTB =" i detta fall innebär att skriva något till fysiska stiften i PortB (faktiskt detta först skriver att PORTB registrera dig och sedan logik värdena är översatt av spänning genererar kretsar i MCU). På detta sätt kan MCU styra externa kretsar.

Exempel 4: Läs värden från input pins

Nu överväga ett annat fall där vi först ange (i vårt program) DDRB = 0b00000000 (binära) = 0x00 (hex) = 0 (decimal) som i tabell 4. Här kommer alla fysiska stift 12-19 att ingångar på grund av alla nollorna i DDRB.

Tabell 4: Exempel på stift 12-19 är alla ingångar.

Fysiska Pins

19

18

17

16

15

14

13

12

Namn

B7

B6

B5

B4

B3

B2

B1

B0

DDRB

0

0

0

0

0

0

0

0

Fysiska PortB

I

I

I

I

I

I

I

I

Tillämpad volt till stift

0V

0V

0V

0V

0V

VCC

0V

VCC

PINB innehållet

0

0

0

0

0

1

0

1

Vidare antar att några externa agent (som mig eller dig) gäller spänning att MCU fysiska stift 12-19 som visas i den sjätte raden i tabell 4. VIKTIG punkt: Använda "= PINB" betyder att läsa spänningar på fysiska stiften motsvarar IO PortB och konvertera dem till logik värden. Detta skulle användas i ett C/C++ tilldelningssats såsom "x = PINB". Innehållet i variabeln x (dvs PINB) kan ses i den sista raden i tabell 4 har värdet

x = 0b00000101 (binära) = 0x05 (hex) = 5 (decimal)

MCU konverterar Vcc på en ingångsstift att logik värdet 1 och noll annars. På detta sätt, kan MCU läsa påstår av externa kretsar.

Exempel 5: Blandade IO och Pull-up motstånd

Det finns fortfarande en annan möjlig situation där en IO-port har både indata och utdata och MCU utför skrivåtgärder till porten. Vad händer? För ett stift som är en ingång, skriva (med PORTB etc) kan aktivera eller inaktivera en inre pull-up resistor beroende på om motsvarande bit in Skriv är en 1 eller 0 respektive. Se start 4. Läsa en port (med PINB etc) av blandade IO (vissa stift i hamnen är utgång och resten är ingång) kommer att läsa indata när PIN-koden anges som indata och det läser tidigare skriftliga värde (som är fortfarande i PORTB register) om fysiska PIN-koden är en utgång. Referera till start 4 eller bruksanvisning för detaljer [0,1].

Nu till koden Blinky en projektet.

Se Steg
Relaterade Ämnen

Atmel start 1: Atmel Studio och programmerare

M. A. Parker c2015Installera Atmel Studio (AS) och en programmerare förkroppsligar de första stegen [0] på väg mot med hjälp av en Atmel AVR Microcontroller individenhet MCU [1] i motsats till MCU-på-en-styrelsen som Arduino [2]. Här startar resan, o...

Atmel start 2: Microcontroller kretsar och säkringar

M. A. Parker c2015Kretsar och säkringar konstruerar en enkel men viktig krets på en experimenter's skärbräda som ska användas som grundläggande plattform för många microcontroller projekt och för att ange parametrarna mikrokontroller (dvs säkringar)....

Atmel start 4: Blinky två-växlar, Pull-Up motstånd och Bit Ops

Figur 1: Exempel växlar som kan använda MCU pull-up resisters, främre: Foto-motstånd, Foto-transistor, knapp; Bakre: exempel knappsatser.M. A. Parker c2015Blinky två visar hur MCU kan lätt läsa delstaten externa switchar, vilket inkluderar tryckknapp...

Atmel start 5: Livlina

M. A. Parker c2015Livlinan är en enkel krets baserad på Atmel ATTiny2313A mikrokontroller enheten (MCU) som fungerar som ett substitut klocka källa för ett mål MCU återges ur funktion av felaktigt ställa in klockan säkringar. Projektet, tänkt att var...

Sonifying kapacitiv Data över Serial Port med Teensy och SuperCollider (OSX och Linux)

Om det inte går att del med $600 dollar behövs för att köpa MaxMSP (och din gratis 30 dagar har löpt ut) det finns inte många gratis alternativ som kan konkurrera med samma nivå av ljudkvaliteten som MaxMSP. Lyckligtvis är detta ett område där SuperC...

Shift: Standard Pin, Bullpup och slangbella.

Hej killar! Detta Akshat21045 med JonnyBGood, i en pistol samarbete!Detta är en mycket speciell typ av instructable. I detta, skall vi göra tre olika typer av vapen, från nästan samma kropp! Jag hoppas att du njuta av vårt samarbete!Här är en snabb ö...

Skalbagge Kill Pine huvudgavel (och ram)

Jag gjorde denna huvudgavel att belysa skalbagge döda furu utan ser ut som det hörde hemma i en timmerstuga.Stommen är konstruerad för att användas med en låg profil drottning storlek madrasser (ca 6 inches lång).Material:Huvudgavel endast1 i x 3 i x...

Passar gitarr rem slutet pin knappar och gutar stil rem till en Ukelele.

This is how I made and fitted acoustic guitar style straps on 2 of my Ukeleles.Efter att ha provat ut en runda nacke stil strängen Ukelele rem men bara att hitta det gjorde ingenting men skrapa av ljud hål och vara en konstant irritation som det stän...

Brosch pin display och beskyddare fallet

Har du (som mig) vackra broscher och stift som är undanstoppad i vissa fall och aldrig används? Eller kanske du gå till en konvention en gång per år och få en pin som du hålla och kasta i en låda när du kommer hem?Jag gillar min pins och broscher, me...

Avmystifiera 4 pin adresserbara RGB LEDS

Om du har sett min tidigare Instructable RGB lysdioder, så har du en ganska bra grund på förmågan att sätta tre skilda ljuskällor i ett enda paket i din bygger.Tiden marscherar på, och det gör teknik! En av de mest innovativa nya sakerna om RGB lysdi...

Arduino väckarklocka Canvas--hur man

material behöver du:1. duk (valfri storlek)2. tyg (tillräckligt för att täcka duken)3. kardborre4. 8-10 LED-lampor5. ledande tråd6. tråd7. 1 Lilypad enkel fäst styrelsen (du kan välja att använda andra Lilypad brädor också)8. 1 Lilypad högtalare/Summ...

Tyg dammen

när du pekar siffrorna, blommorna kan blinka och göra mönster!Steg 1: Material som behövs - 4ft av blå bomullstyg (för basen av dammen) pris: $4 (Walmart)-4 bitar av grön filt (för lily pads) och 4 bitar av olika färger (för blommor) pris: 4 för $1 (...

Beröring-känslig musikaliska målning

Denna musikaliska målning är en grafisk poäng som du rör för att spela melodier och harmonier. Den innehåller visuell komposition, musikalisk sammansättning och gestikulerande samverkan skapa en ny form av visuell musik där sammansättningen och instr...

Interaktiva Quilt

detta projekt är en hängande, interaktiva quilt för min 8-åriga dotter. Varje avsnitt av täcket kräver henne göra något för att aktivera antingen ljus eller ljud.Material som behövsFör täcke:Tyg-5 färger för bakgrund-Säkerhetskopiera & bindande (ca 1...

Kapacitiv Touch Arduino lampa

EDIT: Jag gjorde ännu en av dessa och hacka en ikea-lampa med den. Du kan se den "vänners kompatibla overe härProblemetDet är sent på kvällen, och din mobiltelefon ringer. Du kan inte se där det är, du blint famlar runt ditt Nattduksbord, förgäves fö...

Lär dig mer om mikrokontroller

Detta Instructable var utformad för att svara på frågan: Hur kommer jag igång i microcontrollers? Nu, i klara, enkla engelska, kan du lära dig vad en mikrokontroller är, och hur du använder en. Du kommer att lära dig att göra allt du behöver för att...

Billiga logik Analyzer

Om du vill göra digitala kretsar kanske behöver du en logik analyzer att logga data och analysera dem på PC som är mycket användbar för felsökning. Dessa verktyg är inte så dyrt och du kan köpa en helt enkelt. En dag insåg jag att en av dessa verktyg...

Göra en flygplats i Google Earth och flyga runt

Efter att upptäcka det är en dold flygsimulator i Google Earth, del av en beta-test för några framtida online spel, var det bara en tidsfråga (två dagar) innan jag trodde om hacking simulatorn på en mindre skala. Efter att ha gjort några NOE flyger o...

Infinity spegel ändra touch tabell

När jag fick detta uppdrag för min interaktionsdesign klass, som innebar att använda en Arduino uno, en kombination av händelser ledde till skapandet av min touch infinity spegel bord. Söka igenom en mängd olika Instructables, medan samtidigt renover...