Vanha 29.11.11, 22:44   #1 (linkki)
 
Rekisteröitynyt: 02/2009
Viestejä: 951
Arduino aloitteluvinkkejä

Tulipa nyt ostettua tuo Arduino Nano V3.0 kun halvalla sai.

Mulla ei siis ole MITÄÄN ohjelmointikokemusta.

Löysin tällaisen kirjan: Kirjan linkit, koodit ja paketit - Sulautetut - Opi rakentamaan robotteja ja muita sulautettuja järjestelmiä | Sulautetut.fi Onko ostamisen arvoinen aloittelijalle?
Onko olemassa mitään muuta Suomenkielistä kirjallisuutta mistä aloittelija voisi opiskella?

Tätä olen nyt aikeissa lueskella ja yrittää opetella: Arduino Tutorial - Learn electronics and microcontrollers using Arduino!

Sain sentään ton LED:n vilkkumaan ja nopeutta säädettyä : )

Mikä olisi paras tapa opetella ton koodin laatimista? Mitä pro:t suosittelee?

Mitään käyttöä mulla ei tolle härvelille vielä ole mutta ehkä sitten joskus jos jotain silllä sais aikaiseksi.
  Vastaa lainaten
Vanha 29.11.11, 23:00   #2 (linkki)
 
Rekisteröitynyt: 03/2010
Viestejä: 1399
Yhtä parasta tapaa ohjelmoinnin opiskeluun ei varmasti ole olemassa. Tässä kuten monessa muussakin asiassa on kaksi puolta - teoria ja käytäntö. Käytäntöä oppii parhaiten tekemällä, mutta sen tueksi kannattaa opiskella vähän teoriapuoltakin, koska kaiken keksiminen käytännössä tyhjästä on liian pitkä tie.
Tärkeimmästä päästä on opetella jokin ohjelmointikieli kunnolla. Arduinon tapauksessa siis C++, joka onkin sulautettujen yleisin ohjelmointikieli. Kaikkea ei tarvitse eikä edes kannata yrittää omaksua heti, mutta harjoittelukohteet kannattaa valita niin, että joutuu ottamaan aina kielen ja systeemin uusia piirteitä hanskaan.
Kirjat ja netti on täynnä valmiita esimerkkejä kuten Arduinon esimerkkikirjastokin. Niitä on hupaisaa kokeilla, mutta kehittymisen kannalta tärkeintä on ymmärtää kuinka esimerkkien koodi toimii jotta osaaminen siirtyy omaan päähän. Pelkkä apinoiminen ei tuota mitään lisäarvoa.
__________________
I wish to God these calculations had been executed by steam!
C. Babbage
  Vastaa lainaten
Vanha 30.11.11, 06:14   #3 (linkki)
 
Rekisteröitynyt: 11/2005
Viestejä: 1413
Onko AVR:lle olemassa edes C++ standardikirjastoa?

Itse olen koodannut lähinnä assemblyllä ja suosittelen ainakin tutustumaan siihen vaikka käytännössä käyttäisitkin enimmäkseen C:tä. En tiedä noista kirjoista, Atmelin omat datalehdet tuntuu olevan paras ja selkein tietolähde. Alussa toki aika sekavia mutta tarvitset niitä kuitenkin ennemmin tai myöhemmin.

Microsalo.comista sai joskus ilmaisen suomen kielisen C-ohjelmointikirjan AVR:lle, mutta firma on kai lopetettu eikä ne enää hostaa sitä. Muistaakseni se oli ihan ok jos jostain onnistut löytämään. Datalehdistä löytyy tiedot että mitä ominaisuuksia sen Arduinon mikrokontrolleri sisältää (esim. ajastimet), miten niitä käytetään, käskykanta, jne..

Arduinoon en ole koskaan tutustunut, mutta se on kai ihan samanlainen kuin mikä tahansa helposti lähestyttävä AVR kehitysalusta?

http://www.avrfreaks.net/
http://www.avr-asm-tutorial.net/avr_...ner/index.html
http://www.nongnu.org/avr-libc/user-manual/FAQ.html
__________________
http://vrapper.sourceforge.net/home/
http://visualstudiogallery.msdn.microsoft.com/59ca71b3-a4a3-46ca-8fe1-0e90e3f79329

Viimeinen muokkaaja jak_pdgm; 30.11.11 06:28.
  Vastaa lainaten
Vanha 30.11.11, 08:00   #4 (linkki)
 
Rekisteröitynyt: 03/2010
Viestejä: 1399
Arduinolle on toteutettu oma integroitu kehitysympäristönsä, jonka kielenä on nimenomaan C++. Taustalla on jossain muodossa gcc, winAVR ja tietty sen avr-libc -kirjasto.
Tärkeintä on, että aloittelijan ei tarvitse välittää noista asioista pätkääkään ennenkuin taito on kehittynyt tasolle, jolla ne alkavat saada sisältöä.
Missään tapauksessa en neuvoisi täydellistä newbietä aloittamaan assemblerilla koska siinä katoaa metsä heti puilta. On äärettömän antipalkitsevaa tapella alussa ikuisuus tyhjänpäiväisiltä tuntuvien detaljien kanssa saamatta mitään näkyvää aikaan. Arduinon vahvuus on juuri päinvastainen lähestyminen - toimivaa syntyy vähälläkin osaamisella ja taidon kasvaessa ymmärrys lisääntyy kunnes jonain päivänä ollaan tasolla jossa assemblerin käytössäkin voi olla jotain mieltä.
Noin yleisesti voi todeta, ettei tänä päivänä maksa vaivaa lähtökohtaisesti alkaa ratkaista ohjelmointihaasteita assemblerin tasolla. Modernit kääntäjät kuten gcc pesevät keskimääräisen koodarin optimoinnissa mennen tullen, jotkin nimenomaiset erikoistapaukset poislukien. Ainakaan siksi ei kannata väistellä jotain C tai C++ -kieliä että koodi olisi muka tiukempaa assylla. Tsekkaapa vaikka se koodinpätkä jolla ohjataan kameradollya ja jonka satuin itse kirjoittamaan Arduinolle. Linkki koodiin löytyy täältä http://murobbs.plaza.fi/elektroniikk...post1706064629 Huvittaisiko yrittää assemblerilla?
__________________
I wish to God these calculations had been executed by steam!
C. Babbage
  Vastaa lainaten
Vanha 30.11.11, 08:39   #5 (linkki)
 
Rekisteröitynyt: 12/2001
Viestejä: 4553
Lainaus:
Alkuperäinen kirjoittaja Kremmen Näytä viesti
Arduinolle on toteutettu oma integroitu kehitysympäristönsä, jonka kielenä on nimenomaan C++. Taustalla on jossain muodossa gcc, winAVR ja tietty sen avr-libc -kirjasto.
Niin jos vielä täsmennetään niin winAVR käyttää avr-gcc.

Tossa vuosia sitten kun ei oikein pelittänyt hommat ilman säätelyä jos koneelle oli asennettu winavr ja cygwin yhtäaikaa koska winavr käytti cygwiniä jolla toi avr-gcc windowssille winavr ohjelmaa varten.

Aika monihan tosta arduinosta lopulta siirtyy suoraan avr-gcc kun tulee tarve käyttää tarkemmin avr-piirin resursseja. Arduinon ympäristö kun jättää osaa piirin ominaisuuksista käyttämättä. Ja kyllähän noita arduinon kirjastoja saa revittyä irti arduinon ympäristöstä jos halua osan tehdä arduinolla totutulla tavalla.

Lainaus:
Alkuperäinen kirjoittaja jak_pdgm Näytä viesti
Microsalo.comista sai joskus ilmaisen suomen kielisen C-ohjelmointikirjan AVR:lle, mutta firma on kai lopetettu eikä ne enää hostaa sitä. Muistaakseni se oli ihan ok jos jostain onnistut löytämään. Datalehdistä löytyy tiedot että mitä ominaisuuksia sen Arduinon mikrokontrolleri sisältää (esim. ajastimet), miten niitä käytetään, käskykanta, jne..
Tunnen hyvinkin kyseisen kirjan kirjoittajan ja paljon kirjaankin liittyen tuli juteltua kun naamatusten oltiin aika paljon. Samasta kirjasta on kaksikin versiota joista vanhempi löytyy joistakin kirjastoistakin. Kirjan tarkoitus oli tukea heidän omien korttien myyntiä, mutta markkinoilta alkoi löytymään jatkuvasti halvemmalla kortteja jotka halvempia kuin komponentien saaminen kortteihin. Sittemmin tämä arduinohan on aloittelija ystävällisyydessä kehittynyt hirveästi ja sisältää paljon esimerkkejä.
Kirja oli winavr/avr-gcc tehty eikä oikein arduinon ympäristön kanssa sovellu kun arduino tekee vähän omiaan ja käyttäen lähemmin itse rekistereitä lopputulos on sillisalaattia josta ei helpolla ota selvää miksi se rekisteri lopulta asettui.
Toinen seikka on että kirjat on kirjoitettu pääasia at90s2313 ja atmega32 kontrollereille riippuen kummasta kirjasta kysymys. Atmega32, atmega128 on useampi jalkaisia kuin arduinon atmega328 ja atmega1280 vaikka muuten ovatkin samoja. Eli tämäkin saattaa aiheuttaa ongelmia aloittelevalle.

Viimeinen muokkaaja heyrst; 30.11.11 09:30.
  Vastaa lainaten
Vanha 30.11.11, 09:18   #6 (linkki)
 
Rekisteröitynyt: 12/2001
Viestejä: 909
Lainaus:
Mikä olisi paras tapa opetella ton koodin laatimista? Mitä pro:t suosittelee?

Mitään käyttöä mulla ei tolle härvelille vielä ole mutta ehkä sitten joskus jos jotain silllä sais aikaiseksi.
En ole tosiaankaan pro, kun raudan kanssa lähinnä painin. Arduinon kanssa on nyt kuitenkin tullut kikkailtua muutamassakin projektissa. Olen tykännyt, kun homma on ollut ainakin tähän asti naurettavan helppoa. Ei mene vastaavaksi säätämiseksi kuin normaali sulautettujen koodaus, vaan valmiit kirjastot ja esimerkit löytyvät helposti. Esim. jossain adc-hässäköissä saa suoraan printtailemaan tuonne serialiin ja softassa itsessään on monitori, niin helppo seurailla sieltä mitä tapahtuu.

Melkein itse lähtisin siitä, että kannattaa miettiä se oma sovellus tuolle. Pysyy motivaatio kohdallaan ja joutuu yhdistelemään valmiita esimerkkejä ja ratkomaan sovelluskohtaisia ongelmia.

Eikös sulla ollut kaikenlaisia tehoelektroniikan sovelluksia? Tuollahan saat näppärästi vaikka tehomittaukset tehtyä. Analogiasteella vääntää vaan tasot sopivaksi (esim. 0-5 v välille) ja laskee tehot tuolla. Tai sitten väännät vaihevertailijan ja lasket pätötehon ja loistehon sekä tehokertoimen. Tai vaikka tekee koko ohjaussysteemin sarjaresonanssipiiriin siten, että voi säätää pelkkää pätötehoa nupista...
  Vastaa lainaten
Vanha 30.11.11, 09:29   #7 (linkki)
 
Rekisteröitynyt: 11/2002
Viestejä: 421
Jos tarkkoja ollaan, niin Arduino ei käytä C++:aa kuten ei myöskään yleisesti AVR-gcc. AVR -gcc on C-kääntäjä ei C++ (tai ainakaan vielä vusoi sitten ollut). Arduinon kieli itsessääs saattaa olla tehty muistuttamaan C++ kieltä, olematta kuitenkaan sitä. Noissa kuitenkin on aika isoja eroja konventioiden puolella C:n ja C++:n välillä.

statreg &= ~(1<<pilkunviilaus); // poistutaan pilkunviilaustilasta :P
__________________
Pidetäänpä ne palkokasvit pois nasaalionteloista jooko? :)
-------------------------------------------------
SIK since 2003
  Vastaa lainaten
Vanha 30.11.11, 09:32   #8 (linkki)
 
Rekisteröitynyt: 12/2001
Viestejä: 4553
Lainaus:
Alkuperäinen kirjoittaja fabo Näytä viesti
Jos tarkkoja ollaan, niin Arduino ei käytä C++:aa kuten ei myöskään yleisesti AVR-gcc. AVR -gcc on C-kääntäjä ei C++ (tai ainakaan vielä vusoi sitten ollut). Arduinon kieli itsessääs saattaa olla tehty muistuttamaan C++ kieltä, olematta kuitenkaan sitä. Noissa kuitenkin on aika isoja eroja konventioiden puolella C:n ja C++:n välillä.

statreg &= ~(1<<pilkunviilaus); // poistutaan pilkunviilaustilasta :P
Niin eiköhän siitä saa viitteitä jo siitä että kääntäjä on gcc eikä g++
  Vastaa lainaten
Vanha 30.11.11, 09:48   #9 (linkki)
 
Rekisteröitynyt: 11/2002
Viestejä: 421
Niin mutta kun täällä väitettiin, että AVR:iä ohjelmoidaan pääsääntöisesti C++:lla ja en ainakaan itse olie törmännyt vielä ainakaan yhteenkään implementaatioon C++ AVR kääntäjästä. (Lukuunottamatta tätä arduinokötöstystä (sic) josta en ole koskaan opikein innostutut, ja joka sekään ei ole varsinaisesti C++:aa)

Lainaus:
Wikipedia:

Arduino hardware is programmed using a Wiring-based language (syntax and libraries), similar to C++ with some simplifications and modifications, and a Processing-based integrated development environment
__________________
Pidetäänpä ne palkokasvit pois nasaalionteloista jooko? :)
-------------------------------------------------
SIK since 2003
  Vastaa lainaten
Vanha 30.11.11, 10:24   #10 (linkki)
 
Rekisteröitynyt: 03/2010
Viestejä: 1399
No se on vain hyvä ettei Arduinon kääntäjä ole täysimittainen C++ -toteutus koska Stroustrupin ja kumppanien viimeiset keksinnöt on aika kaukana siitä mitä sulautettujen ohjelmistonkehityksessä oikeasti tarvitaan. Itseäni ei hirveästi edes kiinnosta kinastella mikä on puhdasoppisesti mitäkin, sillä ei ole merkitystä käytännön tasolla. Ohjelmoijalle Arduinon syntaksi näyttäytyy selkeästi C++:na, olkoonkin että sieltä varmasti puuttunee esim templatet ja siitä kehittyneemmät ominaisuudet, joille ei Arduinomaailmassa varmaan ole mitään käyttöä. Mutta C++ syntaksi varmuudella toimii ja komeasti, koskapa olen sillä koodannut.

Lainaus:
Niin eiköhän siitä saa viitteitä jo siitä että kääntäjä on gcc eikä g++
No ei mitenkään nimenomaisesti. gcc kääntää C++-sorsaa siinä kuin g++kin, tosin ei linkkaa mukaan automaattisesti stdc++:aa. Jonka senkin saa linkkerin direktiivillä mukaan jos haluaa. Useimmiten vaan tuskin haluaa, koska standardi-C++ -kirjastossa on aika vähän useimpia sulautetun sovelluksen koodaajia lämmittäviä juttuja.
Muutama muukin pikku ero on, minkä takia ehkä kannattaa valita g++ jos se käy helposti, mutta gcc kyllä toimii.
__________________
I wish to God these calculations had been executed by steam!
C. Babbage
  Vastaa lainaten
Vanha 30.11.11, 11:23   #11 (linkki)
 
Rekisteröitynyt: 12/2004
Viestejä: 2796
Alkuun kannattanee tutustua valmiisiin esimerkkeihin, koittaa päästä niiden toiminnasta kärryille ja alkaa muokata ja yhdistellä niitä sekä ehdotomasti keksiä jotain oikeita toteutuksia mitä alkaa koodaamaan. Noissa arduinon vakioesimerkeissä on suht mukavasti esitelty ko alustan perustoiminnot millä pääseekin jo pitkälle.
Arduinon kanssa ei ehkä alkuun kannata vaivata päätään Atmellin datalehdillä tai assemblerilla.
Nuo ladyadan tutoriaalit on aloittelijalle hyvää luettavaa, niissä perehtydään sekä raudassa että ohjelmoinnissa perusjuttuihin hyvinkin.
__________________
Super ZX Hyper 8Ghz RISC 2000Gb raid-x20
  Vastaa lainaten
Vanha 30.11.11, 11:41   #12 (linkki)
 
Rekisteröitynyt: 11/2005
Viestejä: 1413
Lainaus:
Alkuperäinen kirjoittaja Kremmen Näytä viesti
Arduinolle on toteutettu oma integroitu kehitysympäristönsä, jonka kielenä on nimenomaan C++. Taustalla on jossain muodossa gcc, winAVR ja tietty sen avr-libc -kirjasto.
Tärkeintä on, että aloittelijan ei tarvitse välittää noista asioista pätkääkään ennenkuin taito on kehittynyt tasolle, jolla ne alkavat saada sisältöä.
Missään tapauksessa en neuvoisi täydellistä newbietä aloittamaan assemblerilla koska siinä katoaa metsä heti puilta. On äärettömän antipalkitsevaa tapella alussa ikuisuus tyhjänpäiväisiltä tuntuvien detaljien kanssa saamatta mitään näkyvää aikaan. Arduinon vahvuus on juuri päinvastainen lähestyminen - toimivaa syntyy vähälläkin osaamisella ja taidon kasvaessa ymmärrys lisääntyy kunnes jonain päivänä ollaan tasolla jossa assemblerin käytössäkin voi olla jotain mieltä.
Noin yleisesti voi todeta, ettei tänä päivänä maksa vaivaa lähtökohtaisesti alkaa ratkaista ohjelmointihaasteita assemblerin tasolla. Modernit kääntäjät kuten gcc pesevät keskimääräisen koodarin optimoinnissa mennen tullen, jotkin nimenomaiset erikoistapaukset poislukien. Ainakaan siksi ei kannata väistellä jotain C tai C++ -kieliä että koodi olisi muka tiukempaa assylla. Tsekkaapa vaikka se koodinpätkä jolla ohjataan kameradollya ja jonka satuin itse kirjoittamaan Arduinolle. Linkki koodiin löytyy täältä http://murobbs.plaza.fi/elektroniikk...post1706064629 Huvittaisiko yrittää assemblerilla?
Siksi viestissäni lukikin että "suosittelen ainakin tutustumaan siihen vaikka käytännössä käyttäisitkin enimmäkseen C:tä.", ts. alkeellisestakin assembly-osaamisesta on usein hyötyä vaikkei sitä oikeasti juurikaan käyttäisi. Itse tosin olen koodannut sillä vain siksi että osaisin sitä paremmin, eli se on palkitsevaa mutta epäkäytännöllistä. Mutta tietysti jokaisen kannattaa tehdä sellaisia asioita mitkä vaikuttaa kiinnostavilta.

Täytyy myös muistaa että joku 8-bit AVR ei ole sama asia kuin moderni X86 prosessori, ts. tehokkaan assemblyn käsinkirjoittaminen on vielä käytännössä mahdollista. En nyt suosittele että aloittaja alkaisi väkisin vääntämään ledivilkuttelijoita assylla, mutta turha sen vaikeutta on liioitellakaan. Kouluissakin sitä opetetaan lähes aloittelijoille ja melko hyvin tuntuu porukka oppivan jos vaan motivaatiota löytyy.
__________________
http://vrapper.sourceforge.net/home/
http://visualstudiogallery.msdn.microsoft.com/59ca71b3-a4a3-46ca-8fe1-0e90e3f79329

Viimeinen muokkaaja jak_pdgm; 30.11.11 12:14.
  Vastaa lainaten
Vanha 30.11.11, 12:57   #13 (linkki)
 
Rekisteröitynyt: 11/2005
Viestejä: 1413
Lainaus:
Alkuperäinen kirjoittaja heyrst Näytä viesti
Tunnen hyvinkin kyseisen kirjan kirjoittajan ja paljon kirjaankin liittyen tuli juteltua kun naamatusten oltiin aika paljon. Samasta kirjasta on kaksikin versiota joista vanhempi löytyy joistakin kirjastoistakin. Kirjan tarkoitus oli tukea heidän omien korttien myyntiä, mutta markkinoilta alkoi löytymään jatkuvasti halvemmalla kortteja jotka halvempia kuin komponentien saaminen kortteihin. Sittemmin tämä arduinohan on aloittelija ystävällisyydessä kehittynyt hirveästi ja sisältää paljon esimerkkejä.
Kirja oli winavr/avr-gcc tehty eikä oikein arduinon ympäristön kanssa sovellu kun arduino tekee vähän omiaan ja käyttäen lähemmin itse rekistereitä lopputulos on sillisalaattia josta ei helpolla ota selvää miksi se rekisteri lopulta asettui.
Toinen seikka on että kirjat on kirjoitettu pääasia at90s2313 ja atmega32 kontrollereille riippuen kummasta kirjasta kysymys. Atmega32, atmega128 on useampi jalkaisia kuin arduinon atmega328 ja atmega1280 vaikka muuten ovatkin samoja. Eli tämäkin saattaa aiheuttaa ongelmia aloittelevalle.
Okei, minulla on juurikin se Microsalon vanhempi kehitysalusta käytössä.

Luulin tosiaan että tuo Arduino on vain valmiiksi paketoitu kehityskortti ja helposti lähestyttävä IDE sekä kasa valmiita C kirjastoja, no tietääpähän tuonkin.
__________________
http://vrapper.sourceforge.net/home/
http://visualstudiogallery.msdn.microsoft.com/59ca71b3-a4a3-46ca-8fe1-0e90e3f79329
  Vastaa lainaten
Vanha 30.11.11, 13:55   #14 (linkki)
 
Rekisteröitynyt: 10/2006
Viestejä: 3461
Lainaus:
Alkuperäinen kirjoittaja Kremmen Näytä viesti
Tärkeintä on, että aloittelijan ei tarvitse välittää noista asioista pätkääkään ennenkuin taito on kehittynyt tasolle, jolla ne alkavat saada sisältöä.
Missään tapauksessa en neuvoisi täydellistä newbietä aloittamaan assemblerilla koska siinä katoaa metsä heti puilta. On äärettömän antipalkitsevaa tapella alussa ikuisuus tyhjänpäiväisiltä tuntuvien detaljien kanssa saamatta mitään näkyvää aikaan. Arduinon vahvuus on juuri päinvastainen lähestyminen - toimivaa syntyy vähälläkin osaamisella ja taidon kasvaessa ymmärrys lisääntyy kunnes jonain päivänä ollaan tasolla jossa assemblerin käytössäkin voi olla jotain mieltä.
Onkos noissa Basicilla ohjelmoitavissa mikrokontrollerisarjoissa/-kehitysympäristöissä mitään järkeä? Hintaa näyttäisi ainakin olevan enemmän kuin Arduinolla. Arduinon parhaita ominaisuuksiahan on juuri "open source"-lähestymistapa.
  Vastaa lainaten
Vanha 30.11.11, 14:24   #15 (linkki)
 
Rekisteröitynyt: 12/2001
Viestejä: 4553
Lainaus:
Alkuperäinen kirjoittaja jak_pdgm Näytä viesti
Okei, minulla on juurikin se Microsalon vanhempi kehitysalusta käytössä.

Luulin tosiaan että tuo Arduino on vain valmiiksi paketoitu kehityskortti ja helposti lähestyttävä IDE sekä kasa valmiita C kirjastoja, no tietääpähän tuonkin.
No niinhän se onkin. Mutta ymmärrät varmaan mitä tapahtuu jos valmiit kirjastot käsittelee samalla rekistereitä kuin yrität niitä itsekin käsitellä.
Esim. lähtiessä timereita, pwm, ad-muuntimia jne käsittelemään niin eihän arduino tue kaikkia hardware ominaisuuksia edes ja tekee joitain softalla mitä voisi tehdä raudalla. Saa olla todella tarkkana mitä arduino käyttää ja missä.
Toi WinAVR mikä Microsalolla käytössä tekstieditorin kanssa ei sisällä oikein mitään kirjastoja ja itse rekistereitä asetelles pysyt kokoaika ajan tasalla mitä on käytössä ja mitä ei ja miten. Toki voisit tehdä kirjaston tai kopioida arduinosta kirjaston jolla esim. portin suunta määritellään arduinon komennolla pinMode(13, OUTPUT); eikä WinAVR kaltaisesti DDRB |= 0x20;.
Ongelmaa ei vielä tämmöisissä yksinkertaisissa synny mutta siinä vaiheessa kun aletaan enemmän rekistereidenkuten noiden mitä tuolla luettelin aiemmin kanssa pelata alkaa iso vaiva alkaa selvittämään miten arduinon kirjastot on toteuttaneet toimintonsa. Ja siinä vaiheessa pitää alkaa tutkimaan arduinon kirjastojen koodia kunnen ole ainakaan itse löytänyt niin tarkkaa informaatiota kunkin kirjaston toiminnasta.
  Vastaa lainaten
Vanha 30.11.11, 14:53   #16 (linkki)
 
Rekisteröitynyt: 02/2009
Viestejä: 951
Erittäin aloittelijalle sopivaa tekstiä tähänmennessä
Mitä on assembler, avr, gcc ym.?

Tehonmittauslaitteiden sijaan aloittaisin mielummin siitä että saan napista lampun syttymään ja ymmärtää mitä ne koodissa olevat "void, setup, pinmode,= (){}; ym. jutut tarkoittaa ja milloin mitäkin pitää kirjoittaa.

Eipä tässä vielä osaa ihmeitä kysellä kun en ole vielä mitään tolla tehnyt.
täytyy noita tutorialeita eka lueskella ja sit vaikka yrittää keksiä ite joku "napista valo päälle"-koodi.

Onko jotain opusta missä selvitettäis noiden käskyjen merkitystä, vaikka vielä Suomenkielellä?
  Vastaa lainaten
Vanha 30.11.11, 15:01   #17 (linkki)
 
Rekisteröitynyt: 11/2005
Viestejä: 1413
Lainaus:
Alkuperäinen kirjoittaja heyrst Näytä viesti
No niinhän se onkin. Mutta ymmärrät varmaan mitä tapahtuu jos valmiit kirjastot käsittelee samalla rekistereitä kuin yrität niitä itsekin käsitellä.
Esim. lähtiessä timereita, pwm, ad-muuntimia jne käsittelemään niin eihän arduino tue kaikkia hardware ominaisuuksia edes ja tekee joitain softalla mitä voisi tehdä raudalla. Saa olla todella tarkkana mitä arduino käyttää ja missä.
Toi WinAVR mikä Microsalolla käytössä tekstieditorin kanssa ei sisällä oikein mitään kirjastoja ja itse rekistereitä asetelles pysyt kokoaika ajan tasalla mitä on käytössä ja mitä ei ja miten. Toki voisit tehdä kirjaston tai kopioida arduinosta kirjaston jolla esim. portin suunta määritellään arduinon komennolla pinMode(13, OUTPUT); eikä WinAVR kaltaisesti DDRB |= 0x20;.
Ongelmaa ei vielä tämmöisissä yksinkertaisissa synny mutta siinä vaiheessa kun aletaan enemmän rekistereidenkuten noiden mitä tuolla luettelin aiemmin kanssa pelata alkaa iso vaiva alkaa selvittämään miten arduinon kirjastot on toteuttaneet toimintonsa. Ja siinä vaiheessa pitää alkaa tutkimaan arduinon kirjastojen koodia kunnen ole ainakaan itse löytänyt niin tarkkaa informaatiota kunkin kirjaston toiminnasta.
Niin tarkoitin "kasalla kirjastoja" erillisiä apukirjastoja, tuossahan on näköjään ohjelman entry pointitkin määritelty kokonaan uudestaan (ainakin siellä oli jotain setup ja loop juttuja) eli se arduino toimii kai jonkinlaisena boottiloaderina.

Pystyykö tuo muuten suorittamaan ohjelmia muistikortilta tms. ulkoisesta muistista? Ajattelin vaan lisätä sen omaan käyttisprojektiini mutta se vaatii myös tuen tiedostoille enkä ole varma onko siitä hyötyä, toteutan luultavasti joka tapauksessa.
__________________
http://vrapper.sourceforge.net/home/
http://visualstudiogallery.msdn.microsoft.com/59ca71b3-a4a3-46ca-8fe1-0e90e3f79329
  Vastaa lainaten
Vanha 30.11.11, 15:29   #18 (linkki)
 
Rekisteröitynyt: 12/2001
Viestejä: 4553
Lainaus:
Alkuperäinen kirjoittaja jak_pdgm Näytä viesti
Niin tarkoitin "kasalla kirjastoja" erillisiä apukirjastoja, tuossahan on näköjään ohjelman entry pointitkin määritelty kokonaan uudestaan (ainakin siellä oli jotain setup ja loop juttuja) eli se arduino toimii kai jonkinlaisena boottiloaderina.

Pystyykö tuo muuten suorittamaan ohjelmia muistikortilta tms. ulkoisesta muistista? Ajattelin vaan lisätä sen omaan käyttisprojektiini mutta se vaatii myös tuen tiedostoille enkä ole varma onko siitä hyötyä, toteutan luultavasti joka tapauksessa.
Boottiloaderi on kyllä ihan eri juttu, mutta onhan se ohjelma mikä kirjoitetaan arduinon idessä vain osa siitä millainen ohjelma käännetään. Ja saa aika etsimisellä hakea niitä ide:n näkymättömästi lisäämiä koodeja ilmeisesti /usr/share/arduino/hardware/arduino/cores/arduino hakemistosta kun puolestaan koodiin itse kirjoitettavat kirjastot taitavat olla /usr/share/arduino/libraries hakemistossa.

Tohon ulkopuoliselta muistikortilta suoritettavaan niin ei onnistu. Ja ajatus tasollakin sram on niin pieni että käyttöjärjestelmän sitä manipuloimalla ei paljon aikaa saisi sen lisäksi että se olisi helkkarin monimutkaista. Kun muistetaan että juuri vähäisen srammin takia kooditkin pyritään pilkkomaan mahdollisimman pieniksi toiminnallisiksi osiksi ja välttämään globaaleja muuttujia.
Jos käyttöjärjestelmää ja muistikortilla olevia ohjelmia haluat on siihen parempi vaikka tämmöiset BeagleBoard.org - default

Toisaalta jos kontrollereissa haluat pysyä niin ebayssa on vaikka millä mitalla halpoja CY7C68013A pohjaisia kortteja. Ovat 8051 tyylisiä ja sisältävät eeprommin. Johon 0xC2 komennolla saa lataamaan eeprommin sisällön muistiinsa.

Viimeinen muokkaaja heyrst; 30.11.11 15:46.
  Vastaa lainaten
Vanha 30.11.11, 15:33   #19 (linkki)
 
Rekisteröitynyt: 11/2005
Viestejä: 1413
Lainaus:
Alkuperäinen kirjoittaja heyrst Näytä viesti
Boottiloaderi on kyllä ihan eri juttu, mutta onhan se ohjelma mikä kirjoitetaan arduinon idessä vain osa siitä millainen ohjelma käännetään. Ja saa aika etsimisellä hakea niitä ide:n näkymättömästi lisäämiä koodeja ilmeisesti /usr/share/arduino/hardware/arduino/cores/arduino hakemistosta kun puolestaan koodiin itse kirjoitettavat kirjastot taitavat olla /usr/share/arduino/libraries hakemistossa.

Tohon ulkopuoliselta muistikortilta suoritettavaan niin ei onnistu. Ja ajatus tasollakin sram on niin pieni että käyttöjärjestelmän sitä manipuloimalla ei paljon aikaa saisi sen lisäksi että se olisi helkkarin monimutkaista. Kun muistetaan että juuri vähäisen srammin takia kooditkin pyritään pilkkomaan mahdollisimman pieniksi toiminnallisiksi osiksi ja välttämään globaaleja muuttujia.
Jos käyttöjärjestelmää ja muistikortilla olevia ohjelmia haluat on siihen parempi vaikka tämmöiset BeagleBoard.org - default
Ei sitä srammilta ole tarkoitus ajaakaan (tai ole edes mahdollista muuten kuin tulkattuna), vaan ihan ohjelmamuistista. Tietysti se ohjelma pitää ensin kopioida ulkoisesta muistista (sd-kortti, PC:ltä sarjaportin kautta, jne..) sinne ohjelmamuistiin.

Menee kyllä vähän threadin aiheen ulkopuolelle, mutta toivottavasti ei vielä hirveästi haittaa.
__________________
http://vrapper.sourceforge.net/home/
http://visualstudiogallery.msdn.microsoft.com/59ca71b3-a4a3-46ca-8fe1-0e90e3f79329
  Vastaa lainaten
Vanha 30.11.11, 15:39   #20 (linkki)
 
Rekisteröitynyt: 12/2001
Viestejä: 4553
Lainaus:
Alkuperäinen kirjoittaja jak_pdgm Näytä viesti
Ei sitä srammilta ole tarkoitus ajaakaan (tai ole edes mahdollista muuten kuin tulkattuna), vaan ihan ohjelmamuistista. Tietysti se ohjelma pitää ensin kopioida ulkoisesta muistista (sd-kortti, PC:ltä sarjaportin kautta, jne..) sinne ohjelmamuistiin.

Menee kyllä vähän threadin aiheen ulkopuolelle, mutta toivottavasti ei vielä hirveästi haittaa.
Noh toi edelliseen viestiin lisäämäni maininta CY7C68013A piiristä sopii tähän tarkoitukseen ehkä paremmin sisältäen 0xC0 tilan jolla ohjelma ladataan usb-kautta muistiin kun taas 0xC2 lataa eeprommilta muistiin. Hakemalla EZ-USB_TRM2.pdf löydät tarkemmin kuten piirin datalehdestäkin.
Samaista piiriä käytetään logiikka-analysaattorina juuri 0xC0 tilassa sovelluksen ladaten logiikka-analysaattori firmwaren korttiin kun sovellus käynnistetään. Eli siksi ebayn tapauksessa korttien yhteydessä paljon logiikka-analysaattori mainintaa. Piiri on kuitenkin kontrolleri ja 8051 kaltainen.

Atmelin kontrollerien kanssa puolestaan tarkoittaa uudelleen ohjelmoimista. Ja jos sitä ilman pc-konetta meinaa tehdä tarviit toisen kontrollerin mikä hoitaa kontrollerin uudelleen ohjelmoimisen. Se mitä bootloaderina voisi tehdä ohjelmointia on melkosen rajattua.

Viimeinen muokkaaja heyrst; 30.11.11 15:57.
  Vastaa lainaten
Vanha 30.11.11, 16:07   #21 (linkki)
 
Rekisteröitynyt: 11/2005
Viestejä: 1413
Lainaus:
Alkuperäinen kirjoittaja heyrst Näytä viesti
Noh toi edelliseen viestiin lisäämäni maininta CY7C68013A piiristä sopii tähän tarkoitukseen ehkä paremmin sisälteän 0xC0 tilan jolla ohjelma ladataan usb-kautta muistiin kun taas 0xC2 lataa eeprommilta muistiin. Hakemalla EZ-USB_TRM2.pdf löydät tarkemmin kuten piirin datalehdestäkin.

Atmelin kontrollerien kanssa puolestaan tarkoittaa uudelleen ohjelmoimista. Ja jos sitä ilman pc-konetta meinaa tehdä tarviit toisen kontrollerin mikä hoitaa kontrollerin uudelleen ohjelmoimisen. Se mitä bootloaderina voisi tehdä ohjelmointia on melkosen rajattua.
Joo minulla on siis simppeli moniajokäyttis (opinnäytetyö) ja ajattelin myöhemmin lisätä siihen tuen tiedostoille (esim. joku lcd-näytön "ajuri" olisi abstrahoitu tiedostoksi ja näytölle voisi kirjoittaa tyyliin file = fopen("/tty_lcd"); fwrite(file, "heihei ja moimoi\n");

Siitä tuli mieleen että jos siinä olisi tiedostot, niin ohjelmia voisi myös suorittaa tyyliin exec("/muistikortti/ohjelma.bin"); joka lukisi ohjelman kontrollerin muistiin ja alkaisi suorittaa sitä uutena taskina.

LPM ja SPM käskyillä pystyy lukemaan/kirjoittamaan ohjelmamuistia, ei tosin tavu kerrallaan kuten EEPROM:ia koska ohjelmamuistihan on flashia. Sitä en tiedä mihin noita käskyjä yleensä käytetään, mutta kai niillä itseään muokkaavia ohjelmia pystyy tekemään.

Mitään erityistä järkeähän tuossa ei varmaan ole jos ajattelee tyypillisiä AVR:n sovelluksia. Tosin voisi sillä tietty vaikka vaihtaa jonkin laitteen softan ottamalla muistikortin pois ja laittamalla toisen tilalle. Tai jossain radion sisältävässä sovelluksessa vaikka päivittämään laitteen softan langattomasti.
__________________
http://vrapper.sourceforge.net/home/
http://visualstudiogallery.msdn.microsoft.com/59ca71b3-a4a3-46ca-8fe1-0e90e3f79329
  Vastaa lainaten
Vanha 30.11.11, 16:18   #22 (linkki)
 
Rekisteröitynyt: 03/2010
Viestejä: 1399
Lainaus:
Alkuperäinen kirjoittaja HSuomi Näytä viesti
Erittäin aloittelijalle sopivaa tekstiä tähänmennessä
Mitä on assembler, avr, gcc ym.?

Tehonmittauslaitteiden sijaan aloittaisin mielummin siitä että saan napista lampun syttymään ja ymmärtää mitä ne koodissa olevat "void, setup, pinmode,= (){}; ym. jutut tarkoittaa ja milloin mitäkin pitää kirjoittaa.

Eipä tässä vielä osaa ihmeitä kysellä kun en ole vielä mitään tolla tehnyt.
täytyy noita tutorialeita eka lueskella ja sit vaikka yrittää keksiä ite joku "napista valo päälle"-koodi.

Onko jotain opusta missä selvitettäis noiden käskyjen merkitystä, vaikka vielä Suomenkielellä?
Aika ripeästi degenereoitui tämäkin keskustelu taas nippelitasolle. Juuri sellaisia topikkeja siinä Arduinossa on pyritty välttämään, minun mielestäni varsin onnistuneesti.

Tärkeätä on ymmärtää asia mihin täälläkin kyllä on jo jollain tasolla viitattu, eli että ohjelmakoodi muodostuu käytännössä aina käytetyn kielen lauserakenteista (varatut avainsanat + sallitut ilmaisut), sekä erilaisten kirjastojen sisältämistä toiminnoista. Aliohjelman (funktio, proseduuri) käsite pitää omaksua aika nopeasti koska ymmärtämättä sitä ei mistään tule oikein mitään. Onneksi asia ei ole mitenkään erityisen vaikea ja on selitetty varmaan tuhannessa eri lähteessä jotka ovat parin googlen päässä. Jos otetaan esimerkiksi nuo mainitsemasi termit niin ne menee näin:

"void" on C ja C++ kielen varattu sana ja tarkoittaa samaa kuin "tyhjä; määrittelemätön". Ikävää että siihen törmää heti alussa, koska sen syvempi olemus hahmottuu paremmin vasta kun ymmärtää muutamia muita juttuja alle. Aika nopeasti kannattaa tutustua C ja C++ kielien kielioppiin johon löytyy kyllä netistä matskua vaikka kuinka, ehkä jopa kotimaankielistä.

"setup" tai tarkasti ottaen "setup()" on tämänniminen proseduuri eli aliohjelma. Ohjelman kirjoittaja voi vapaasti koota usein toistuvia tai muuten yhteen haluttuja toimintoja itse nimeämäänsä aliohjelmaan ja "kutsua" sitä toisalta ohjelmasta käsin mainitsemalla sen nimeltä. Arduinossa kuten muuallakin kaikki kirjastojen sisältämät toiminnot on näin toteutettu. setup() on Arduinossa tarjolla jotta ohjelman kirjoittaja voi siihen määritellä käynnistyksessä kertalleen suoritettavia toimintoja. Arduinon ohjelmarunko toimii siten, että käynnistyksessä aliohjelmaa setup() kutsutaan yhden kerran ja sen jälkeen aliohjelmaa loop() toistuvasti maailman tappiin. Varsinainen ohjelmakoodi on siis loop()in sisällä.

"pinMode()" on yksi Arduinon vakiokirjaston toiminto (aliohjelma) jolla asetetaan halutun signaalilinjan suunta ja toimintatapa (joko tulo tai lähtösignaali).

Arduinon vakiokirjaston kuvaus löytyy täältä:
Arduino - Reference
Siellä on nämä mainitut ja paljon muuta dokumentoituna, mutta valitettavasti ei suomeksi.
__________________
I wish to God these calculations had been executed by steam!
C. Babbage
  Vastaa lainaten
Vanha 30.11.11, 16:34   #23 (linkki)
 
Rekisteröitynyt: 11/2005
Viestejä: 1413
Vähän heikosti näyttää löytyvän suomen kielistä materiaalia nimenomaan Arduinosta, mutta ohjelmoinnin perusteita voi tietysti opetella ihan Windows-ympäristössäkin. Ohjelmointiputkassa ym. paikoissa on ainakin jonkinlaisia C/C++ oppaita ja kirjojakin löytyy kirjastoista.
__________________
http://vrapper.sourceforge.net/home/
http://visualstudiogallery.msdn.microsoft.com/59ca71b3-a4a3-46ca-8fe1-0e90e3f79329
  Vastaa lainaten
Vanha 30.11.11, 16:35   #24 (linkki)
 
Rekisteröitynyt: 12/2001
Viestejä: 4553
Lainaus:
Alkuperäinen kirjoittaja jak_pdgm Näytä viesti
LPM ja SPM käskyillä pystyy lukemaan/kirjoittamaan ohjelmamuistia, ei tosin tavu kerrallaan kuten EEPROM:ia koska ohjelmamuistihan on flashia. Sitä en tiedä mihin noita käskyjä yleensä käytetään, mutta kai niillä itseään muokkaavia ohjelmia pystyy tekemään.
Olen ollut käsityksessä että kyseisiä voi käyttää vain bootloaderin tapauksessa missä bootloaderilla ohjelmoidaan muu osa flashista. Mut täytyypä tutkiskella tarkempaan.

Datalehdestä bootloaderin kohdalta..
Application Section
Lainaus:
The Application section can never store any Boot Loader code since the SPM instruction is disabled when executed from the Application section.
BLS – Boot Loader Section
Lainaus:
While the Application section is used for storing the application code, the The Boot Loader software must be located in the BLS since the SPM instruction can initiate a programming when executing from the BLS only.

Viimeinen muokkaaja heyrst; 30.11.11 16:45.
  Vastaa lainaten
Vanha 30.11.11, 16:41   #25 (linkki)
 
Rekisteröitynyt: 11/2005
Viestejä: 1413
Lainaus:
Alkuperäinen kirjoittaja heyrst Näytä viesti
Olen ollut käsityksessä että kyseisiä voi käyttää vain bootloaderin tapauksessa missä bootloaderilla ohjelmoidaan muu osa flashista. Mut täytyypä tutkiskella tarkempaan.
Juu en ole itsekään varma, luultavasti se boottiloaderi täytyy kirjoittaa uudelleen (jonka teen varmaan muutenkin koska nyt tuo käyttis käynnistetään erikseen pääohjelmasta käsin) ja jostain luin että ohjelmamuistin kirjoittaminen onnistuisi vain boottiloaderista mutta olettaisin että sinne pystyy hyppäämään myös bootin jälkeen. Täytyy tutkailla kun ehtii.
__________________
http://vrapper.sourceforge.net/home/
http://visualstudiogallery.msdn.microsoft.com/59ca71b3-a4a3-46ca-8fe1-0e90e3f79329
  Vastaa lainaten
Vastaa

Hae ketjusta:

Laajennettu haku

Hyppää alueelle:




Kaikki ajat ovat GMT +3. Kello on nyt 07:45.