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
Piirin datalehdet http://www.ti.com/lit/ug/slau144i/slau144i.pdf
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.
Ite käytän IAR kääntäjää.
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
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
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?
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…?
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.
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.
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”