MSP430 Launchpad Opas

Alunperin julkaistu: 9.2.2017

Viimeksi muokattu: sunnuntai 10.12.2017

TI MSP430 Launchpad esittely

Texas Instrumentsin valmistama, edullinen mikro-ohjainsovellusten kehitysalusta on nimeltään MSP430 Launchpad. Alusta pitää sisällään emulaattorin, ja ohjelmointiliitynnän, joiden avulla mikrokontrollerille voidaan sovelluksia ladata ja debugata.

Alustalla voidaan ohjelmoida kaikkia ns. Value Line -sarjan mikro-ohjaimia, joita ovat kaikki MSP430G2 -alkuiset mikro-ohjaimet (esim. kuvassa näkyvä MSP430G2553).

MSP430 Value Line Mikro-ohjainten ominaisuuksia

Alla on lueteltu lyhyesti ne ominaisuudet, jotka MSP430G2 -sarjalaiset pitävät sisällään. Kaikkia ominaisuuksia ei tietenkään aivan jokainen Value Line -ohjain pidä sisällään, mutta suurin osa mainituista ominaisuuksista löytyy niistä.

  • Yleiskäyttöiset ja ohjelmoitavat IO-linjat (General Purpose IO)
  • 16-bittiset ajastimet eli timerit (Timer_A2 tai Timer_A3)
  • WDT+ eli vahtikoira ajastin
  • Alijännitevahti (automaattinen resetointi, Brownout Reset)
  • Sarjaliikenneyhteydet (USI, USCI, SPI, I2C ja UART)
  • Komparaattori A+
  • 10-bittinen, 8-kanavainen 200 ksps SAR ADC-muunnin

Launchpad kehitysalusta

Alla olevassa kuvassa on esitelty kehitysalustan liittimet ja muut ensialkuun tärkeät kohdat.

Tältä sivulta löydät tekemäni oppaan osat mikrokontrollerin ohjelmoimoiseen ja käyttöön käytännön sovellutuksissa. Voit soveltaa ja kopioida koodeja haluamasi mukaan, mutta kaikenlainen kaupallinen käyttö on kielletty (tässä tapauksessa ota yhteyttä info-sivujen kautta).

Mikrokontrollerin ohjelmointiopas

Alle on lisätty linkit kaikkiin osiin jotka ovat julkaisukelpoisessa tilassa, osiin saattaa tulla muutoksia ja voi olla että asiavirheitä löytyy, joten mikään MSP430 tai C-kielen-raamattu tämä ei tietenkään ole. Olettaisin kuitenkin, että aloittelija hyötyy suomenkielisestä oppaasta, vaikka englanninkielisiä oppaita on netissä jo pilvin pimein.

Parissa ensimmäisessä osassa perehdytään ohjelmoinnin perusasioihin, jotka voivat olla joillekin tuttua ennestään. Oppaassa edetään asteittain kohti monimutkaisempia mikrokontrollerisovelluksia, aloittaen kuitenkin ihan perusteista. Suosittelisin kuitenkin (jos opiskelet aihetta parhaillaan), että kun törmäät sinisellä väritettyyn otsikkoon nimeltä Esimerkki X, niin kirjoitat saman esimerkin omaan lähdekoodiisi ja tutkit koodin toimintaa oman kehitysympäristösi avulla.

Valitse haluamasi osa alta tai ylhäältä valikosta.

1. Johdanto

Koska C-kieli on standardi ohjelmointikieli, ei ole oikeastaan väliä missä ympäristössä ohjelmointia opettelee. Samat opitut asiat pätevät niin tietokoneelle ohjelmoitaessa, kuin mikrokontrollerille ohjelmia tehdessä. Ohjelmoinnin periaatteet ovat siis samat, olipa kieli mikä hyvänsä. Voitkin soveltaa opittua hyvin monessa eri asiassa, mutta kannattaa muistaa kuitenkin, että mikroprosessori ei ole tietokone ja on oltava tarkkana siitä, mitä siihen lähdekoodiin itse asiassa kirjoittaa. Ohjelmoida voi monella eri kielellä ja monella eri tavalla, eikä ...jatka lukemista!

2. Muuttujat ja tietotyypit

Koodi kirjoitetaan lohkoihin C-kielessä ohjelman lähdekoodi kirjoitetaan lohkoihin, jotka erotetaan toisistaan {} -merkeillä. Lohkon aloittaa { -kaarisulku ja päättää } -kaarisulku. Mikäli lohko ei ole oikein suljettu tai avattu, kääntäjä antaa virheilmoituksen eikä ohjelmaa voida kääntää. Lohkot voidaan tietyissä tapauksissa jättää myös pois, mutta suosittelen ajattelemaan, että jokainen rakenne koodissa pitää kirjoittaa lohkojen sisään. Kaarisulkeiden käytöstä lisää myöhemmin. Muuttujat ja tietotyypit Muuttujaa käytetään varastoimaan tietoa väliaikaisesti ohjelman suorituksen aikana. Esimerkiksi ...jatka lukemista!

3. Perusohjelman runko

Tarkastellaan yksinkertaista esimerkkiä MSP430:n C-ohjelmarungosta: 1  #include <msp430g2231.h> 2  void main(void) 3  { 4           WDTCTL = WDTPW + WDTHOLD; // Pysäytetään vahtikoira 5 6           while(1) // pääohjelman pääsilmukka 7           { 8 9           } 10 } Vasemmassa reunassa on rivinumerot, joita tarvitaan kun selitän mitä yllä tapahtuu. Rivillä 1 kääntäjälle kerrotaan #include komennolla, että halutaan ottaa käyttöön msp430g2231.h -tiedosto. Kyseessä on header- eli otsikkotiedosto. Kyseinen tiedosto sisältää kaikki tarvittavat käskyt ...jatka lukemista!

4. Ledit vilkkumaan

Launchpadissa ledit on kytketty siten, että ne syttyvät kun ledeille kirjoitetaan "1" eli käyttöjännite. Alla oleva kuva esittää niiden kytkentää mikrokontrolleriin: Esimerkkiohjelma 1: if-else sekä rekisterit P1OUT/P1DIR Seuraavaksi tehdään hieman jännempi ohjelma, eli ohjataan Launchpadin vihreää lediä. Perehdytään aiheeseen kirjoittamalla uusi ohjelma Launchpadille (muokkaamalla edellistä ohjelmaa): #include <msp430g2231.h> void main(void) {      unsigned int kokonaisluku_muuttuja = 500;      unsigned char kirjain_muuttuja = 10;                WDTCTL = ...jatka lukemista!

5. Näppäimen/kytkimen luku

Launchpadissa painonappi S2 on kytketty ylösvetovastuksella alla olevan kuvan mukaisella tavalla. Kun nappia painetaan, porttipinni P1.3 (nasta 5) kytkeytyy maatasoon ja mikrokontrolleri tulkitsee sen nollana "0". Tällainen kytkentätapa on yleinen ja esimerkiksi napin pohjaan jääminen voidaan havaita helposti. Ylösvetovastus 47kΩ rajoittaa virran kulkua silloin, kun kytkintä painetaan. Vastus on erittäin tärkeä, sillä ilman vastusta kytkimen painallus aiheuttaa oikosulun piirissä ja kaikki virta kulkeutuu kytkimen läpi. Jos käytössä olisi suuremmat virrat, ...jatka lukemista!

6. Silmukkarakenteet while / for

Kun ohjelman täytyy suorittaa samaa asiaa useampaan kertaan, voidaan käyttää toistorakennetta while tai for. Ohjelma toistaa silmukkaa aina silloin, kun toistamisen päättävä ehto ei ole tosi tai kunnes jokin ohjausrakenne (tai varattu sana) pysäyttää toiston suorittamisen. Toistojen määrä voi siten olla ääretön, yksi tai jotain siltä väliltä. Toistoa voidaan tarvita esimerkiksi silloin, kun muuttujan arvoa täytyy kasvattaa tiettyyn rajaan asti (kuten esimerkin 5 Viive() -aliohjelmassa) tai vaikkapa 7-segmenttinäytön ohjauksessa. while(silmukan ehto) Pääohjelman toistosilmukka ...jatka lukemista!

7. Silmukkarakenne do-while

Edellisellä sivulla käytiin läpi while ja for silmukkarakenteet. Seuraavaksi on vuorossa do-while. Do-while eroaa while ja for silmukoista mm. suoritusehtojen tarkistuksen osalta. Do-while silmukassa silmukan suorittamista varten olemassa oleva ehto tarkistetaan aina vähintään yhden kerran. Do-while toistaa itseään silloin, kun tarkistettava ehto täyttyy eli on tosi. Do-while silmukka silmukassa do-lohko suoritetaan ensin yhdesti, jonka jälkeen suoritetaan ehdon tarkistus while -sulkujen sisällä. Mikäli ehto on tosi, suoritetaan do-lohko uudestaan. Monesti do-while lohkon voi kirjoittaa muullakin silmukalla, mikäli kyseinen rakenne tuntuu hankalalta tai se ei sovi tarpeeseen. Toisaalta do-while lohko soveltuu hyvin esimerkiksi ...jatka lukemista!

8. Switch-case valintarakenne

Monesti ohjelman suoritusta pitää pystyä ohjaamaan useampaan eri suuntaan. Tätä tarkoitusta varten löytyy switch-case rakenne. Esimerkiksi jos ohjelma on osa automaattista robotin ohjausjärjestelmää, täytyy sen osata ohjata robotti eteen, taakse, vasemmalle ja oikealle. Tieto siitä, mihin suuntaan robotin pitää mennä tulee tietenkin antureilta, jotka kertovat onko esteitä havaittu. Tässä ei kuitenkaan keskitytä robottien ohjaukseen enempää tällä kertaa, vaan mennään asiassa eteenpäin. Switch-case rakenteessa suoritusta ohjaa yleensä muuttujan arvo, mitä tarkistetaan ...jatka lukemista!

9. Globaalit muuttujat

Ohjelmoitaessa tarvitaan usein myös globaaleita muuttujia. Tällainen muuttuja ei ole mitenkään poikkeava tavanomaisesta muuttujasta, joita aiemmin on tässä oppaassa käsitelty, ainoastaan sen näkyvyys on laajempi kuin tavallisten muuttujien. Näkyvyydellä tarkoitetaan sitä, miten ohjelma voi jotain muuttujaa käyttää suorituksen aikana. Alla on esimerkki kuinka globaali muuttuja määritellään. #include <msp430g2231.h> // globaali muuttuja. Määrittely aina alussa. char globaali = 0; void main(void) {       // watchdog pysäytys jätetty tarkoituksella pois ...jatka lukemista!

10. C:n taulukot

Taulukko lienee tuttu elementti jokaiselle, joka tätäkin opasta on tähän asti lukenut. Taulukoita määritellään oikeassa elämässä siten, että taulukolle annetaan tietty määrä rivejä ja sarakkeita, mihin tieto kirjataan ylös. Excel-taulukko on tästä yksi esimerkki. Taulukoiden hyödyllisyys on siinä, että ne sisältävät yleensä jonkin verran tai paljon tietoa, mitä ohjelman pitää hyödyntää, että sovellus toimii oikein. C-kielessä taulukoita määritellään periaatteessa samalla tavalla, mutta että taulukon varaaminen onnistuu ongelmattomasti, täytyy c:n kielioppi ...jatka lukemista!

11. MSP430G2231 Rekisterit

Edellisessä osassa käytiin läpi taulukoita ja sitä aiemmin muuttujien käsittelyä erilaisin menetelmin on myös kahlattu lävitse. Bittejäkin on naksuteltu ledin vilkutuksen muodossa ja kytkimen lukua myös harjoitettu. Tässä vaiheessa mielestäni taitaa olla tämän oppaan kokonaisuuden kannalta järkevintä käydä lävitse hieman tarkemmin MSP430G2231 mikrokontrollerin rekistereitä ja niiden merkityksiä, vaikka näistä on ollut puhetta aiemminkin. Tämä sen vuoksi, että vaikka tarkoitus on oppia c-kieltä ja ohjelmoinnin perusteita, niin on aivan yhtä tärkeää ...jatka lukemista!

12. Keskeytykset ja niiden käyttäminen 1

Tällä kertaa epistolan aiheena on keskeytykset ja niiden käyttäminen ja pureudutaan myös siihen, milloin on järkevää käyttää keskeytystä. Aihe on yksinkertainen, joten pyritään selityskin pitämään sellaisena. Keskeytys on - kuten nimestä voi päätellä, jonkin toiminnan keskeyttävä "poikkeus". Kun mikrokontrollerin CPU havaitsee keskeytyksen, niin CPU:n sen hetkinen ohjelman suoritus pysähtyy ja CPU siirtyy suorittamaan ohjelmaa keskeytyskutsuun. Englanniksi puhuttaessa käytetään termiä interrupt, joka on suora käännös sanalle keskeytys. Tämä oli aika tekninen ilmaisu, ...jatka lukemista!

13. Keskeytykset ja niiden käyttäminen 2

Edellisessä osassa tutustuttiin keskeytykseen ja kuinka keskeytyksiä käytetään Launchpadin kytkimen S2 ja porttipinnin P1.3 osalta. Tässä osassa käydään läpi kuinka saadaan selville myös muiden porttipinnien keskeytykset. On usein tarpeellista kytkeä porttipinneihin muitakin laitteita kuin kytkimiä, joiden aiheuttamien keskeytysten avulla ohjelma tekee jonkin asian. Tässä esimerkissä ei kuitenkaan ole mitään monimutkaista, vaan käytetään toista kytkintä sytyttämään vihreä led ja hyödynnetään edellisen osan esimerkkikoodia. Periaate keskeytyksissä kuitenkin on sama, kun keskeytysreuna (nouseva ...jatka lukemista!

14. Keskeytykset ja niiden käyttäminen 3

Kaksi edellistä osaa on käsitellyt keskeytyksiä, joissa keskeytyksen on aiheuttanut kytkin, joka on ollut kytkettynä portteihin P1.3 tai P1.4. Tässä osassa jatketaan vielä keskeytysten pohdintaa lisää, koska mikrokontrollereiden ohjelmoinnissa keskeytysten käyttö on enemmän sääntö kuin poikkeus. Uutena asiana tulee kuitenkin ajastimen, eli timer-lohkon käyttö MSP430G2231 mikrokontrollerilla. Ennen kuin mennään varsinaiseen ohjelmaan ja esimerkkiin, selitetään hieman mikä ajastin eli timer ylipäätään on. Mikrokontrollerin ajastimista Mikrokontrollereilla on yleensä useita erilaisia ajastimia, joita voidaan käyttää ...jatka lukemista!

15. Moottorin ohjaus PWM:llä

Tässä osassa perehdytään PWM-ohjauksen saloihin ja sitä varten tarvitaan jokin laite mitä ohjataan. Näin ollen romujeni seasta löysin pienen DC-moottorin joka toimii ainakin 5 voltin (USB) jännitteellä. Mikäli sinulla ei moottoria ole käytössäsi, voit käyttää myös lediä ja ohjata sen kirkkautta. Ennen kuin mennään itse sovellukseen ja kytkentään, voisin muutaman sanan mainita PWM-ohjauksesta. Pulse Width Modulation eli PWM-ohjaus PWM-ohjaus on yksinkertaisesti pulssisuhteen muutoksella tehtävää ohjausta, jolloin ohjaus menee vuorotellen päälle ...jatka lukemista!

16. MSP430G2231 mikrokontrollerin kellot

Tietokoneiden ja mikrokontrollereiden CPU:t toimivat aina jollakin kellotaajuudella. Tietokoneiden maailmassa käyttäjä harvoin muokkaa suorituskykyyn vaikuttavaa CPU:n kellotaajuutta, ellei harrasta kellottamista. Mikrokontrollereilla kuitenkin kellojen muokkaus on enemmän sääntö kuin poikkeus, sillä usein mikrokontrolleriin liitetyt laitteet toimivat jollakin tietyllä omalla nopeudellaan. Mikrokontrollerin suorituskykyyn vaikuttaa siis se, miten nopeasti CPU:n kello tikittää. Nopealla kellolla mikrokontrolleri kykenee tekemään monta eri suoritusta sekunnin aikana, kun taas hitaalla kellolla suorituskyky on vaatimattomampi. Se miten nopeasti mikrokontrollerin ...jatka lukemista!

17. MSP430G2231 AD-muunnin

Tämän osan aiheena on mikrokontrollerin AD-muuntimen käyttö ja kuinka esimerkiksi potentiometrin arvoa voidaan lukea muuttujan arvoksi ja miten siitä saadaan jännite laskettua. Tämä toimii seuraavassa osassa edellytyksenä mm. moottorinohjaus sovellukselle, missä moottorin pyörimisnopeutta säädetään suoraan suhteessa AD-muuntimen arvoon. Ennen esimerkkiä ja sovellusta käydään läpi muutama asia MSP430G2231:n AD-muuntimesta, jotta tiedetään miten sitä voidaan käyttää. Jos analoginen signaali tai AD-muunnin ei vielä ole käsitteenä tuttu, niin kannattaa lukaista alla olevat linkit. ...jatka lukemista!

18. Moottorin kierrosnopeuden säätäminen

Sulautetuissa järjestelmissä, olivatpa ne monimutkaisia taikka vähemmän monimutkaisia, on yleistä se, että mikrokontrollerin avulla säädetään jotain prosessia. Tällä kertaa tulemme säätämään moottorin kierrosnopeutta PWM-ohjauksen ja potentiometrin avulla ja tämän osan perusteella jokainen halukas voikin jo rakentaa itselleen esimerkiksi säädettävän tuulettimen tai vaikkapa himmennettävän valon. Toki säätää voi mitä mieleen tulee, mutta edellä oli vain pari esimerkkiä. Mikäli eksyit tälle sivulle Googlen tai jonkun muun linkin kautta, eikä PWM-ohjaus tai AD-muuntimen ...jatka lukemista!

19. Tiedon siirto Launchpadilta PC:lle

Tämän osan aiheena onkin hieman erilaisempi epistola, missä käsittelemme tiedon siirtoa laitteelta toiselle - tässä tapauksessa siis Launchpadilta tietokoneelle. Ennen kuin mennään itse koodin kimppuun, on hyvä käydä asioita yleisellä tasolla lyhyesti läpi. Jos sarjaliikenne ja sarjaportti on vähemmän tuttu, niin kannattaa vilkaista sarjaliikenne sivua, missä kerrotaan enemmän sarjaportista. Emme käy kaikkia asioita välttämättä pohjamutia myöten läpi, sillä se ei ole mielekästä - tietoliikenne ja varsinkin sarjamuotoinen sellainen on niin laaja ...jatka lukemista!

20. Tiedon siirto PC:ltä Launchpadille

Tässä osassa jatketaan siitä mihin edellisessä osassa jäätiin ja lisätään olemassa olevaan ohjelmaan koodia, minkä avulla saadaan tieto liikkumaan myös tietokoneelta mikrokontrollerin suuntaan. Koska sarjaportti ja sen käyttöön ottaminen käytiin aiemmin läpi, ei tässä osassa ole muuta tarpeellista esiteltävää kuin itse koodi ja kuinka signaali voidaan timerin avulla napata talteen. Timerin käyttö signaalin "pyydystyksessä" Tiedon vastaanottaminen tapahtuu tässä ohjelmassa Timer A:n avulla. Timer A alustetaan siten, että porttipinnin P1.2 laskeva reuna aiheuttaa ...jatka lukemista!

21. LPM0 – LPM3 sleepmodet

Tervetuloa Launchpad oppaan 21:een osaan. Jos olet lukenut kaikki osat tähän mennessä, niin kiitän mielenkiinnostasi. Seuraavassa 10:ssä osassa käydään läpi mikrokontrollerin käyttöä sovelluksissa, missä tarvitaan kytkinten ja ledien lisäksi muutakin elektroniikkaa ja tekniikkaa, kuten erilaisia IC-piirejä, näyttöjä, antureita, erilaisia sulautettuja väyliä jne. Toivottavasti tulevat osat kiinnostavat ja antavat vastauksia mieltäsi askarruttaviin kysymyksiin. Tulevissa osissa olen käyttänyt editorina kirjoitushetkellä CCS:n uusinta versiota: Code Composer Studio v5. Tämä johtuu siitä, että uudessa ...jatka lukemista!

22. Kaksisuuntainen moottorin ohjaus

Aiemmissa osissa on tulleet tutuiksi mm. moottorin ohjaus pwm:llä, mutta vain yhteen suuntaan. Tässä osassa laajennetaan esimerkkien osalta tietämystä siitä, mitä tarvitaan jos halutaan ohjata moottoria kahteen eri suuntaan. Periaatteessa kaksisuuntainen moottorinohjaus ei ole sen kummallisempi asia kuin aikaisemmin käsitelty moottorin ohjaus PWM:llä. Moottorin läpi täytyy päästää virtaa kulkemaan, mikä aiheuttaa moottorin pyörimisen yhteen suuntaan. Kun moottorin läpi kulkee virtaa toiseen suuntaan, niin moottorikin pyörii toiseen suuntaan. Helppoa eikös juu! ...jatka lukemista!

23. 7-segmenttinäytön ohjaus

Mikrokontrollerin suorittama koodi ei usein näy käyttäjälleen fyysisesti, minkä vuoksi esimerkiksi ledejä käytetään ilmaisemaan, että laite toimii oikein. Monesti on kuitenkin hyödyllisempää ilmaista laitteen toimintaa visuaalisemmin, esimerkiksi 7-segmenttinäytön avulla. PC-maailmasta joillekin voi tällaiset näytöt olla tuttuja PC:n emolevyltä, missä vikakoodeja ilmaisemaan on käytetty yhtä tai useampaa 7-segmenttinäyttöä. Mikäli 7-segmenttinäyttö tuntuu vielä oudolta käsitteeltä, voit lukea siitä lisää 7-segmentin elektroniikkasivulta. Tässä osassa otetaan selvää, kuinka Launchpadin avulla saadaan näytölle tulostumaan numeroita. Sitä ...jatka lukemista!

24. Matriisinäppäimistö

Edellisessä osassa perehdyttiin lukujen tulostamiseen, mutta usein lukuja tarvitsee myöskin lukea käyttäjältä, eikä aina pelkästään yksi tai kaksi nappia riitä tähän tarkoitukseen. Esimerkiksi jos ajatellaan, että täytyy rakentaa koodilukko, joka vastaanottaa nelinumeroisen koodin ja oikean koodin kohdalla avaa lukon, niin tällöin kätevintä on käyttää jonkin sortin näppäimistöä. Näppäimistöjä on toki monenlaisia, mutta keskitytään tässä osassa vain 4x4 matriisinäppäimistön toimintaan ja sen käyttöönottoon. Edellisen osan komponenttien lisäksi tarvitset tätä esimerkkiä varten matriisinäppäimistön ...jatka lukemista!

25. Matriisinäppäimistö 2

Edellisessä osassa tutkittiin, kuinka näppäimistöä voidaan lukea digitaalisia porttipinnejä hyödyntämällä. Tässä osassa keskitytään siihen, kuinka 16 eri näppäintä voidaan lukea vain yhtä porttipinniä hyödyntämällä. Tarve kytkennälle tulee siitä, että usein IO-linjojen määrät ovat rajoitettuja ja käytettyjen linjojen määrä täytyy minimoida. Yksi vaihtoehto on tietenkin hankkia suuremman IO-määrän sisältävä mikrokontrolleri, mutta näin harrastajapuolella se on usein "huonompi" vaihtoehto joko taloudellisesta syystä tai pelkästään siitä, että haluaa toteuttaa jonkun projektin mahdollisimman nopeasti. ...jatka lukemista!

26. HD44780 LCD-näyttö

Monissa mikrokontrolleriprojekteissa eteen tulee lähes aina jossain vaiheessa tarpeen näyttää symboleita, kirjaimia ja numeroita käyttäjälle. Sovelluksena voi olla esimerkiksi jännitteiden ja lämpötilojen seuranta tietyssä suljetussa järjestelmässä, tai vaikka kellonajan tai muun tarpeellisen tiedon näyttäminen. Edellisissä osissa käytiin hieman läpi yhdenlaista näyttötyyppiä; 7-segmenttinäyttöä. Tässä osassa perehdytään LCD-näytön ohjaukseen ja otetaan näytöksi HD44780 ohjaimeen perustuva merkkinäyttömoduuli. Toisin kuin 7-segmenttinäyttö, LCD-näyttö kykenee näyttämään hyvin useita erilaisia symboleita ja ohjelmoija voi niitä luoda itsekin. ...jatka lukemista!

27. MSP430G2231 SPI-väylä

Tässä osassa perehdytään siihen, miten SPI-väylä otetaan käyttöön esimerkiksi MSP430G2231 mikrokontrollerilla ja kuinka tietoa saadaan lähetettyä. Esimerkissä ei kuitenkaan tarvita orjalaitetta, sillä MISO ja MOSI linjat kytketään mikrokontrollerilla ristiin. Tällöin saadaan luettua sama tieto mikä tuli lähetettyä ja saadaan testattua tekemämme ohjelma varsin helposti. Aikaisemmin on ollut puhetta sarjamuotoisista väylistä, esimerkiksi sarjaportista jota käsiteltiin osissa 19 ja 20. Näissä kappaleissa perehdyttiin siihen, kuinka mikrokontrollerin sarjaportti saadaan lähettämään tietokoneelle dataa. Sarjaportista ja sarjaväylästä voi ...jatka lukemista!

28. MSP430G2231 I2C-väylä

Tässä osassa tutustutaan I2C-väylän käyttöönottoon ja luetaan lämpötilatietoa TMP101-anturilta. Mikro-ohjain toimii väylässä isäntänä (master) ja väylässä on kiinni yksi orjalaite (slave). TMP101 anturi ohjataan antamaan hälytys, kun asetettu lämpötila-arvo ylittyy. Kun hälytys aktivoituu niin sammutetaan Launchpadin vihreä LED, mutta normaalitilassa sen annetaan loistaa iloisesti vihreänä. Eli lyhyesti sanottuna rakennetaan lämpötilavahti. I2C-väylän käyttäminen MSP430G2231:n USI-modulin avulla on monimutkaisempaa kuin SPI-väylän käytössä ja rekisteriasetuksia joutuu tekemään enemmän. Esimerkki on pyritty sen vuoksi kirjoittamaan mahdollisimman ...jatka lukemista!

29. Launchpad Boosterpack

Launchpadin päälle on saatavilla erilaisia lisälevyjä, joilla toiminnallisuutta ja käytettävyyttä saadaan laajennettua. Näitä lisälevyjä kutsutaan nimellä boosterpack ja niistä käytetään lyhennettä BP. Lisälevyjä voi suunnitella itsekin ja sitä varten on tehty jopa omat ohjeetkin, mikäli haluaa lisälevyjä suunnitella ihan myytäväksi asti. Boosterpackien suunnittelusta löytyy lisäinfoa osoitteesta: http://processors.wiki.ti.com/index.php/BoosterPack_Design_Guide. Valmiita lisälevyjä voi ostaa TI:n verkkokaupasta josta ne tulevat muutamassa arkipäivässä, mikäli tuotetta on varastossa. Toisaalta osat voi hankkia muualtakin ja väsäillä boosterpackin kasaan vaikkapa ...jatka lukemista!

30. SRF02 Ultraäänianturi

Launchpadia ja elektroniikkaa -oppaan viimeisessä ja loistokkaassa osassa tutustutaan Robomaasta saatavaan ultraäänianturiin nimeltä SRF02. Ultraääniantureita hyödynnetään nykypäivänä esimerkiksi autojen peruutustutkissa, robotiikassa, lääketieteessä ja jopa hyönteisten karkottimena. Tässä osassa käytetään ultraäänianturia etäisyyden mittaamiseen launchpadin ja jonkin kohteen välillä. Ultraäänianturit toimivat samaan tapaan kuin lepakot suunnistavat. Kun anturi lähettää ultraäänen, se kimpoaa esteestä takaisin vastaanottimeen (joka tässä tapauksessa on sama kuin lähetin). Koska ääni etenee eri aineissa eri nopeudella, voidaan äänen kulkema ...jatka lukemista!