Se ensimmäinen LaunchPad-opas
Texas Instrumentsin edullinen LaunchPad on oiva kapistus sulautettujen järjestelmien ammattilaisten ohella myös elektroniikkaharrastajille. TI:n MSP430-sarjan mikrokontrollerien ohjelmoimiseen tarkoitettu alusta ei maksa kuin muutaman euron, mutta käyttömahdollisuudet ovat erittäin laajat.
Tässä oppaassa tutustutaan lähemmin valmistajan tarjoamaan ohjelmistokehitysympäristöön ja ohjelmoidaan pieni esimerkkiohjelma, joka siirretään lopuksi LaunchPad-alustalle ajettavaksi. Olen uutisoinut aiemmin Texas Instrumentsin tekemästä opasvideosta, jossa kerrotaan hieman alustan piirilevyn merkinnöistä, asennetaan kehitysympäristö ja vilautetaan ledejä.
Valitettavasti TI tarjoaa kehitysympäristön ainoastaan Windowsille ja Unix-pohjaisten käyttöjärjestelmien käyttäjät on jätetty nuolemaan näppejään. Hätä ei ole kuitenkaan aivan tämän näköinen, sillä on olemassa myös MSPGCC, joka on avoimen lähdekoodin toolchain TI:n MSP-sarjan mikrokontrollereille. Tässä perehdytysoppaassa käsitellään LaunchPad-ohjelmointia ainoastaan Windows-käyttäjän näkökulmasta, mutta olen kirjoittanut myös toisen oppaan, jossa käsitellään LaunchPadin ohjelmointia UNIX-pohjaisilla käyttöjärjestelmillä.
Code Composer Studio v4:n asennus
Texas Instruments tarjoaa oletuskehitysympäristöksi Code Composer Studiota, jonka voi ladata LaunchPadin wikisivuilta. Sivulle on pakko rekisteröityä, että noin 400 megatavun kokoisen ohjelmistopaketin saa ladattua. Code Composer Studio pohjautuu suosittuun avoimen lähdekoodin Eclipseen.
Code Composer Studio v4:n asennusikkuna
Asennus valmis
Code Composer Studion latausikkuna
Ensimmäiset asetukset ja projektin luonti
Käytettävän työhakemiston määritys
Tervetuloikkuna voidaan sulkea huoletta (kuva suurenee klikkaamalla)
Kun ohjelmisto on ladattu ja asennettu, klikataan se käyntiin. Aivan ensimmäisenä CCS (Code Composer Studio) kysyy workspacen polkua, johon voi syöttää oman hakemiston tai käyttää oletusta. Workspace-asetuksen hyväksymisen jälkeen aukeava tervetuloikkuna voidaan sulkea huoletta.
Uuden projektin luonti (kuva suurenee klikkaamalla)
Kun CCS on käynnistynyt, päästään alkuun luomalla uusi projekti yllä olevan kuvan mukaisesti (File -> New -> CCS Project).
Projektin voi nimetä haluamallaan tavalla
Projektin nimen voi valita täysin vapaasti, minkä jälkeen siirrytään seuraavaan ikkunaan Next-painikkeella.
Projektityypin valinta
Seuraavassa ikkunassa valitaan projektityypiksi MSP430 ja klikataan Next kaksi kertaa.
Laitteen tyypiksi on valittava käytettävä mikrokontrolleri (tässä tapauksessa MSP430G2231)
Seuraavaksi aukeavissa tarkemmissa projektiasetuksissa valitaan oikea mikrokontrolleri. LaunchPad-kehitysalustassa on paikallaan oletuksena MSP430G2231-mikrokontrolleri, jota käytetään myös tässä esimerkissä. Toinen LaunchPad-paketin mukana tuleva mikrokontrolleri on MSP430G2211, josta puuttuu muutamia ominaisuuksia verrattuna MSP430G2231:een (mm. I2C ja SPI). Tämän esimerkin koodi toimii kuitenkin molemmissa LaunchPadin mukana tulevissa mikrokontrollereissa moitteetta.
Muita muutoksia projektiasetuksiin ei tarvitse tehdä, joten mikrokontrollerin valinnan jälkeen klikataan Finish-nappia.
Ensimmäisen lähdekooditiedoston luonti
Uuden lähdekooditiedoston luonti (kuva suurenee klikkaamalla)
Kun projekti on luotu, tehdään uusi lähdekooditiedosto, jonka nimeksi annetaan main.c. Kooditiedoston luonti onnistuu yllä olevan kuvan mukaisesti klikkaamalla projektia hiiren oikeanpuoleisella napilla ja valitsemalla valikosta New -> Source File.
Ensimmäisen lähdekooditiedoston nimeksi annetaan main.c
Main.c:n luonnin jälkeen voidaankin aloittaa ohjelmointi (kuva suurenee klikkaamalla)
Kun main.c on luotu, voidaankin aloittaa ohjelmointi.
Ensimmäinen MSP430-koodini
Koska tämän oppaan ohjeita seuranneilla on luultavasti ensimmäinen kerta, kun LaunchPadille koodia kirjoitetaan, kannattaa lähteä liikkeelle esimerkiksi tässä oppaassa käytetyllä ledivilkutuskoodilla. Texas Instrumentsin LaunchPad-wikisivuilta löytyy linkki koodiesimerkkipakettiin, joka sisältää useita esimerkkikoodeja. Ne eivät ole kuitenkaan aivan suoraan käytettävissä ilman muokkauksia, joten tein uuden testikoodin, joka sopii käytettäväksi MSP430G2231-mikrokontrollerilla ja LaunchPad-alustalla ilman minkäänlaisia muutoksia.
Esimerkkikoodipaketin sisältämät C-kooditiedostot (kuva suurenee klikkaamalla)
Wikisivustolta ladatusta koodipaketista löytyy paljon Assembly- ja C-koodiesimerkkejä. C-hakemisto sisältää !Readme.txt-tiedoston, jossa on kerrottu kunkin esimerkkitiedoston tarkoitus. Tässä oppaassa käytetyn esimerkkikoodin tapainen ledivilkuttelukoodi löytyy C-hakemistosta ja se on nimeltään Software Toggle P1.0 (tiedosto msp430x20x3_1.c).
Koodi, joka vilkuttaa LaunchPad-alustan ensimmäistä lediä, joka on nimetty alustassa nimellä P1.0:
/****************************************************************************
* Project: Led Blink (for Texas Instruments MSP430G2231) *
* Author: Lauri Jämsä / http://www.ruuvipenkki.fi / lauri.jamsa@gmail.com *
* Date: 26.09.2010 *
* License: Attribution-NonCommercial-ShareAlike 1.0 Finland *
****************************************************************************/
#include <msp430g2231.h> // MCU:ta vastaava header-tiedosto
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Pysäytetään watchdog-timer
P1DIR |= 0x01; // Asetetaan P1.0 ulostuloksi
// (0x01 = 0b00000001)
unsigned int i;
while(1)
{
P1OUT ^= 0x01; // Muutetaan pinnin tilaa XOR-operaatiolla
for (i=0; i<50000; i++); // Viive
}
}
Yllä olevan koodin voi kopioida ja liittää aiemmin Code Composer Studiossa luotuun main.c-tiedostoon. Mikäli käytössä on jokin muu MSP430-mikrokontrolleri kuin MSP430G2231, on liitettävän otsikkotiedoston nimi muutettava sitä vastaavaksi.
Lediä vilkuttava koodi valmiina ajettavaksi (kuva suurenee klikkaamalla)
Kun koodi on liitetty main.c-tiedostoon ja muutokset tallennettu, voidaan koodia lähteä kääntämään ja ajamaan.
Mikäli LaunchPadia ei ole tähän mennessä kiinnitetty USB-kaapelilla tietokoneeseen, voi sen tehdä nyt. Ainakin Windows XP:n tapauksessa laite tunnistettiin automaattisesti ja hetken kuluttua käyttöjärjestelmä kertoi LaunchPadin olevan valmiina käyttöön.
LaunchPad-alustalla valmiiksi kiinni ollut mikrokontrolleri on ainakin Rev 1.4 -versiossa esiohjelmoitu. Tämän huomaa siitä, että heti virran kytkemisen jälkeen alkavat LED1 (punainen) ja LED2 (vihreä) vilkkua vinhasti. Tästä ei kuitenkaan tarvitse välittää.
Seuraavaksi valitaan CCS:n Target-valikosta Debug Active Project. Tämä käynnistää debuggerin, jolloin testikoodi käännetään ja binäärit siirretään kohdemikrokontrollerille.
Koodin suoritus käynnissä (kuva suurenee klikkaamalla)
Koodin suoritus aloitetaan Target-valikon Run-komennolla (pikanäppäin F8). Kun ohjelman suoritus alkaa, pitäisi LaunchPadin LED1:n (punainen ledi) syttyä ja sammua noin 0,5 sekunnin välein. Mikäli näin tapahtuu, kaikki toimii niin kuin pitääkin.
Ensimmäinen LaunchPad-ohjelmani!
Yhteenveto
LaunchPad on varteenotettava vaihtoehto harrastemielessä esimerkiksi Arduino-alustoille erittäin huokean hintansa takia. Vaikka MSP430-sarjan mikrokontrollereista löytyy esimerkiksi flash-muistia varsin vähän (1-2 kilotavua) verrattuna vaikkapa joihinkin Atmelin ATmega-mikrokontrollereihin (4-128 kilotavua), voi LaunchPadilla saada aikaan paljonkin. Virrankulutus MSP430-mikrokontrollereilla on aivan omaa luokkaansa verrattuna Atmelin tekeleisiin, joten mikäli paristokäyttöiset projektit kiinnostavat, kannattaa kääntyä ennemmin LaunchPadin kuin Arduinon puoleen. Aivan ensikertalaisille Arduino-alustat ovat kuitenkin parempia ohjelmoinnin helppoutensa puolesta (useita käyttövalmiita kirjastoja ja funktioita).
Mikäli LaunchPadin kanssa haluaa säätää esimerkiksi Linuxilla tai vaikkapa Mac OS X:llä, kannattaa tutustua toiseen Ruuvipenkin oppaaseen, jossa asennetaan kehitysympäristö kohdilleen Linux-käyttöjärjestelmässä.
Tämän oppaan on tarkoitus olla se ensimmäinen tietolähde, joka kannattaa selata läpi LaunchPad-alustaan tutustuttaessa. Kun perusasiat ovat kunnossa, voi LaunchPadin mukana tulleilla mikrokontrollereilla testailla aina vain haastavampia projekteja. Mikäli ohjelmointiympäristön, itse koodin tai minkä tahansa muun kanssa ilmeni ohjeita seuratessa ongelmia, kannattaa kysäistä apua suoraan oppaan kommenteissa tai vaihtoehtoisesti Ruuvipenkin foorumilla. Kaikki muukin palaute on tietysti tervetullutta ja toivottavaakin.



























8 kommenttia
Hahaa, noniin, enään odotellaan LaunchPadia, jos jostain sellainen sattuisi käteen! ;)
Insomniumer: Erittäin nopeaa toimintaa! Kommentoimassa keskellä yötä neljä minuuttia artikkelin julkaisun jälkeen ;)
Onkohan tolle MSP:lle olemassa mitään opensource kehitysympäristöä? IAR on kyllä hyvä paketti, mutta kun toi kickstartti taitaa olla rajoitettu. Ja veikkaan, että ihan töiden tekeminen kielletään lisenssiehdoissa.
Löytyy, tosin vain gcc toolchain, nimeltään mspgcc. Se on kuitenkin suht helppo integroida esim. eclipseen tai code::blocks:iin(jota en itse ole kokeillut) Tässä vähän linkkejä:
http://www.develissimo.net/tutorial-en.html opas mspgcc + eclipse kehistysympäristön asettamiseen linuxissa, soveltuvin osin pätee myös windowsille.
http://homepage.hispeed.ch/py430/mspgcc/index.html tuolta löytyy yleinen mspgcc + eclipse tutoriaali, sieltä saa ladattua myös pluginin, jolla mspgcc projekteja voi luoda suoraan.
http://mspgcc.sourceforge.net/ tuossa itse toolchain, perustuu gcc 3xx:ään.
http://mspgcc4.sourceforge.net/ uuteen gcc 4xx versioon perustava porttaus, joka tukee myös uudempia kontrollereita. Windowsille on ainakin osittain saatavilla binäärit, kääntäminen linuxissa on helppoa.
ja lopuksi vielä
http://mspdebug.sourceforge.net/index.html debuggausohjelma, jota voi käyttää gdb:n kanssa tai yksinään.
Acce: Hyviä linkkejä. Naputtelen jossain vaiheessa oppaan MSPGCC:n käytöstäkin, kunhan ehdin.
Artikkeli LaunchPad-kehitysympäristön kasaamisesta Linuxissa löytyy täältä:
http://www.ruuvipenkki.fi/2010/10/23/launchpad-kehitysymparisto-linuxissa
Onkos tähän oppaaseen tulossa jatkoa ? On pikkasen (=paljonkin minulle)moni
mutkaisempi tuo studio v4 verrattuna arduinoon 0022,mutta kun tuli hommattua noita
launchpad useampi kappale,niin tahto ja halu olisi kova päästä niitä myös hyödyntämään kunnolla.
Agelius: Valitettavasti en ole ehtinyt säätää MSP430-prossujen kanssa juurikaan, joten ainakaan tällä hetkellä aiheesta ei ole mitään kirjoitettavaa. Harrasteprojektit ovat liittyneet viime aikoina enemmän tai vähemmän ARM Cortex-M3 -mikrokontrollereihin...