Kazalo:

AVRSH: lupina ukaznega tolmača za Arduino/AVR .: 6 korakov (s slikami)
AVRSH: lupina ukaznega tolmača za Arduino/AVR .: 6 korakov (s slikami)

Video: AVRSH: lupina ukaznega tolmača za Arduino/AVR .: 6 korakov (s slikami)

Video: AVRSH: lupina ukaznega tolmača za Arduino/AVR .: 6 korakov (s slikami)
Video: How to Install Windows Subsystem for Linux in Windows 11 2024, Julij
Anonim
AVRSH: lupina ukaznega tolmača za Arduino/AVR
AVRSH: lupina ukaznega tolmača za Arduino/AVR

Ste kdaj želeli biti "prijavljeni" v svoj mikrokrmilnik AVR? Ste kdaj pomislili, da bi bilo kul, če bi si »ogledali« register, da bi videli njegovo vsebino? Ste si vedno želeli način za vklop in izklop posameznih perifernih podsistemov vašega AVR ali Arduino v * realnem času *? Tudi jaz, zato sem napisal lupino AVR, lupino, podobno UNIX-u. Je podoben UNIX-u, ker spominja na račun lupine, ki ste ga odšli ven in kupili za zagon svojih robotov irc nick collision, poleg tega pa ima skupni ukaz ali dva. Prav tako ima datotečni sistem, ki je podoben UNIX extfs z uporabo zunanjega EEPROM-a, vendar je to postal projekt zase, zato bom ta modul izdal ločeno pod drugim navodilom, ko bo pripravljen za proizvodnjo. Tu je seznam stvari, ki jih trenutno lahko počnete z lupino AVR:

  • V realnem času preberite vse svoje registre smeri podatkov (DDRn), vrata in zatiče
  • Pišite na vse svoje DDRn, vrata in zatiče, da v realnem času vklopite motorje, LED-diode ali senzorje za branje
  • Navedite vse znane registre v sistemu
  • Ustvarite in shranite vrednosti v spremenljivke, ki jih določi uporabnik, za katere je varnostno kopiran EEPROM.
  • Ustvarite korensko geslo in se z njim overite (uporablja se za dostop do telneta)
  • Preberite nastavljeno hitrost procesorja
  • Hitrost procesorja spremenite tako, da nastavite predznak
  • Zaženite in ustavite 16-bitne merilnike časa za merjenje različnih stvari
  • Vklop in/ali izklop perifernih podsistemov: analogno-digitalni pretvorniki (ADC), zaporedni periferni vmesnik (SPI), dvožični vmesnik (TWI/I2C), UART/USART. Uporabno, če želite zmanjšati porabo energije mikrokrmilnika ali omogočiti določene funkcije.
  • Napisano v C ++ s predmeti za večkratno uporabo.

Ta navodila bodo predstavila namestitev, uporabo in prilagajanje avrsh.

Korak: Kaj boste potrebovali

Kaj boste potrebovali
Kaj boste potrebovali

Ta navodila ne zahtevajo veliko, razen da:

  • Imejte Arduino ali ATmega328P. Drugi AVR -ji bi lahko delovali, vendar boste morda morali spremeniti kodo, če želite navesti vse registre, ki so edinstveni za vaš MCU. Imena se morajo ujemati le s tistimi, ki so navedena v datoteki glave, ki je edinstvena za vaš MCU. Številna imena registrov so med AVR -ji enaka, zato se lahko vaša kilometrina pri prenosu razlikuje.
  • Imejte način, da se povežete s serijskim USART -jem vašega Arduina/AVR -ja. Sistem je bil najbolj obsežno preizkušen z AVR Terminal, aplikacijo za Windows, ki vzpostavlja serijsko povezavo prek vrat USB ali COM. Deluje z Arduinosom prek povezave USB in katerim koli AVR-jem, ki uporablja USB-BUB z Moderndevice.com. Druge možnosti terminala vključujejo: Putty, minicom (Linux in FreeBSD), zaslon (Linux/FreeBSD), Hyperterminal, Teraterm. Ugotovil sem, da sta kit in teraterm pri povezovanju poslala nekaj smeti, zato je lahko vaš prvi ukaz popačen.
  • Namestite in zaženite vdelano programsko opremo AVR Shell, ki jo lahko prenesete s teh strani, ali vedno dobite najnovejšo različico na BattleDroids.net.

Če želite namestiti terminal AVR, ga samo razpakirajte in zaženite. Če želite namestiti vdelano programsko opremo AVR Shell, jo prenesite in neposredno naložite šestnajstiško datoteko ter povežite svoj serijski terminal s hitrostjo 9600 baud ali pa jo sami sestavite z "make" in nato "make program" za nalaganje hex. Upoštevajte, da boste morda morali spremeniti nastavitve AVRDUDE, da odražajo vaša vrata COM. Opomba: Atribut PROGMEM je v trenutni izvedbi AVR GCC za C ++ zlomljen in to je znana napaka. Če ga sestavite, pričakujte, da boste prejeli veliko opozorilnih sporočil z napisom "opozorilo: samo inicializirane spremenljivke je mogoče vstaviti v pomnilnik programa". Poleg tega, da je to opozorilo nadležno, je neškodljivo. Ker C ++ na vdelani platformi ni visoko na seznamu prioritet AVR GCC, ni znano, kdaj bo to popravljeno. Če preverite kodo, boste videli, kje sem se potrudil, da bi to opozorilo zmanjšal z implementacijo lastnih stavkov atributov. Precej preprosto. Prenesite in namestite vse, kar boste morda potrebovali, nato obrnite stran in začnimo.

2. korak: Branje in pisanje registrov

Branje in pisanje registrov
Branje in pisanje registrov

Lupina AVR je bila napisana predvsem za dostop do nekaterih senzorjev, ki sem jih priključil na svoj AVR. Začelo se je s preprosto LED, nato se je premaknilo na svetlobne senzorje, temperaturne senzorje in na koncu na dva ultrazvočna pretvornika. avrsh lahko nastavi digitalne komponente teh senzorjev tako, da zapiše v registre, ki jih upravljajo. Upravljanje registrov AVR med izvajanjem Če želite dobiti seznam vseh znanih registrov na vašem Arduinu, vnesite:

tiskarski registri in dobili boste tako izpis

Poznam naslednje registre:

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 UPS TWC UPS TWR Če želite videti, kako so posamezni biti nastavljeni v katerem koli registru, uporabite ukaz cat ali echo

mačka %GPIOR0 Tukaj zahtevam od tolmača ukazov, naj prikaže ali odmeva vsebino V/I registra za splošno uporabo #0. Upoštevajte znak odstotka (%) pred imenom registra. To morate označiti lupini, da je to rezervirana ključna beseda, ki identificira register. Tipičen izhod ukaza echo izgleda tako

GPIOR0 (0x0) nastavljeno na [00000000] Izhod prikazuje ime registra, šestnajstiško vrednost, ki jo najdemo v registru, in binarno predstavitev registra (prikazuje vsak bit kot 1 ali 0). Če želite nastaviti določen bit v katerem koli registru, uporabite operator "index of" . Na primer, recimo, da želim 3. bit na 1

%GPIOR0 [3] = 1 in lupina vam bo dala odgovor, ki označuje dejanje in rezultat

GPIOR0 (0x0) nastavljeno na [00000000] (0x8) nastavljeno na [00001000] Ne pozabite na znak odstotka, da lupini sporočite, da delate z registrom. Upoštevajte tudi, da je z nastavitvijo 3. bita to 4 bitov, ker naši AVR uporabljajo indeks, ki temelji na ničelni vrednosti. Z drugimi besedami, štetje do 3. bita šteje 0, 1, 2, 3, kar je 4. mesto, vendar 3. bit. Na enak način lahko malo počistite tako, da nastavite bit na nič. S takšnimi nastavitvami lahko spreminjate delovanje AVR -ja med letom. Na primer s spreminjanjem vrednosti ujemanja časovnika CTC v OCR1A. Prav tako vam omogoča, da pokukate v posebne nastavitve, ki bi jih morali programsko preveriti v kodi, na primer vrednost UBBR za vašo hitrost prenosa. Delo z DDRn, PORTn in PINn Vhodno/izhodni zatiči so prav tako dodeljeni registrom in jih je mogoče nastaviti na popolnoma enak način, vendar je za delo s temi vrstami registrov ustvarjena posebna skladnja. V kodi obstaja običajen postopek za, recimo, vklop LED ali druge naprave, ki zahteva digitalno visoko ali nizko vrednost. Zahteva nastavitev registra smeri podatkov, ki označuje, da je pin za izhod, nato pa vpisati 1 ali 0 v določen bit v ustrezna vrata. Ob predpostavki, da imamo LED priključeno na digitalni zatič 13 (PB5) in ga želimo vklopiti, to storite tako, ko deluje vaš AVR

nastavite pin pb5 outputwrite pin pb5 visoko Poleg tega, da bi lahko videl, kako se LED prižge, bi izgledal tako

root@ATmega328p> nastavi pin pb5 output Set pb5 for outputroot@ATmega328p> write pin pb5 high Napisal logiko visoko na pin pb5 "Root@ATmega328p>" je poziv lupine, ki označuje, da je pripravljena sprejeti ukaze od vas. Če želite izklopiti LED, preprosto zapišite nizko vrednost na pin. Če želite digitalni vhod prebrati z zatiča, uporabite ukaz za branje. Z uporabo našega zgornjega primera

root@ATmega328p> preberi pin pb5Pin: pb5 je VISAK Druga možnost je, da samo odmevate register pin, ki nadzoruje ta pin vrata. Na primer, če imamo dip stikala povezana z digitalnim zatičem 7 in 8 (PD7 in PD8), lahko pošljete ukaz

odmev %PIND in lupina bi nato prikazala vsebino tega registra, ki bi vam pokazala vsa vhodno/izhodna stanja povezanih naprav in ali je stanje stikala vklopljeno ali izklopljeno.

3. korak: Varovalke za branje in pisanje

Varovalke za branje in pisanje
Varovalke za branje in pisanje

Varovalke so posebne vrste registrov. Nadzirajo vse, od takta vašega mikrokrmilnika do načinov programiranja, ki so na voljo za zaščito pred zapisovanjem EEPROM. Včasih boste morali te nastavitve spremeniti, še posebej, če ustvarjate samostojen sistem AVR. Nisem prepričan, da bi morali spremeniti nastavitve varovalk na Arduinu. Bodite previdni pri varovalkah; lahko se zaklenete, če ste jih nastavili napačno. V prejšnjem navodilu sem pokazal, kako lahko preberete in nastavite varovalke s pomočjo programatorja in avrdude. Tukaj vam bom pokazal, kako med vadbo preberete nazaj svoje varovalke, da vidite, kako jih je vaš MCU dejansko nastavil. Upoštevajte, da to ni nastavitev časa prevajanja, ki jo dobite iz definicij, ampak dejanske varovalke, ko jih MCU bere med izvajanjem. Iz tabele 27-9 v podatkovnem listu ATmega328P (podatkovna knjiga, podobnejša) so bitni nizki bajt varovalk naslednji:

CKDIV8 CKOUT SUT1 SUT0 CKSEL3 CKSEL2 CKSEL1 CKSEL0Zanimivo je, da pri varovalkah 0 pomeni programirano, 1 pa, da ta določeni bit ni programiran. Nekoliko kontra-intuitivno, a ko to veste, veste.

  • CKDIV8 nastavi vašo procesorsko uro, deljeno z 8. ATmega328P prihaja iz tovarne, programirane za uporabo svojega notranjega oscilatorja pri 8MHz s programiranim CKDIV8 (tj. Nastavljeno na 0), kar vam daje končno frekvenco F_CPU ali CPU 1MHz. Pri Arduinu se to spremeni, saj so konfigurirani za uporabo zunanjega oscilatorja pri 16 MHz.
  • CKOUT, ko je programiran, bo prikazal vašo uro procesorja na PB0, ki je digitalni pin 8 na Arduinosu.
  • SUT [1..0] določa čas zagona vašega AVR.
  • CKSEL [3..0] nastavi vir ure, na primer notranji RC oscilator, zunanji oscilator itd.

Ko preberete varovalke, vam bodo vrnjene v šestnajstiški številki. To je oblika, ki jo potrebujete, če želite varovalke zapisati prek avrdude. Na mojem arduinu dobim, ko preberem spodnji bajt varovalke:

root@ATmega328p> preberi lfuse Spodnja varovalka: 0xffTorej so vsi biti nastavljeni na 1. Naredil sem enak postopek na klonu Arduino in dobil enako vrednost. Pri preverjanju enega od samostojnih sistemov AVR sem dobil 0xDA, kar je vrednost, ki sem jo nastavil že nekaj časa nazaj pri konfiguraciji čipa. Bajti za umerjanje in podpis varovalk so bili v kodi onemogočeni s predprocesorsko direktivo #if 0, ki jo lahko spremenite, če se počutite slabo.

4. korak: Drugi ukazi

Druge ukaze
Druge ukaze

Obstaja več drugih ukazov, za katere privzeti razlagalec ukazov razume, da so vam lahko koristni. Vse izvedene ukaze in ukaze za prihodnjo izdajo si lahko ogledate tako, da izdate pomoč ali meni ob pozivu. Tukaj jih bom hitro pokril, saj so večinoma samoumevne. Nastavitve frekvence ure CPE -ja Z ukazom fcpu lahko ugotovite, kaj je vaša vdelana programska oprema konfigurirana za uporabo kot nastavitve ure CPE -ja:

root@ATmega328p> fcpu CPU Freq: 16000000To je 16 milijonov ali 16 milijonov hercev, bolj znanih kot 16 MHz. To lahko iz kakršnega koli razloga spremenite na hitro z ukazom ura. Ta ukaz ima en argument: predkaler, ki ga je treba uporabiti pri deljenju takta ure. Ukaz ure razume te vrednosti predkalerja:

  • ckdiv2
  • ckdiv4
  • ckdiv8
  • ckdiv16
  • ckdiv32
  • ckdiv64
  • ckdiv128
  • ckdiv256

Z uporabo ukaza:

ura ckdiv2 če je vaša hitrost procesorja 16MHz, bi se vaša ura spremenila v 8MHz. Uporaba prednapenjalnika ckdiv64 z začetno taktno frekvenco 16 MHz bo povzročila končno taktno frekvenco 250 KHz. Zakaj bi na Zemlji želeli upočasniti svoj MCU? No, na primer, nižja taktna hitrost porabi manj energije in če ima vaš MCU izpraznjen akumulator v ohišju projekta, ga morda ne boste potrebovali za največjo hitrost, zato bi lahko zmanjšali hitrost in zmanjšali porabo energije, podaljšuje življenjsko dobo baterije. Če tudi uporabljate uro za kakršne koli težave s časom pri drugem MCU, recimo pri izvajanju programske opreme UART ali kaj podobnega, jo boste morda želeli nastaviti na določeno vrednost, s katero je enostavno doseči lepo enakomerno hitrost prenosa. nižje stopnje napak. Vklop in izklop perifernih podsistemov Kot že omenjeno zmanjšanje porabe energije, boste morda želeli še dodatno zmanjšati moč, tako da izklopite nekatere zunanje naprave, ki jih ne uporabljate. Tolmač in lupina ukazov lahko trenutno vklopi in izklopi naslednje zunanje naprave:

  • Analogno-digitalni pretvornik (ADC). Ta zunanja naprava se uporablja, če imate analogni senzor, ki zagotavlja podatke (na primer temperaturo, svetlobo, pospešek itd.) In ga morate pretvoriti v digitalno vrednost.
  • Serijski periferni vmesnik (SPI). Vodilo SPI se uporablja za komunikacijo z drugimi napravami, ki podpirajo SPI, na primer z zunanjimi pomnilniki, gonilniki LED, zunanjimi ADC-ji itd. Deli SPI se uporabljajo za programiranje ponudnika internetnih storitev ali vsaj zatiči, zato bodite previdni, ko to izklopite če programirate prek ponudnika internetnih storitev.
  • Dvožični vmesnik. Nekatere zunanje naprave za komunikacijo uporabljajo vodilo I2C, čeprav se te hitro zamenjajo z napravami, ki podpirajo SPI, saj ima SPI večjo prepustnost.
  • USART. To je vaš serijski vmesnik. Tega verjetno ne želite izklopiti, če ste na AVR povezani prek serijske povezave! Vendar sem to dodal tukaj kot okostje za prenos na naprave, ki imajo več USART -jev, kot sta ATmega162 ali ATmega644P.
  • vse. Ta argument ukaza za vklop ali izklop vklopi vse omenjene zunanje naprave ali jih izklopi z enim ukazom. Še enkrat, pametno uporabite ta ukaz.

root@ATmega328p> poweri twiPowerdown twi complete.root@ATmega328p> powerup twiPowerup twi je dokončan.

Zagon in ustavitev merilnikov časa Lupina ima vgrajen 16-bitni časovnik, ki je na voljo za uporabo. Časovnik zaženete z ukazom časovnika:

časovni zagonin ustavite časovnik z argumentom stop

časovna ustavitevTa časovnik ne bo v sporu z notranjim časovnikom USART. Za podrobnosti o izvajanju časovnika USART si oglejte kodo, če vas zanimajo takšne krvave podrobnosti

root@ATmega328p> timer startStarted timer.root@ATmega328p> timer stop Pretekel čas: ~ 157 sekund Preverjanje pristnosti Lupina lahko shrani 8-mestno geslo v EEPROM. Ta mehanizem gesla je bil ustvarjen za podporo zmožnosti prijave na telnet, vendar ga je mogoče razširiti za zaščito drugih stvari. Na primer, z mehanizmom preverjanja pristnosti lahko zahtevate določene ukaze, na primer spreminjanje vrednosti registra.

root@ATmega328p> passwd blah Napisal je geslo za root v EEPROMAvtorizirajte proti geslu (ali zahtevajte programsko pooblastilo prek kode) z ukazom auth. Upoštevajte: če poskušate spremeniti korensko geslo in je že nastavljeno geslo, se morate pooblastiti za uporabo starega gesla, preden ga lahko spremenite v novo geslo

root@ATmega328p> passwd blinky Najprej se morate pooblastiti.root@ATmega328p> auth blahAuthorized.root@ATmega328p> passwd blinkyNapisali ste novo geslo za root v EEPROMSeveda boste morali naložiti datoteko avrsh.eep, če izbrišete vdelano programsko opremo, da obnovite stare vrednosti in spremenljivke. Makefile bo za vas ustvaril datoteko EEPROM. Spremenljivke Lupina razume pojem uporabniško določenih spremenljivk. Koda to omejuje na 20, vendar jo lahko po želji spremenite tako, da spremenite definicijo MAX_VARIABLES v script.h. Vsako 16-bitno vrednost (to je poljubno število do 65, 536) lahko shranite v spremenljivko, ki jo boste pozneje priklicali. Sintaksa je podobna registrom, le znak dolarja ($) se uporablja za označevanje spremenljivk v lupini. Seznam vseh spremenljivk z ukazom print variables

tiskanje spremenljivk Spremenljivke, ki jih določi uporabnik: Ime indeksa -> Vrednost (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. Nastavite spremenljivko

$ newvar = 25 $ timeout = 23245Pridobite vrednost dane spremenljivke

root@ATmega328p> echo $ newvar $ newvar 25Ogledate si lahko, katere vse spremenljivke, ki ste jih trenutno ustvarili z ukazom print, že poznate

Uporabniško določene spremenljivke: Ime indeksa -> Vrednost (01): newvar -> 25 (02): časovna omejitev -> 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): $ BREZPLAČNO $ -> 0Dokončano. Ime $ FREE $ samo označuje, da je ta spremenljivka brezplačna in ji še ni dodeljeno ime spremenljivke.

5. korak: prilagajanje lupine

Prilagajanje lupine
Prilagajanje lupine

Kodo lahko vdrete in jo po želji prilagodite svojim potrebam. Če bi vedel, da bom izdal to kodo, bi naredil ločen razred tolmača ukazov in ukazovalno strukturo ter preprosto ponovil ta klic na kazalec funkcije. To bi zmanjšalo količino kode, vendar lupina, kot stoji, razčleni ukazno vrstico in pokliče ustrezno metodo lupine. Če želite dodati svoje ukaze po meri, naredite naslednje: 1. Dodajte ukaz na seznam razčlenjevanja Razčlenjevalnik ukazov bo razčlenite ukazno vrstico in ločeno podajte ukaz in morebitne argumente. Argumenti se posredujejo kot kazalci na kazalce ali niz kazalcev, pa vendar z njimi radi delate. To najdemo v shell.cpp. Odprite shell.cpp in poiščite metodo ExecCmd razreda AVRShell. Ukaz lahko dodate v pomnilnik programa. Če želite, dodajte ukaz v progmem.h in progmem.cpp. Ukaz lahko dodate v pomnilnik programa neposredno z makrom PSTR (), vendar boste ustvarili drugo opozorilo prej omenjene vrste. Še enkrat, to je znana napaka, ki deluje s C ++, vendar se tega lahko izognete tako, da dodate ukaz neposredno v datoteke progmem.*, Kot sem storil jaz. Če vas moti dodajanje k uporabi SRAM -a, lahko dodate ukaz, kot sem ponazoril z ukazom "ura". Recimo, da želite dodati nov ukaz, imenovan "newcmd." Pojdite na AVRShell:: ExecCmd in poiščite priročno mesto za vstavljanje naslednje kode:

else if (! strcmp (c, "newcmd")) cmdNewCmd (args);S tem boste dodali vaš ukaz in poklicali metodo cmdNewCmd, ki jo boste zapisali v naslednjem koraku. 2. Napišite kodo ukaza po meri V isto datoteko dodajte kodo ukaza po meri. To je opredelitev metode. Deklaracijo boste še vedno želeli dodati v shell.h. Samo dodajte ga drugim ukazom. V prejšnjem primeru bi lahko koda izgledala nekako tako

voidAVRShell:: cmdNewCmd (char ** args) {sprintf_P (buff, PSTR ("Vaš ukaz je %s / r / n", args [0]); WriteRAM (buff);}Tukaj je več stvari. Prvič, "buff" je 40-mestni vmesni pomnilnik, ki je naveden v kodi za vašo uporabo. Različico pomnilnika programa sprintf uporabljamo, ker ji posredujemo PSTR. Če želite, lahko uporabite običajno različico, vendar pazite, da ne prenesete oblike v PSTR. Argumenti so tudi v matriki args. Če ste vnesli "newcmd arg1 arg2", lahko do teh argumentov pridete s podnapisi args [0] in args [1]. Posredite lahko največ MAX_ARGS argumentov, kot je opredeljeno v kodi. To vrednost lahko spremenite pri ponovnem prevajanju, če potrebujete več argumentov hkrati. WriteLine in WriteRAM sta globalni funkciji, ki vračata istoimenski metodi UART. Drugi argument te funkcije je impliciten. Če nič ne posredujete, bo nato napisan ukazni poziv. Če podate 0 kot drugi argument, poziv ne bo napisan. To je uporabno, če želite zapisati več ločenih nizov, preden se ukazni poziv vrne uporabniku. 3. Pustite, da lupina izvede ukazno kodo. Izvajalcu lupine ste že povedali, naj pri nastavitvi novega ukaza izvede metodo cmdNewCmd, vendar jo dodajte v datoteko shell.h, da jo objekt lupine razume. Samo dodajte ga pod zadnjim ukazom ali pred prvim ukazom ali kjerkoli tam. In to je to. Ponovno sestavite in naložite vdelano programsko opremo v svoj Arduino in vaš novi ukaz je na voljo v lupini.

6. korak: Povzetek

Vedeti morate, kako namestiti AVR/Arduino in se z njim povezati, ter prejeti poziv v živo na delujočem mikrokrmilniku. Poznate več ukazov, ki bodo podatke o času izvajanja iz MCU -ja potegnili ali pa jih v MCU -ju nastavljali vrednosti. Pokazalo se vam je tudi, kako dodate lastno kodo po meri, da ustvarite svoje edinstvene ukaze v lupini, da jo dodatno prilagodite svojim potrebam. Ukazni tolmač lahko celo razrežete tako, da vsebuje samo vaše ukaze po meri, če to ustreza vašim potrebam. Upam, da ste uživali v tem navodilu in da vam bo lupina AVR lahko koristila bodisi kot tolmač ukazov v realnem času ali kot učni proces pri izvajanju lastnega. Vedno se veselim kakršnih koli pripomb ali predlogov, kako bi lahko to navodilo izboljšali! Zabavajte se z AVR -jem!

Priporočena: