Obsah:
- Krok 1: Co budete potřebovat
- Krok 2: Registry pro čtení a zápis
- Krok 3: Pojistky pro čtení a psaní
- Krok 4: Další příkazy
- Krok 5: Přizpůsobení prostředí
- Krok 6: Shrnutí
Video: AVRSH: Shell příkazového tlumočníka pro Arduino/AVR .: 6 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:25
Chtěli jste někdy být „přihlášeni“ke svému mikrokontroléru AVR? Přemýšleli jste někdy o tom, že by bylo skvělé „kočičit“registr, abyste viděli jeho obsah? Vždy jste chtěli způsob, jak zapnout a vypnout jednotlivé periferní subsystémy vašeho AVR nebo Arduina v * reálném čase *? Já také, proto jsem napsal AVR Shell, shell podobný UNIXu. Je to jako UNIX, protože to připomíná účet shellu, který jste si koupili a koupili, na kterém spustíte své kolizní roboty irc nick, a také společný příkaz nebo dva. Má také souborový systém, který se podobá extixům UNIX, pomocí externí EEPROM, ale to se stalo projektem samo o sobě, takže tento modul uvolním samostatně pod jiným instrukčním programem, až bude připraven k produkci. Zde je seznam věcí, které můžete v současné době dělat s AVR Shell:
- Přečtěte si všechny své datové směrovací registry (DDRn), porty a piny v reálném čase
- Zapisujte do všech svých DDRn, portů a pinů a zapněte motory, LED diody nebo čidla v reálném čase
- Seznam všech známých registrů v systému
- Vytvářejte a ukládejte hodnoty do uživatelem definovaných proměnných zálohovaných pomocí EEPROM.
- Vytvořte heslo root a ověřte se proti němu (používá se pro přístup k telnetu)
- Přečtěte si nakonfigurovanou rychlost hodin CPU
- Změňte rychlost hodin procesoru nastavením předzesilovače
- Spouštění a zastavování 16bitových časovačů pro časování různých věcí
- Napájení a/nebo vypnutí periferních subsystémů: Analogově digitální převodníky (ADC), Sériové periferní rozhraní (SPI), Dvouvodičové rozhraní (TWI/I2C), UART/USART. Užitečné, když chcete snížit spotřebu energie mikrokontroléru nebo povolit určité funkce.
- Napsáno v C ++ s opakovaně použitelnými objekty.
Tento návod vás provede instalací, používáním a přizpůsobením avrsh.
Krok 1: Co budete potřebovat
Tento instruktáž nevyžaduje mnoho, kromě toho, že:
- Máte Arduino nebo ATmega328P. Mohly by fungovat i jiné AVR, ale možná budete muset upravit kód tak, aby uváděl všechny registry, které jsou pro váš MCU jedinečné. Jména musí odpovídat pouze tomu, co je uvedeno v souboru záhlaví jedinečného pro váš MCU. Mnoho názvů registrů je mezi AVR stejných, takže se počet najetých kilometrů může při přenosu lišit.
- Najděte způsob, jak se připojit k sériovému USART vašeho Arduino/AVR. Systém byl nejrozsáhlejší testován pomocí AVR Terminal, aplikace pro Windows, která vytváří sériové připojení přes váš port USB nebo COM. Funguje s Arduinos pomocí USB připojení a jakýmkoli AVR pomocí USB-BUB od Moderndevice.com. Mezi další možnosti terminálu patří: Putty, minicom (Linux a FreeBSD), obrazovka (Linux/FreeBSD), Hyperterminal, Teraterm. Zjistil jsem, že tmel a teraterm při připojování posílají nějaké odpadky, takže váš první příkaz může být zkomolený.
- Nechejte si nainstalovat a spustit firmware AVR Shell, který si můžete stáhnout z těchto stránek, nebo vždy získat nejnovější verzi na BattleDroids.net.
Chcete -li nainstalovat terminál AVR, stačí jej rozbalit a spustit. Chcete -li nainstalovat firmware AVR Shell, stáhněte jej a buď přímo nahrajte hexadecimální soubor a připojte svůj sériový terminál rychlostí 9600 baudů, nebo jej zkompilovejte pomocí „make“a poté „make program“pro nahrání hexu. Všimněte si, možná budete muset změnit nastavení AVRDUDE tak, aby odráželo váš COM port. Poznámka: Atribut PROGMEM je v aktuální implementaci AVR GCC pro C ++ nefunkční a toto je známá chyba. Pokud jej zkompilováte, očekávejte mnoho varovných zpráv s hlášením „varování: do oblasti paměti programu lze umístit pouze inicializované proměnné“. Kromě toho, že je toto varování otravné, je neškodné. Protože C ++ na integrované platformě není na seznamu priorit AVR GCC, není známo, kdy to bude opraveno. Pokud se podíváte na kód, uvidíte, kde jsem provedl práci na snížení tohoto varování implementací vlastních atributových příkazů. Docela jednoduché. Stáhněte si a nainstalujte vše, co byste mohli potřebovat, a poté převraťte stránku a začneme pracovat.
Krok 2: Registry pro čtení a zápis
Shell AVR byl napsán především pro přístup k některým senzorům, které jsem připojil ke svému AVR. Začalo to jednoduchou LED diodou, poté přešlo na světelné senzory, teplotní senzory a nakonec na dva ultrazvukové snímače. avrsh může nastavit digitální komponenty těchto senzorů zápisem do registrů, které je ovládají. Manipulace s registry AVR za běhu Chcete -li získat seznam všech známých registrů ve vašem Arduinu, zadejte:
tiskové registry a získáte výtisk takto
Vím o následujících registrech:
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 UCSR Chcete -li zjistit, jak jsou jednotlivé bity nastaveny v libovolném registru, použijte příkaz cat nebo echo
kočka %GPIOR0 Zde žádám tlumočníka příkazů, aby zobrazil nebo zopakoval obsah registru I/O General Purpose I/O Register #0. Všimněte si znaku procenta (%) před názvem registru. Potřebujete to, abyste shellu naznačili, že se jedná o vyhrazené klíčové slovo identifikující registr. Typický výstup z příkazu echo vypadá takto
GPIOR0 (0x0) nastaveno na [00000000] Výstup zobrazuje název registru, hexadecimální hodnotu nalezenou v registru a binární reprezentaci registru (každý bit ukazuje jako 1 nebo 0). Chcete -li nastavit konkrétní bit v libovolném registru, použijte operátor „index“. Řekněme například, že chci 3. bit na 1
%GPIOR0 [3] = 1 a shell vám odpoví, že je to akce a výsledek
GPIOR0 (0x0) nastaveno na [00000000] (0x8) nastaveno na [00001000] Nezapomeňte na znak procenta, abyste řekli shellu, že pracujete s registrem. Všimněte si také, že nastavením 3. bitu jsou to 4 bity, protože naše AVR používají index založený na nule. Jinými slovy, počítáním do 3. bitu počítáte 0, 1, 2, 3, což je 4. místo, ale 3. bit. Trochu můžete vymazat stejným způsobem nastavením bitu na nulu. Nastavením bitů, jako je tento, můžete měnit fungování AVR za běhu. Například změnou hodnoty shody časovače CTC nalezené v OCR1A. Také vám umožní nahlédnout do konkrétních nastavení, která byste museli programově zkontrolovat ve svém kódu, například hodnotu UBBR pro vaši přenosovou rychlost. Práce s DDRn, PORTn a PINn I/O piny jsou také přiřazeny k registrům a lze je nastavit úplně stejným způsobem, ale pro práci s těmito typy registrů byla vytvořena speciální syntaxe. V kódu existuje normální proces, řekněme, zapnutí LED nebo jiného zařízení, které vyžaduje digitální vysokou nebo nízkou úroveň. Vyžaduje nastavení registru Data Direction, aby indikoval, že pin je pro výstup, a poté zapsání 1 nebo 0 na konkrétní bit ve správném portu. Za předpokladu, že máme LED diodu připojenou k digitálnímu pinu 13 (PB5) a chceme ji zapnout, postupujte takto, když běží váš AVR
nastavit pin pb5 outputwrite pin pb5 high Výstup, kromě možnosti vidět rozsvícení LED, by vypadal takto
root@ATmega328p> nastavit výstup pin pb5 Nastavit pb5 pro výstupní kořen@ATmega328p> zapsat pin pb5 high Zapsat logiku vysoko na pin pb5 "Root@ATmega328p>" je výzva prostředí, která označuje, že je připravena přijímat příkazy od vás. Chcete -li vypnout LED, jednoduše byste na kolík zapsali nízkou úroveň. Pokud chcete číst digitální vstup z pinu, použijte příkaz read. Pomocí našeho výše uvedeného příkladu
root@ATmega328p> číst pin pb5Pin: pb5 je VYSOKÝ Alternativně stačí zopakovat registr pinů, který ovládá tento pinový port. Pokud například máme přepínače dip připojené k digitálnímu pinu 7 a 8 (PD7 a PD8), můžete odeslat příkaz
echo %PIND a shell by pak zobrazil obsah tohoto registru a ukázal vám všechny stavy vstupu/výstupu připojených zařízení a zda byl stav přepínače zapnutý nebo vypnutý.
Krok 3: Pojistky pro čtení a psaní
Pojistky jsou speciální typy registrů. Řídí vše od rychlosti hodin vašeho mikrokontroléru až po to, jaké metody programování jsou k dispozici pro ochranu paměti EEPROM proti zápisu. Někdy budete muset tato nastavení změnit, zvláště pokud vytváříte samostatný systém AVR. Nejsem si jistý, že byste měli změnit nastavení pojistky na Arduinu. Buďte opatrní s pojistkami; Pokud je nastavíte nesprávně, můžete se zablokovat. V předchozím pokynu jsem ukázal, jak můžete číst a nastavovat pojistky pomocí programátoru a avrdude. Zde vám ukážu, jak přečíst pojistky za běhu, abyste zjistili, jak je vaše MCU skutečně nastavilo. Všimněte si, že toto není nastavení času kompilace, které získáte z definic, ale skutečné pojistky, jak je MCU čte za běhu. Z tabulky 27-9 v datovém listu ATmega328P (datová kniha, více podobné) jsou bity Fuse Low Byte následující:
CKDIV8 CKOUT SUT1 SUT0 CKSEL3 CKSEL2 CKSEL1 CKSEL0Zajímavou věcí je, že u pojistek 0 znamená naprogramovaný a 1 znamená, že konkrétní bit není naprogramován. Trochu protiintuitivní, ale jakmile to víte, víte to.
- CKDIV8 nastaví dělení hodin vašeho procesoru na 8. ATmega328P pochází z továrny naprogramované tak, aby používalo svůj interní oscilátor na 8 MHz s naprogramovaným CKDIV8 (tj. Nastaveno na 0), čímž získáte konečnou frekvenci F_CPU nebo CPU 1 MHz. U Arduina se to změnilo, protože jsou nakonfigurovány tak, aby používaly externí oscilátor na 16 MHz.
- Když je CKOUT naprogramován, budou vaše hodiny CPU vystupovat na PB0, což je digitální pin 8 na Arduinos.
- SUT [1..0] určuje čas spuštění vašeho AVR.
- CKSEL [3..0] nastavuje zdroj hodin, jako je interní RC oscilátor, externí oscilátor atd.
Když si přečtete své pojistky, vrátí se vám v šestnáctkové soustavě. Toto je formát, který potřebujete, pokud chcete zapisovat pojistky pomocí avrdude. Na mém arduinu je to, co dostanu, když čtu spodní pojistkový bajt:
root@ATmega328p> přečtěte lfuseLower Fuse: 0xffVšechny bity jsou tedy nastaveny na 1. Udělal jsem stejný postup na klonu Arduino a získal stejnou hodnotu. Při kontrole jednoho z mých samostatných systémů AVR jsem dostal 0xDA, což je hodnota, kterou jsem nastavil před nějakou dobou při konfiguraci čipu. Stejný postup se používá pro kontrolu pojistek High Fuse Byte, Extended Fuse Byte a Lock. Byty kalibrace a pojistky podpisu byly v kódu deaktivovány pomocí direktivy preprocesoru #if 0, kterou můžete změnit, pokud se cítíte skoupě.
Krok 4: Další příkazy
Existuje několik dalších příkazů, které výchozí interpret příkazů chápe jako užitečné. Můžete zobrazit všechny implementované a budoucí příkazy vydáním nápovědy nebo nabídky na výzvu. Rychle je zde uvedu, protože jsou většinou samozřejmé. Nastavení frekvence hodin CPU Můžete zjistit, jaký byl váš firmware nakonfigurován pro použití jako nastavení hodin CPU pomocí příkazu fcpu:
root@ATmega328p> Frekvence fcpuCPU: 16000000To je 16 milionů nebo 16 milionů herzů, běžněji známých jako 16 MHz. To můžete kdykoli změnit z jakéhokoli důvodu pomocí příkazu hodin. Tento příkaz má jeden argument: předzesilovač, který se použije při dělení rychlosti hodin. Příkaz hodin rozumí těmto hodnotám předřazeného snímače:
- ckdiv2
- ckdiv4
- ckdiv8
- ckdiv16
- ckdiv32
- ckdiv64
- ckdiv128
- ckdiv256
Pomocí příkazu:
hodiny ckdiv2 když je vaše rychlost procesoru 16 MHz, vaše hodinová rychlost se změní na 8 MHz. Použití prescaleru ckdiv64 s počátečním taktem 16 MHz bude mít za následek konečný takt 250 KHz. Proč bys na Zemi chtěl zpomalit svůj MCU? Za prvé, nižší rychlost hodin spotřebovává méně energie a pokud máte v MCU vybitou baterii v projektové skříni, možná ji nebudete potřebovat k provozu na nejvyšší rychlost, a proto můžete snížit rychlost a snížit spotřebu energie, což zvyšuje životnost baterie. Také, pokud používáte hodiny pro jakýkoli druh problémů s časováním s jiným MCU, řekněme, implementací softwarového UART nebo něčeho podobného, možná budete chtít nastavit konkrétní hodnotu, se kterou snadno dosáhnete pěkné dokonce přenosové rychlosti s nižší chybovost. Zapnutí a vypnutí periferních podsystémů Na základě stejné poznámky jako o snížení spotřeby energie zmíněné výše můžete chtít dále snížit spotřebu vypnutím některých vestavěných periferií, které nepoužíváte. Tlumočník příkazů a shell mohou aktuálně zapínat a vypínat následující periferie:
- Analogově digitální převodník (ADC). Tato periferie se používá, pokud máte analogový snímač poskytující data (jako je teplota, světlo, zrychlení atd.) A potřebujete jej převést na digitální hodnotu.
- Sériové periferní rozhraní (SPI). Sběrnice SPI se používá ke komunikaci s dalšími zařízeními podporujícími SPI, jako jsou externí paměti, ovladače LED, externí ADC atd. Části SPI se používají pro programování ISP nebo alespoň kolíky, takže při vypínání buďte opatrní pokud programujete přes ISP.
- Dvouvodičové rozhraní. Některá externí zařízení používají ke komunikaci sběrnici I2C, i když jsou rychle nahrazována zařízeními s podporou SPI, protože SPI má větší propustnost.
- USART. Toto je vaše sériové rozhraní. Pokud jste k AVR připojeni přes sériové připojení, pravděpodobně to nechcete vypnout! Přidal jsem to sem jako kostru pro přenos na zařízení, která mají více USART jako ATmega162 nebo ATmega644P.
- Všechno. Tento argument příkazu powerup nebo powerdown zapne všechna uvedená periferie nebo je všechny vypne jedním příkazem. Znovu použijte tento příkaz moudře.
root@ATmega328p> powerdown twiPowerdown twi Complete.root@ATmega328p> powerup twiPowerup of twi Complete.
Spouštěcí a zastavovací časovače Shell má vestavěný 16bitový časovač, který je k dispozici k použití. Časovač spustíte příkazem časovače:
spuštění časovačea zastavte časovač argumentem stop
zastavení časovačeTento časovač nebude v rozporu s interním časovačem USART. Pokud vás tento druh krvavých detailů zajímá, podívejte se na kód pro podrobnosti implementace časovače USART
root@ATmega328p> spuštění časovače Spuštěno timer.root@ATmega328p> stop časovače Uplynulý čas: ~ 157 sekund Ověření Shell může do EEPROM uložit 8místné heslo. Tento mechanismus hesel byl vytvořen pro podporu možností přihlášení k telnetu, ale mohl být rozšířen tak, aby chránil další věci. Prostřednictvím mechanizmu ověřování můžete například vyžadovat určité příkazy, například změnu hodnot registru. Nastavte heslo pomocí příkazu heslo
root@ATmega328p> passwd blah Napište heslo root do EEPROMAutorizujte proti heslu (nebo vyžadujte autorizaci programově prostřednictvím kódu) pomocí příkazu auth. Pamatujte, že pokud se pokusíte změnit heslo uživatele root a již je nastaveno heslo uživatele root, musíte se autorizovat proti starému heslu, než jej budete moci změnit na nové heslo.
root@ATmega328p> passwd blinky Nejprve se musíte autorizovat.root@ATmega328p> auth blahAuthorized.root@ATmega328p> passwd blinky Napište NOVÉ heslo root do EEPROMSamozřejmě budete muset načíst soubor avrsh.eep, pokud vymažete firmware, aby se obnovily vaše staré hodnoty a proměnné. Soubor Makefile pro vás vytvoří soubor EEPROM. Proměnné Shell rozumí pojmu uživatelem definovaných proměnných. Kód to omezuje na 20, ale můžete to změnit, pokud chcete, změnou definování MAX_VARIABLES v script.h. Můžete uložit libovolnou 16bitovou hodnotu (tj. Libovolné číslo až 65, 536) do proměnné, kterou chcete později vyvolat. Syntaxe je podobná registrům, kromě označení dolaru ($) se používá k označení proměnných prostředí. Seznam všech vašich proměnných pomocí příkazu print variables
tisk proměnných Uživatelem definované proměnné: Název indexu -> Hodnota (01): $ ZDARMA $ -> 0 (02): $ ZDARMA $ -> 0 (03): $ ZDARMA $ -> 0 (04): $ ZDARMA $ -> 0 (05): $ ZDARMA $ -> 0 (06): $ ZDARMA $ -> 0 (07): $ ZDARMA $ -> 0 (08): $ ZDARMA $ -> 0 (09): $ ZDARMA $ -> 0 (10): $ ZDARMA $ -> 0 (11): $ ZDARMA $ -> 0 (12): $ ZDARMA $ -> 0 (13): $ ZDARMA $ -> 0 (14): $ ZDARMA $ -> 0 (15): $ ZDARMA $ -> 0 (16): $ ZDARMA $ -> 0 (17): $ ZDARMA $ -> 0 (18): $ ZDARMA $ -> 0 (19): $ ZDARMA $ -> 0 (20): $ ZDARMA $ -> 0 Dokončeno. Nastavit proměnnou
$ newvar = 25 $ časový limit = 23245Získejte hodnotu dané proměnné
root@ATmega328p> echo $ newvar $ newvar 25Můžete vidět, jaké všechny proměnné, které jste aktuálně vytvořili, pomocí příkazu print, který již znáte
Uživatelem definované proměnné: Název indexu -> Hodnota (01): newvar -> 25 (02): časový limit -> 23245 (03): $ ZDARMA $ -> 0 (04): $ ZDARMA $ -> 0 (05): $ ZDARMA $ -> 0 (06): $ ZDARMA $ -> 0 (07): $ ZDARMA $ -> 0 (08): $ ZDARMA $ -> 0 (09): $ ZDARMA $ -> 0 (10): $ ZDARMA $ -> 0 (11): $ ZDARMA $ -> 0 (12): $ ZDARMA $ -> 0 (13): $ ZDARMA $ -> 0 (14): $ ZDARMA $ -> 0 (15): $ ZDARMA $ -> 0 (16): $ ZDARMA $ -> 0 (17): $ ZDARMA $ -> 0 (18): $ ZDARMA $ -> 0 (19): $ ZDARMA $ -> 0 (20): $ ZDARMA $ -> 0 Dokončeno. Název $ FREE $ pouze naznačuje, že umístění proměnné je bezplatné a dosud mu nebyl přiřazen název proměnné.
Krok 5: Přizpůsobení prostředí
Pokud chcete, můžete hackovat kód a přizpůsobit si ho svým vlastním potřebám. Kdybych věděl, že tento kód uvolním, vytvořil bych samostatnou třídu překladače příkazů a strukturu příkazů a jednoduše bych iteroval prostřednictvím volání ukazatele funkce. Snížilo by to množství kódu, ale jak to stojí, shell analyzuje příkazový řádek a volá příslušnou metodu shellu. Chcete -li přidat vlastní příkazy, proveďte následující: 1. Přidejte svůj příkaz do seznamu analýzy Analyzátor příkazů provede analyzujte příkazový řádek a zadejte příkaz a všechny argumenty samostatně. Argumenty jsou předávány jako ukazatele na ukazatele nebo pole ukazatelů, jakkoli s nimi chcete pracovat. To se nachází v shell.cpp. Otevřete shell.cpp a najděte metodu ExecCmd třídy AVRShell. Možná budete chtít přidat příkaz do paměti programu. Pokud tak učiníte, přidejte příkaz do progmem.h a progmem.cpp. Příkaz můžete přidat do programové paměti přímo pomocí makra PSTR (), ale vygenerujete další varování výše uvedeného typu. Opět se jedná o známou chybu, která pracuje s C ++, ale můžete to obejít přidáním příkazu přímo do souborů progmem.*, Jak jsem to udělal. Pokud vám nevadí přidání do vašeho použití SRAM, můžete přidat příkaz, jak jsem ilustroval pomocí příkazu „hodiny“. Řekněme, že chcete přidat nový příkaz s názvem „newcmd“. Přejděte na AVRShell:: ExecCmd a najděte vhodné místo pro vložení následujícího kódu:
else if (! strcmp (c, "newcmd")) cmdNewCmd (args);Tím se přidá váš příkaz a zavolá metoda cmdNewCmd, kterou napíšete v dalším kroku. 2. Napište vlastní kód příkazu Do stejného souboru přidejte kód vlastního příkazu. Toto je definice metody. Stále budete chtít přidat deklaraci do shellu.h. Stačí jej připojit k ostatním příkazům. V předchozím příkladu může kód vypadat nějak takto
voidAVRShell:: cmdNewCmd (char ** args) {sprintf_P (buff, PSTR ("Váš příkaz je %s / r / n", args [0]); WriteRAM (buff);}Tady je několik věcí. Za prvé, „buff“je vyrovnávací paměť pole se 40 znaky poskytovaná v kódu pro vaše použití. Používáme verzi paměti sprintf s programovou pamětí, protože jí předáváme PSTR. Pokud chcete, můžete použít běžnou verzi, ale ujistěte se, že nepředáte formát v PSTR. Argumenty jsou také v poli args. Pokud jste zadali „newcmd arg1 arg2“, můžete tyto argumenty získat pomocí předplatného args [0] a args [1]. Můžete předat maximálně MAX_ARGS argumentů, jak jsou definovány v kódu. Pokud potřebujete znovu předat více argumentů najednou, můžete tuto hodnotu při překompilování změnit. WriteLine a WriteRAM jsou globální funkce, které vrací stejnojmenné metody UART. Druhý argument této funkce je implicitní. Pokud nic nepředáte, bude poté napsán příkazový řádek. Pokud jako 2. argument zadáte 0, výzva nebude napsána. To je užitečné, pokud chcete zapsat několik samostatných řetězců na výstup, než se uživateli vrátí příkazový řádek. 3. Nechte shell spustit příkazový kód Už jste řekli shell exekutorovi, aby provedl metodu cmdNewCmd při nastavování nového příkazu, ale přidejte jej do souboru shell.h, aby byl pochopen objektem shell. Stačí jej přidat pod poslední příkaz nebo před první příkaz nebo kdekoli jinde. A je to. Znovu zkompilujte a nahrajte firmware do svého Arduina a váš nový příkaz je k dispozici z shellu na výzvu.
Krok 6: Shrnutí
Měli byste vědět, jak nainstalovat a připojit se k vašemu AVR/Arduino a získat živou výzvu na běžícím mikrokontroléru. Znáte několik příkazů, které budou za běhu načítat běhové údaje z MCU nebo nastavovat hodnoty do MCU. Také vám bylo ukázáno, jak přidat svůj vlastní vlastní kód pro vytvoření vlastních jedinečných příkazů do shellu a dále jej přizpůsobit pro své vlastní potřeby. Můžete dokonce vykuchat překladač příkazů tak, aby obsahoval pouze vaše vlastní příkazy, pokud to vyhovuje vašim potřebám. Doufám, že se vám tento instruktáž líbil a že prostředí AVR Shell může být pro vás užitečné, ať už jako interpret příkazů v reálném čase nebo jako učební proces při implementaci vlastního. Jako vždy se těším na jakékoli komentáře nebo návrhy, jak lze tento instruktáž vylepšit! Bavte se s AVR!
Doporučuje:
Jak zapnout/vypnout Wifi pomocí příkazového řádku !!: 4 kroky
Jak zapnout/vypnout Wifi pomocí příkazového řádku !!: Tento Instructable vám ukáže, jak zapnout nebo vypnout wifi na vašem počítači pomocí příkazového řádku Přihlaste se k odběru mého kanálu Děkuji
Vytvořte virtuální síť Wifi pomocí příkazového řádku v systému Windows 10: 10 kroků
Vytvořte virtuální síť Wifi pomocí příkazového řádku v systému Windows 10: Ukážu vám, jak vytváření virtuální sítě WiFi funguje na počítačích se systémem Windows 10. Ukážu několik kroků, jak postupovat, a také vysvětlím, zda váš počítač tuto funkci podporuje nebo ne
Použití příkazového modulu IRobot Create v systému Linux: 4 kroky
Použití příkazového modulu IRobot Create v systému Linux: Protože iRobot neposkytl uživatelům Linuxu způsob, jak používat příkazový modul, musel jsem na to přijít sám. Nebojte se, není to vůbec těžké. Vše, co musíte udělat, je spustit několik skriptů. Začněme, ano?
Matice příkazového řádku ČÍSLA: 5 kroků
Matrix příkazového řádku ČÍSLA: Můj poslední Instructable s Matrixem byl pouze s písmeny, ale toto je dávkový soubor, který používá čísla a vypadá realističtěji. Skutečná matice používala japonská písmena a další symboly, ale tato používá pouze čísla v různých řádcích
Snadné vytvoření okna příkazového řádku .: 3 kroky
Vytvořte okno příkazového řádku snadným způsobem: Vím, že se to již dříve dělo, ale moje verze je trochu odlišná. Dobře, takže chcete vyzkoušet pár skvělých triků příkazového řádku, ale zdá se, že nemůžete zjistit, jak vlastně otevřete příkazový řádek. (To by byl případ většiny škol nebo