Launchpadilla aloitus

Eli taas apu kaivataan.
Sain vihdoin launcpadin toimimaan. Arduinolla olen jo jotain koodaillutkin mutta nyt launcpadin koodista en ymmärrä yhtään mitään. Olen tehnyt tuon Laurin esimerkin ja TI:nkin mutta ei koodista en ymärrä oikein yhtään.

Koodin ymmärtämis oppaalle olusi tarvetta, mutta kyselempä alkuun tärkeimpiä.

Mitä aika arvoa nämä pysäytys osiot on? Arduinossahan käytettiin millisekuntteja.

Entäs pinnit. Arduinossa sekin oli niin helppoa, pin4 HiGH, jne. Kuinka lätkin näitä launcpadilla päälle ja pois?

Löytyykö launhpadille mitään opusta josta löytyy apua?

Arduino oli tehty piilottamaan kaikki rautaläheiseen koodaukseen liittyvät haasteet, joita olis just tollasella pikku alustalla parempi opetella, ennekuin siirrytään ARM piireihin tai sitten tuo lauchpad on just sopiva tuon opetteluun. Prossa ei ole läheskään niin paha mitä ARM.

Tuosta koodin ymmärtämisestä. Olitko lukenut AVR:lle kirjoitettua artikkelia miten käytetään suoraan tuota AVR:n rautaa C kielellä. Tuossa on otettu lähtökohdaksi Opensource ympäristä, missä joutuu myös ite tekemään makefilen. Tätä ei tartte murehtia Launchpadin kohtiilla. CCS ja IAR osaa ite kasata makefilen ja linkkeri tiedoston.
http://www.ruuvipenkki.fi/foorumi/viewtopic.php?f=15&t=169

Kun tuon olet lukenut, niin sitte vois syventyä tähän dokkariin. Suosittelen haun käyttöä ainoastaan tarvittaville asioille. Opus about 650 sivua :slight_smile:
Piirin datalehdet http://www.ti.com/lit/ug/slau144i/slau144i.pdf

Esittely alustasata ja piiristä esimerkeillä. (yhen päivän workshop)
http://software-dl.ti.com/trainingTTO/trainingTTO_public_sw/MSP430_LaunchPad_Workshop/LaunchPad.pdf
http://processors.wiki.ti.com/index.php/Getting_Started_with_the_MSP430_LaunchPad_Workshop

Liitämpäs tähän testisoftan, jonka tein kortille (Muistas oliko suoraan IAR esimerkki tolle kortille).
Nappi P1.3 vaitaa ledien P1.0 ja P1.6 tilaa.
Normaalisti P1.0 palaa ja P1.6 sammuksissa.

Voin koittaa kirjoitella isompaakin esimerkkia, jos annatte idean. :slight_smile:
Ite käytän IAR kääntäjää.

#include "io430.h"

int main( void )
{
  
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;

  P1DIR = P1DIR_0 | P1DIR_6;
  while(1)
  {
    if((P1IN & 0x08) ==  0x08) // pinput P1.3
    {
      P1OUT |=  P1OUT_0;
      P1OUT &= ~P1OUT_6;
    }
    else
    {
      P1OUT |=  P1OUT_6;
      P1OUT &= ~P1OUT_0;
    }
       
  }
}

youtube.com/watch?v=GIUcMvukRXs

Tässä on selitetty kuinka nuo pinnit menee. Voisinko saada suomennoksen? :unamused:

Pitää vilkasta toi töitten jälkeen.

Siis olisko tuollaiselle suomenkieliselle ohjeelle tarvetta, missä käsiteltäs noitten IO pinnien ja rautalohkojen käyttö.

Ite tosiaan aina olettanu, että lontoon murre onnistuu elektroniikkaa harrastavilta kohtuu hyvin. Lähinnä kun kaikki tieto on englanniksi saatavilla.

Olisi todellakin! Kyllähän multakin englanti jotenkin sujuu mutta on niin plajon outoja sanoja… :unamused:

hutasu.net/Mikrokontrollerit … nchpad.htm

Kiitit. todella hyviä ohjeita! :smiley:
Tästä ohjeesta jäin pohtimaaan… kuinka ja mihin lisään tuon aliohjeman? http://www.hutasu.net/Mikrokontrollerit/MCU_launchpad_osa5.htm

“Alla oleva koodi lisätään pääohjelmamoduulin alle.”, eli mihin? :unamused:

Se lisätään koodin loppuun heti pääohjelman jälkeen. Eli seuraavasti

void main(void)
{
     //Pääohjelman koodi
}

// Aliohjelma Viive() joka kuluttaa CPU:n suoritusaikaa. Ns. tuhlaava rutiini.
void Viive(unsigned int aika)
{
     unsigned int x=0; // luodaan uusi muuttuja
     // asetetaan x=0, vertaillaan onko x pienempi kuin aika muuttuja
     // jos ei ole niin kasvatetaan muuttujaa x yhdellä.
    for(x=0;x<aika;x++)
    {
        // ei tehdä mitään
        // pyöritään vain silmukassa
    }
}

Kiitos taas avusta. Latailin tuon koodin ja seuraavaakin kokeilin, mutta ei viivettä ei kuulu. käytän uudempaa versiota tästä ohjelmointiympäristöstä, mutta senhän ei pitäisi vaikuttaa. Joten mistä on kyse? -Eihän tähän tuota mikro kristalliakaan tarvitse asentaa… ?

Niin, ja seuraavassa esimerkissä pitäisi ledien villkkua. Ei, ne palavat mulla vaan yhtäaikaa molemmat… Hmm…

Muuten testasikko debugata koodia ja oliko toi viive kääntynyt oikein?
Tosiaan hoksasit varmaan ton eron Arduinoon :slight_smile:

For silmukan sisälle pitää laittaa jotain tekemistä tai se voidaan optimoida pois. Tähän on varmaan helpoin lisätä NOP käsky (No Operation “Ei toimintaa”)

Ite olen yleensä pitempiin viiveisiin käyttäny timeria. Ainoastaan, jos pitää tehä alle 200 nop mittaisia viiveitä.
1: Loopilla pollataan timerin valmistumista.
2: Käynnitetään timeri ja mennään nukkuun. Timer herättää unesta ja tällöin voidaan suoraan palata keskeytyksestä takaisin.

Tosin jos timereita on vapaana :slight_smile:

Edit:
Testasin IAR kääntäjällä tota viivettä, niin perusasetuksilla ainakin käänty OK.

Juu, debugasin tuon koodin launchpadille ja ymmärtyääkseni aliohjelmakin on kääntynyt oikein. Testailin noita muitakin edessäpäin olevia testi ohjelmia (hutasu.netistä siis). yksikään ohjelma ei toimi niinkuin pitäisi, viivettä ei ole, tai muuten ledit palaa miten sattuu.

Olisikohan mahdollista… Että rikoin launchpadini kolvaillessani siihen nuo headerssit kiinni?
taidan tehdä sillä lailla että hylkään nyt tämän aliohjelman, ja laitan noille pyydetyille kohdille viivettä timerilla, eikös se toimi niinkin? Siitäpä siis, mikä on helpoin/järkevin tapa tehdä se timerilla?

Helpoin tapa on tehdä loopilla, jos on tarpeeksi isot muuttujat. Timerin käyttö vaatiin lohkon tuntemusta jonkinverran ja yleensä enemmän koodia.

Muuten jäikö se pyöriin sinne for silmukkaan sen viiveen ajaksi vai lähtikö se pois sieltä ekalla kierroksella?

Edit:
Paremmat kysymykset :slight_smile:

Ookkei, sitten yritän vielä luuppia. Sen verran vielä mainitsen eetä ihan perus blink-esimerkillä-mikä tuossa ohjelmassa oli valmiina- toimii ihan täydellisesti…

Nyt en olekkaan ihan kaikkea hoksannut, mistä tämän näen?

Olikahan F10 näppäin millä se steppaa seuraavaan käskyyn. IAR ainakin osas näyttää for käskystä osan mitä on suorittamassa.

Muuten muistit varmaan noi “unsigned” noihin muuttujiin. Muuten toi voi tulkita tuon 50000 arvon negatiiviseksi ja palata heti pois, jos sattuu menemään käännöksestä läpi.

Juu on nuo “unsignet”. Koodin siis vain kopioin tuolta sivuilta, ei mitään muutoksia.

Tuo f10 ei kyllä tehnyt mitään. Kun menen hiirellä tuon “viive” sanan päälle, kertoo ohjelma keltaisella tekstillä että on ymmärtänyt että mitä aliohjelmaa haetaan.
Mutta siitä en ole saanut selvyyttä että mistä näkee (vai näkeekö mistään) mitä se itse kontrolleri puuhaa.

Olisikohan järkevää kokeilla jotain erilaista luippia tuottamaan tuota viivettä?
Entä räplätä jotain asetuksia…?

Kumpikas sulla on IAR vai CCS?

Siis toi Debug on just se mitä kontrolleri puuhaa. Kun keskeyttää ajon, niin näkee kaikkien rekistereitten, muistin sisällön ja missä ollaan menossa ohjelmassa.

IAR tais valita heti aluks oikein tuon Debug alustan eikä simulaatiota. CCS:stä en tiedä mikä siinä on vakiona.

Muuten kun käynnistät debuggauksen, niin se pitäs ajaa automaattisesti main function ekalle riville. Siitä voi sitte lähteä run komennolla jatkamaan ajoa.

Tuollainen on alkunäkymä kun starttaa IAR debuggauksen
http://limba.kuvat.fi/kuvat/Elektroniikka/MSP-EXP430G2/IAR%20MSP430/IAR_MSP430_Debug1.jpg

ccs:ää käytän. Latasin kyllä äsken tuon iar:inkin, mutta en ole vielä hoksannut kuinka uusi proekti luodaan.

k.o. kääntäjää tuntematta, voiskos tässä olla että käännät lähdekoodin mutta sitä ei ohjelmoida itse alustaan. onko siellä missään asetuksissa program chip after compile tai jotain vastaavaa täppää tai onko kääntämiselle ja alustaan ohjelmoinnille omat nappulat.
myöskin jos löytyy verify nappula niin sillä voinee tarkistaa että prossun sisältö vastaa käännettyä.
Kopio/liitä se toimimaton lähdekoodisi tänne kokonaisuudessaan, niin joku tsekka jos siinä on joku simppeli moka.

vaihdoin tuohon iar.aan. Aluksi olikin että se ei ladannut sitä tuolle kotrollerille, juuri niinkuin sanoit, sitten vähän videoita juutuupista ja hoksasin mikä vikana. Nyt nämä koodit toimii tällä iar:alla. :slight_smile: :wink:
Tässä on myös tää juttu mikä näyttää missä koodi on menossa, ccs:ssästä en löytänyt tätä…

Törmäsin ongelmaan. Kirjoitan ja debuuggaan+lataa koodin kontrollerille. Sitten huomaan, ahaa tuo ledi ei vilku aivan niinkuin tahtoisin, muokkaan koodin, ja mitä sitten ? -En voi painaa tuolta uudestaan “debug and download”