AVRSH: Ett kommando tolken skal för Arduino/AVR. (4 / 6 steg)
Steg 4: Andra kommandon
CPU-klockan frekvens inställningar
Du kan hitta vad din firmware har konfigurerats för att använda som CPU klockinställningarna med kommandot fcpu :
rot fcpuCPU Freq: 16000000
Det är 16 miljoner, eller 16 miljoner herz, mer känd som 16 MHz. Du kan ändra detta i farten, oavsett orsak, med kommandot klocka . Detta kommando tar ett argument: prescaler ska användas när dividera din klockfrekvens. Kommandot klocka förstår dessa prescaler värden:
- ckdiv2
- ckdiv4
- ckdiv8
- ckdiv16
- ckdiv32
- ckdiv64
- ckdiv128
- ckdiv256
Med kommandot:
klocka ckdiv2
När cpu-hastigheten är 16MHz skulle resultatet i din klockfrekvens ändras till 8 MHz. med en prescaler för ckdiv64 med en inledande klockfrekvens på 16MHz kommer att resultera i en slutlig klockfrekvens på 250 KHz. Varför på jorden skulle du vilja göra din MCU långsammare? Tja, för en, en lägre klockfrekvens förbrukar mindre ström och om du har din MCU kör bort av ett batteri i en projektet inhägnad du kanske inte behöver det för att köra på högsta hastighet, och kunde därför sänka hastigheten och sänka sin energiförbrukning, öka batteritiden. Också, om du använder klockan för någon form av Tidsproblem med en annan MCU, säga, genomföra en programvara UART eller något sådant, kan du ställa in den till ett visst värde som är lätt att få en fin även överföringshastigheten med lägre fel.
Driva upp och stänga perifera delsystem
På den samma anmärkningen som minskar strömförbrukningen som tidigare nämnts, kan du minska ytterligare makt genom att stänga några av de fordonsbaserade kringutrustning som du inte använder. Kommandotolken och shell kan för närvarande driva upp och stänga följande kringutrustningsenheter:
- Analog till Digital omvandlare (ADC). Denna kringutrustning används när du har en analog sensor som tillhandahåller data (som temperatur, ljus, acceleration, etc) och konvertera den till ett digitalt värde.
- Seriellt perifera gränssnitt (SPI). SPI bussen används för att kommunicera med andra SPI-aktiverade enheter, såsom externa minnen, LED drivers, externa ADC, etc. Delar av SPI används för Internet-programmering eller på minst stiften är, så var försiktig när stänga detta om programmering via Internet-leverantör.
- Två-tråd gränssnitt. Vissa externa enheter använder I2C bussen för att kommunicera, även om detta snabbt ersätts med SPI-aktiverade enheter som SPI har en ökad genomströmning.
- USART. Detta är din seriella gränssnitt. Du vill förmodligen inte att stänga av detta om du är ansluten till AVR via seriell anslutning! Men jag lade till detta här som ett skelett för att anpassa till enheter som har flera USART som ATmega162 eller ATmega644P.
- alla. Argumentet att kommandot powerup eller powerdown vänder på alla kringutrustning nämns eller inaktiverar dem alla med ett enda kommando. Återigen, Använd kommandot klokt.
roten powerdown twiPowerdown av twi complete.root powerup twiPowerup av twi komplett.
Starta och stoppa Timers
Skalet har en inbyggd 16-bitars timer som är tillgänglig för användning. Du startar timern med kommandot timer:
timer start
och stopp tidtagare stopp argumentet:
tidtagare stopp
Denna timer kommer inte i konflikt med inre USART timer. Se koden för implementeringen av USART timer, om den sorteringen blodiga detalj intresserar dig.
root timer startStarted timer.root timer stopElapsed tid: ~ 157 sekunder
Autentisering
Skalet kan lagra en 8-teckens lösenord i EEPROM. Detta lösenord mekanism skapades för att stödja den telnet logik kapaciteten, men skulle kunna utvidgas för att skydda andra saker. Du kan till exempel kräva vissa kommandon, som att ändra registret värden, genom autentiseringsmekanism.
Ställ in lösenord med kommandot lösenord :
roten passwd blahWrote root-lösenordet till EEPROM
Auktorisera mot han lösenord (eller krävs tillstånd programatically igenom koden) med kommandot auth. Observera att om du försöker ändra root-lösenordet och det finns redan en rotfästa lösenord, måste du auktorisera dig själv mot det gamla lösenordet innan de tillåts att ändra det till ett nytt lösenord.
roten passwd blinkyYou måste tillåta dig själv first.root auth blahAuthorized.root passwd blinkyWrote nya root-lösenordet till EEPROM
Naturligtvis måste du ladda avrsh.eep fil om du raderar firmware för att få din gamla värderingar och variabler återställd. Makefile kommer att skapa filen EEPROM för dig.
Variabler
Skalet förstår begreppet egna variabler. Koden begränsar det till 20, men du kan ändra det om du gillar genom att ändra definiera MAX_VARIABLES i script.h. Du kan spara någon 16-bitarsvärde (det vill säga alla nummer upp till 65.536) till en variabel erinras om senare. Syntaxen liknar register förutom ett dollartecken ($) används för att beteckna variabler till skalet. Lista alla dina variabler med kommandot Skriv ut variabler.
Skriv ut variablesUser-definierade variabler: Index namn -> Value(01): $FREE$ -> 0(02): $FREE$ -> 0(03): $FREE$ -> 0(04): $FREE$ -> 0(05): $FREE$ -> 0(06): $FREE$ -> 0(07): $FREE$ -> 0(08): $FREE$ -> 0(09): $FREE$ -> 0(10): $FREE$ -> 0(11): $FREE$ -> 0(12): $FREE$ -> 0(13): $FREE$ -> 0(14): $FREE$ -> 0(15) : $FREE$ -> 0(16): $FREE$ -> 0(17): $FREE$ -> 0(18): $FREE$ -> 0(19): $FREE$ -> 0(20): $FREE$ -> 0Complete.
Ange en variabel:
$newvar = 25$ timeout = 23245
Får värdet av en viss variabel:
roten echo $newvar$ newvar -> 25
Du kan se vad alla variabler som du för närvarande har instansierats med kommandot Skriv ut som du redan vet.
Egna variabler: Index namn -> Value(01): newvar -> 25(02): timeout -> 23245(03): $FREE$ -> 0(04): $FREE$ -> 0(05): $FREE$ -> 0(06): $FREE$ -> 0(07): $FREE$ -> 0(08): $FREE$ -> 0(09): $FREE$ -> 0(10): $FREE$ -> 0(11): $FREE$ -> 0(12): $FREE$ -> 0(13): $FREE$ -> 0(14): $FREE$ -> 0(15) : $FREE$ -> 0(16): $FREE$ -> 0(17): $FREE$ -> 0(18): $FREE$ -> 0(19): $FREE$ -> 0(20): $FREE$ -> 0Complete.
$FREE$ namn anger bara att denna variabel plats är gratis och har tilldelats en variabel namn ännu.