Liikkuminen Mekrisp-Stellaris ja Embello

author
10 minutes, 27 seconds Read

viimeisessä jaksossa, kannatin hieman mikrokontrollereille, jotka olivat edelleen elinkelpoinen kehitysfoorumi, ei pelkästään teollisuudelle, jossa se on normaalisti nähnyt näinä päivinä, mutta myös hakkereille . Ehkä jopa huijata sinua saamaan pari halpaa laitteistoa. Tällä kertaa aiomme saada Forth Järjestelmä, joka on perustettu kyseiselle laitteistolle ja suorita pakollinen “Hello World” ja LED Blinky. Mutta sitten päätämme myös yhdeksi ominaisuuksista, jotka tekevät erittäin siistiä mikrokontrollereista: helppo monitoimi.

Työskennellä!

Laitteisto

Mekrisp-Stellaris-suojaa runsaasti käsivarren mikrokontrollereita, mutta keskitymme tänne STM32F103-pelimerkkiin, jotka ovat saatavilla poikkeuksellisen vähän rahaa geneerisen kopion muodossa Maple Ministä, jota usein kutsutaan “STM32F103 vähimmäislevylle “Tai” Sininen pilleri “, koska muodon tekijä ja se, että siellä käytetään punaisia ​​myyntiin. Mikrokontrolleri aluksella voi toimia 72 MHz: ssä, sillä on 20 kt RAM-muistia ja joko 64 tai 128 kt salamaa. Se on runsaasti nastat, digitaaliset vain ne ovat 5 V suvaitsevaisia, ja siinä on kaikki normaalit mikrokontrollerin oheislaitteet. Se ei ole tehokkain tehokas, eikä sillä ole kelluvaa pisteyksikköä tai DAC: tä, mutta se on karu vanha muotoilu, joka on saatavilla paljon vähemmän rahaa kuin sen on oltava.

Ohjelmoija liitetty, virta USB: n päällä
Samankaltaiset ihmeet massatuotantotyöt ohjelmoijalle, jonka sinun on aluksi vilkkua siru. Mikä tahansa ST-Link V2: n kloonit toimivat hienosti. (Ironically enough, the hardware inside the programmer is nearly identical to the target.) Finally, considering that Forth runs as in interactive shell, you’re going to need a serial connection to the STM32 board. Tämä todennäköisesti ilmaisee USB / Sarja-sovittimen.

Tämä koko asennus ei maksa paljon paljon enemmän kuin pikaruokaravintola, ja ohjelmoija ja USB / Sarja-sovitin ovat asioita, jotka haluat olla pakkauksessa joka tapauksessa, jos et vielä ole.

Voit virrata levylle suoraan eri 3.3 ja GND-nastat, jotka ovat hajallaan levyn ympärille tai Micro USB-portin tai 5V-nastat kohdekulkissa. Jälkimmäiset kaksi vaihtoehtoa kulkevat 3,3 V: n säätelijän läpi ennen liittämistä 3.3-nastat. Kaikki nastat ovat toisiinsa yhteydessä, joten on parasta, jos käytät vain yhtä virtalähdettä kerrallaan.

Firmware: Ford-järjestelmä

Go Hanki Super-Special Hachaday-Edition Mecrisp Forth paketti GitHubista. Sisältyy “ROMS” -hakemistoon, on toinen järjestelmä, joka toimii demomille täällä. Olen ladannut kunnioittavaan tukikohtaan [JCW]: n poikkeuksellisesta embello Frout -kirjastoista, toimittaa asioita, kuten helppoa GPIO-kokoonpanoa, viivetoiminnot ja niin edelleen. Saatavilla on paljon enemmän kirjastoja, ja tarkastelemme niitä ensi kerralla, kun tarvitsemme niitä.

Järjestelmän käyttäminen on hienoin asia, että hyvin vähän tukiohjelmistoa tarvitaan millään tavalla – edestakainen tulkki kokoaa oman koodinsa ja vuorovaikutuksessa sen kanssa sarjapäätelaitteessa. Kaikki tapahtuu mikrokontrollerin sisällä. Yksi este, sitten se nousee sirulle. Vanhoina päivinä tämä oli tehty siirtämällä tavuja manuaalisesti, ja ulos on todella pieni, että kirjaimellisesti bootstrapping se on mahdollista. Mutta olet jo saanut tämän sirun ohjelmoijan, eikö?

[Texane] ST-apuohjelmat ovat helpoin tapa päästä ulos sirulle. Lataa ne GitHubista ja rakenna se itse tai kokeile onneasi Distroin pakettijohtajan kanssa. (Windows Folks, et ole jätetty pois. Vaikka binääri ei ole nähnyt päivityksiä jonkin aikaa, se tulee.)

Liitä ohjelmointijohdot näkyvässä muotissa ja anna maagiset komennot St-Flash Poista ja ST-Flash Write Mecrisp-Stellaris-Hackaday-Edition.Bin 0x8000000. Viiden sekunnin kuluttua olet valmis röyhkeään.

GND – GND

SWCLK – CLK

SWSIO – DIO

Ottaa ohjelmoija on vaivaa, jos sinulla ei ole sitä, mutta se tekee loput elämästäsi helpommaksi ja saada yksi on yhtä tärkeä kuin napsauttamalla “palkkaa” ja odottaa. Omat [Al Williams] (ei suhteessa) on äskettäinen viesti samaan ohjelmistoon C tai Arduino-koodin kanssa GDB: n kanssa, joten on syytä asettaa tämän ylös.

Ohjelmisto

Serial Hookup, Powered by kannettava tietokone
Laita ohjelmoija pois nyt ja muodosta yhteys STM32: een sarjasta; Oletusarvoa on oltava 115 200. Jos et ole vielä irrottanut virtaa, sinun on ehkä osuma Reset-painikkeella STM32-aluksella. Jos kaikki menivät hyvin, sinua tervehtivät tuttuja kallo- ja ristipäätöksiä. Mecrisp is expecting a linefeed at the end of lines, so if you’re sending LF+CR, you’ll be successfully hitting return twice.

A9 TX – Serial RX

A10 RX – Serial TX

GND – GND

[jcw]’s folie is a nice, multi-platform serial terminal emulator for this application. What it does that your normal terminal program doesn’t is allow you to re-enter a command line with the up-arrow, which makes taking care of mistakes much, much much easier than re-typing a long command. Se myösautomatically includes other files, which I made substantial use of in building the binary for this article. You don’t need to run folie, but I bet you’ll like it.

Hei maailma

Now it’s “Hello World” time. If you’re new to Forth, here comes an very selective introduction. type 2 2 + and hit enter. It says ok.. That’s reassuring, right? now type . (read “dot”) and it will print out the not-surprising result. dot is the first of a few global Forth shorthands that you’ll want to internalize. a lot of commands with a dot print out their results immediately. .s (dot-ess) prints out the stack contents, for instance. two a lot more idioms that we’ll see a lot of are @ for getting a variable or reading an input and ! for setting a variable or output. read these as “get” and “set” in your head when scanning Forth code.

Next, let’s see how to write a function. : starts a function definition and ; ends it. So : four 2 2 + ; defines a function that adds two and two together. (And compiles it in real time!) You can then turn around and call this function immediately. four .s will show you that our function has left the sum of two and two on the stack. In this sense, functions in Forth aren’t really functions. They don’t take explicit arguments or return explicit values. They just operate on whatever data is on the stack, and leave the results there too. That’s why Forth functions are called “words”. I’ll be sticking to this convention from now on.

Here, finally, is “Hello World”: : hw .” Hello, World!” cr ;” Strings are a little odd in Forth, mainly because of the way the language is parsed — the compiler reads up to a space and then executes what it has found, so there has to be a space between the print-a-string command (.”) and the first character that you want to print. The print command scans forward until it finds a closing “, though, so you don’t need an extra space there. cr sends a carriage return. type hw at the prompt. Hello, World!

Blinking LEDs

Even though serial text input and output is so easy in Forth, blinking an LED is the standard “hello world” of microcontrollers, so it’s time for some GPIO. because the system is already configured for this particular microcontroller board, turning an LED on is as easy as typing led.on at the prompt. want to turn it off? led.off. manual blinking will get old pretty quickly, though, so let’s write a blink word. : blink led.on 100 ms led.off 200 ms ; will do the trick. try blink blink blink. See my blink demo code for elaboration. (More on ms in a few thousand milliseconds.)

The details of the GPIO initialization are hidden in core/Hackaday/LED.fs and in Embello’s stm32f1/io.fs respectively. Digging through, you’ll see the standard initialization procedure: the particular pin is set as output by flipping some bits in the STM32’s peripheral control registers. [jcw] has defined a bunch of these, making setting a pin as output, with the push-pull driver, as easy as PC13 OMODE-PP io-mode!. (Remember the “!” indicates set the value in a variable or register.)

To configure pin PA7 for ADC input: PA7 IMODE-ADC io-mode!. testing buttons, using the built-in pullup or pulldown resistors: PA3 IMODE-PULL io-mode! and then set the output to pull up or down using true PA3 io! or PA3 ios!. You’ll then be able to read the button state with PA3 io@ (“io get”) later on.

GPIO on the STM32 chips is very flexible, and if you want to get deep into the configuration options in the datasheet, you can set all of this fairly easily using [jcw]’s io.fs code. For instance, io.all prints all of the GPIO registers and their values, which is a great help for interactive debugging. That said, there’s some room here for a a lot more user-friendly hardware-abstraction layer, if you want to contribute one.

Multitasking on the Quick

So now we’ve got a blinking LED and serial-port printing “Hello World”. Not a bad start, and both of these make good use of Forth’s interactivity: the LED only lights up when you type blink. one of the chief virtues of Forth, for me, is the ease of going between interactive testing of words like this, and then deploying the functionality in a working system. One reason is that nearly all Forths support basic cooperative multitasking. Here’s what I mean.

First, let’s loop our blink function so that we don’t have to type so much. : bb begin blink again ; creates a function, bb for “bad blink”, that will run forever. The problem with “run forever” in Forth is that you never get back to the interpreter’s command line without physically pressing the reset button, and then everything you were working on in RAM is lost.

Instead, let’s blink in a loop with a way out. : gb begin blink key? siihen asti kun ; creates a function that will run our blink command until there’s some input from the keyboard — the return crucial is pressed. This particular looping construct is very beneficial for testing out functions that you’d like to run continuously, without hanging the system. keep it in mielessä.

Kun olemme hämmentäneet vilkkumme toimimaan juuri niin kuin haluamme sen, luodaan tausta-tehtävä, jotta se voi vilkkua ilman valvontaa.

Tehtävä: BlinkTask
: räpäytys&
blinktask aktivoi
Aloita vilkkua uudelleen
;
monitori
räpäytys&

Lyhyesti, tehtävä: Word luo muistitilaa vilkkuvan tausta-tehtävämme, jota kutsumme blinktaskia. Toiminto vilkkuu ja tekee työn taustalla. Blink & alkaa ilmoittamalla, että se käyttää BlinkTask-tehtäväpistettä ja että sen on käynnistettävä. Sitten se menee rajaton vilkkuvan silmukan, josta se ei koskaan lähtee. MultiTask kääntyy monitoimilaitteesta ja vilkkuu ja suorittaa tehtävämme. Suorita se ja LED vilkkuu, kun voit silti olla vuorovaikutuksessa konsolin kanssa. Makea. Tyyppi tehtävät ja näet, että on olemassa kaksi aktiivista: yksi on meidän vilkkumpi ja toinen on vuorovaikutteinen tulkki.

Mutta miten vilkkuu tehtävä tietää, milloin tuottaa muita samanaikaisia ​​prosesseja? Toistaiseksi sana tauko tuottaa nykyisestä kontekstista ja siirtyy seuraavaan, pyöreän robin monitoimilaitteeseen. MS-toiminto muun muassa koostuu tauko-komennoista, joten se näyttää estävä viive yhden tehtävän asennuksen päätyy fantastisesti hyvin muiden tehtävien kanssa.

Suuri yhteistyö osuuskunnasta on, että hallitset tarkalleen, milloin kontekstikytkin tulee olemaan kontekstikytkin, mikä voi auttaa poistamaan glitches, jotka löydät ennaltaehkäisevistä järjestelmistä. Haittapuoli on, että olet vastuussa muistamisesta keskeyttää toiminnot nyt ja sitten, ja sinun on tarkistettava ajoitus itse. Tietenkin tämä on mikrokontrolleri, ja sinulla on varsin melko rikas sisäinen keskeytysohjain pelata myös.

Todellinen monisuuntainen mirosen muisti on se, että se tekee suuren työnkulun kirjoittamiseen, testaukseen ja pieniin demoneihin: toiminnot, jotka haluavat olla “aina”. Ensin kirjoita toiminto, joka tekee toiminnon kerran. Toiseksi, testaa se silmukassa, jossa on paeta luukku. Kolmanneksi, kun se toimii, poista paeta ja tee taustatieto. Voit sitten kytkeä sen päälle ja pois käytöstä tyhjäkäynnillä ja herätä jopa muista tehtävistä. Katso Mekrispin multitask.txt, lähde, paljon lisätietoja.

Mitä seuraavaksi?

Toistaiseksi olemme perustaneet Mekrisp-Stellaris, lisää kirjastoja Jeelabsin Embello Frameista ja ajaa nopeita demoja. Jos tämä on kiihtynyt kiinnostuksesi, otan sinut jalostamaan rakentamaan todellista ohjelmistoa seuraavan kerran. On paljon enemmän sanottavaa siitä, miten Mekrisp hoitaa Flash Versus RAM-, panosten ja tulosteiden ja vuorovaikutteisen kehityksen käytäntöä. Jotkut todella freaky-näkökohdista työskentelemiseksi herättävät hauska muotoisia päätään, ja opimme rakastamaan heitä joka tapauksessa.

Sillä välin saat halvat STM32F103-levyt vilkkuvat binäärimme kanssa ja saada hieman tottunut pelaamaan ympäröivän ympäristön ympärillä sirulla. Vilkkuu joitakin LEDiä. look around the Mecrisp-Stellaris glossary and the embello API documentation. Or just type list to see all the command at your disposal and start hacking away.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *