AVRSH: Ett kommando tolken skal för Arduino/AVR. (2 / 6 steg)

Steg 2: Läsa och skriva register



På AVR Shell skrevs främst för att komma åt vissa sensorer som jag hade anslutit till min AVR. Det började med en enkel LED sedan flyttade till ljussensorer, temperaturgivare, och slutligen till två ultraljudssensorer. avrsh kan ställa in de digitala komponenterna av dessa sensorer genom att skriva till de register som styr dem.

Manipulera AVR registrerar medan du kör
För att få en lista över alla kända register på din Arduino, skriv:

skriva ut register

och du får en utskrift som ser ut så här...

Jag vet om följande register:
TIFR0 PORTC TIFR1 PORTD TIFR2 DDRD
PCIFR DDRB EIFR DDRC EIMSK PINB
EECR PINC EEDR PIND SREG EEARL
GPIOR0 EEARH GPIOR1 GTCCR GPIOR2 TCCR0A
TCCR0B TCNT0 OCR0A OCR0B SPCR SPDR
ACSR SMCR MCUSR MCUCR SPMCSR WDTCSR
CLKPR PRR OSCCAL PCICR EICRA PCMSK0
PCMSK1 TIMSK0 TIMSK1 TIMSK2 ADCL ADCH
ADCSRA ADCSRB ADMUX DIDR0 DIDR1 TCCR1A
TCCR1B TCCR1C TCNT1L TCNT1H ICR1L ICR1H
OCR1AL OCR1AH OCR1BL OCR1BH TCCR2A TCCR2B
TCNT2 OCR2A OCR2B ASSR TWBR TWSR
TWAR TWDR TWCR TWAMR UCSR0A UCSR0B
UCSR0C UBRR0L UBRR0H UDR0 PORTB

root

För att se hur de enskilda bitarna anges i något register, Använd kommandot echo eller katt :

katt % GPIOR0

Här ber jag kommandotolken som ska visas, eller echo, innehållet i de allmänna ändamål i/o-registrera #0. Observera procenttecken (%) framför namnet register. Du behöver detta för att indikera på tanken att detta är ett reserverat nyckelord som identifierar ett register. Typiska utdata från en echo-kommandot ser ut så här:

GPIOR0(0x0) inställd [00000000]

Visar namnet på registret, det hexadecimala värdet i registret och den binär representationen av registret (visar varje bit som en 1 eller 0). Ange en viss bit i något register med den "index av" operatör []. Till exempel, låt oss säga jag vill ha den 3: e lite till 1.

% GPIOR0 [3] = 1

och skalet kommer att ge dig ett svar som anger det är action och resultatet:

GPIOR0(0x0) inställd [00000000] -> (0x8) inställd [00001000]

Dont' glömma procenttecknet berätta skalet du arbetar med ett register. Observera att genom att 3: e biten, som beror på 4 bitar i vår AVR använder ett nollbaserat index. Med andra ord räkna till 3: e lite du räkna 0, 1, 2, 3, som är den 4: e platsen, men den 3: e lite. Du kan rensa lite på samma sätt genom att ställa in lite till noll.

Genom att ställa in bitar som denna kan du ändra hur din AVR i farten. Till exempel genom att ändra CTC timern matcha värdet som hittades i OCR1A. Du kan också kika in särskilda inställningar som du måste kolla programmässigt i din kod, som det UBBR värdet för din baudfrekvens.

Arbeta med DDRn, PORTn och PINn
I/O pins tilldelas också till register och kan ställas in på exakt samma sätt, men en speciell syntax har skapats för att arbeta med dessa typer av register.

I koden, det är en normal process för, säg, vrida på en LED eller annan enhet som kräver en digital hög eller låg. Det kräver att Data riktning registrera att ange PIN-koden är för utdata, och sedan skriva en 1 eller 0 till visst lite i rätt port. Förutsatt att vi har en lysdiod ansluten till digital pin 13 (PB5) och vi vill slå på den, här är hur man gör det när din AVR körs:

ställa in pin pb5 outputwrite pin pb5 hög

Produktionen, förutom att kunna se din LED kom igen, skulle se ut så här:

root Ställ in pinkodsskydd pb5 outputSet pb5 för outputroot skriva pin pb5 highWrote logic hög till pin pb5

"Root är den avsats snabb som visar det är klar att ta emot kommandon från dig. Om du vill inaktivera LED, skulle du helt enkelt skriva en låg till stift. Om du vill läsa den digitala indata från en PIN-kod, kommandot Läs. Med hjälp av våra ovanstående exempel:

roten läsa pin pb5Pin: pb5 är hög

Alternativt kan du bara echo pin registret som styr det pin porten. Till exempel om vi har dip-switchar ansluten till digital stift 7 och 8 (PD7 och PD8), kan du skicka kommandot:

ECHO % PIND

och skalet skulle sedan Visa innehållet i registret, visar du alla input/output stater anslutna enheter och om tillståndet i växeln var på eller av.

Se Steg
Relaterade Ämnen

Hur till installera Google Earth i Linux med ett kommando

installera program i Linux kan vara knepigt ibland för nybörjare. I detta instructable, kan du installera Google Earth med endast ett kommando.Steg 1: Installation Bara gå till terminal, klistra in detta kommando och tryck på RETUR och det kommer att...

Hur man får ett kommando block i minecraft

jag gjort detta i kreativa läge...Steg ett:gå till din kommandofältetSteg två:Skriv in: / ge 137Steg tre:så ska u ha ett kommando block.DU MÅSTE TILLÅTA FUSK FÖR DETTA ARBETE!...

Telnet till din Arduino/AVR!

Häromdagen var jag vill kolla på en av min AVR: s men jag var på övervåningen och Gud vet det var för mycket jobbigt att gå ner till där mikrokontroller var. Men det fanns två inaktiv datorer sitter på övervåningen bredvid min lata rumpa, så jag hade...

En avancerad metod för Arduino & AVR programmering

Detta instructable är ett måste läsa för alla som är bekanta med core AVR chips och Arduino.Tja, mer konkret, när jag läste den instructable kommer du att kunna:1) vet väl skillnaden mellan AVR och Arduino.2) programmering Arduino med WinAVR & använd...

Automatiskt öppna / stänga en låda med ett linjärt ställdon och Arduino

Det finns en enkel glädje i att trycka på en knapp som öppnar en ruta för dig. Visst det finns snabbare och effektivare sätt att öppna en låda, men inget kan jämföras med magiskt i en aktiverings lock. För denna tutorial, kommer vi att göra en låda s...

Gör ett Minecraft gaming tangentbord med en arduino.

Minecraft är ett mycket populärt spel och det är också en av de mest spelade spel. Jag har byggt ett Mini-tangentbord som är dedikerade till att spela Minecraft! Allt du behöver för att bygga detta är en Arduino Leonardo, förfallodatum eller Micro st...

Utveckla ett ATtiny firefly projekt använder Arduino och det är IDE

Jag såg nyligen ett intressant projekt av Karl Lunt som används en ATtiny13 för att efterlikna en firefly (http://www.seanet.com/~karllunt/fireflyLED.html). Detta i sig, är verkligen inte unik, men det fick mig att tänka om en av mina tidiga microcon...

Driva din Arduino/AVR med ett Hand-Cranked batteri

om du någonsin velat driva din Arduino eller AVR från ett batteri för utveckling testning (batterierna har olika makt leverans kvaliteter än, säg, transformerad AC eller ens en reglerad vägg vårta i DC) testning men var trötta för att gå igenom batte...

Hur man analyserar ett fordons CAN-BUS med en Arduino ansluten till en CAN-BUS sköld och fri programvara.

Maskinvara byggd i en tidigare InstructableI en tidigare instructable Ive visas hur du kan sätta ihop hårdvara för att skanna din kan bussen, den instructable kan hittas här.Jag skapade en forumtråd som förklarar lite mer i detalj,http://techtinker.c...

Ge ett hett tips: Skala en $2 Bill från en Pad!

Såvida du är en hård och aldrig tips någon service människor, är du antagligen van vid att sprita ut några tior för vänta personal, en betjänt, concierge eller någon annan tjänst. Du bryter ut plånboken eller dra ut en tuss av räkningar du har stoppa...

Octodogs i ett hav av skal

en av våra favorit måltider är Mac n cheese och korv. För att göra det lite roligare, jag hittade denna idé i en bok och det blev bra!Behöver du kokt korv, en kniv, och senap samt några kokta mac n cheese på en tallrik.Steg 1: bläckfisk: först skär P...

Vattennivån Sensormodul för Arduino AVR ARM STM32 STM8

Grattis till ICStation -teamet! De har utvecklat denna underbara vattennivån Sensormodul av stora ansträngningar. Denna modul med liten storlek och hög kostnadseffektiva är lätt att använda. I denna artikel, kommer att vi använda digital lagring osci...

Att lägga till ICSP header till din Arduino/AVR styrelse

så du kanske har spelat med Arduino's, eller snarare Hackduino. Om du gjort din egen Hackduino eller liknande projekt, kanske du undrar hur du lägger till i ICSP huvudet. I grund och botten gör med ICSP-huvudet att du kan använda en extern programmer...

Arduino AVR programmering sköld

Behöver du ett snabbt och enkelt sätt att programmet AVR marker. Visste du att du kan använda din Arduino och Arduino IDE? Denna Arduino shield gör processen mycket enklare.Du kan:Bränn en bootloader på en ersättare Atmega328 för din UNO.Göra ett fri...

Plug And Play remote relay (hallon och Arduino och läsa sensorer)

Målet var att skapa användarvänliga heltäckande kontroll över eluttag med relä, inklusive (och kanske främst) Web GUI och automation.Som alltid försöker jag använda befintliga lösningar och förlita sig så lite som möjligt på specifika plattformar.En...

Garduino uppgraderingen, nu med mer Twitter!

Ett par månader sedan kom jag över två stora instructables. Först var Garduino, en arduino kontrollerade trädgård som hjälper dig att odla växter i hemmet. Andra var den Tweet-a-watten, ett projekt som lär dig att övervaka ditt hem makt användning me...

Hur man använder ett fotomotstånd (eller fotocell) - Arduino handledning

Ett fotomotstånd eller fotocell är en ljus-kontrollerad variabel resistor. Motståndet av ett fotomotstånd minskar med ökande infallande ljus intensitet. Ett fotomotstånd kan tillämpas i ljuskänsliga detektor kretsar och ljus - och mörk-aktiverat växl...

Hur man styr arduino med ett mail

Det finns många lösningar för att styra en Arduino ombord: web lösningar, desktopen applicering lösningar, lösningar. Men hur mail? Ja, du kan hitta något på nätet men de behöver ethernet sköldar och ofta är Arduino som skickar e-post. Jag kontroll A...

Digital kök väger skala gränssnitt för Arduino

IntroJag utvecklade ett gränssnitt program för Arduino att läsa upp en skala. Det finns inga extra elektronik som behövs, bara två kablar mellan den interna skala elektroniken och Arduino.Se mer här:http://www.avdweb.nl/Arduino/Hardware-interfacing/S...