Onko mahdollista ohjelmoida Arduinoa C kielellä? Yritin jo Atmel Studiolla ja Visual Studiolla mutta ei vissiin tue Windows kymppiä??? Tuli kokoajan joku virhe asennuksiin.
Arduinon ohjelmoiminen C++
9
<50
Vastaukset
- Haminaattori
Taisitkin esittää sen argumentin joka voi olla hankala. Ihan uusilla käyttiksillä aluksi voi olla hankaluuksia aluksi, kunnes tarvittavat korjaukset ehditään tehdä. Samoin oli silloin kun Vista tuli. Oli jopa tilanne jossa 32bittinen tais kääntää ja 64bittinen ohjelmoi voi oliko se toisinpäin, mutta vaikeeta se oli.
Kympinkanssa voi olla ongelmia vähänaikaa joten suosittelen valjastamaan jonkun vanhemmankoneen konrollerikäyttöön. Omassa käytössä "työkalut" löytyvät kolmesta koneesta ja niissä on W2k, XP ja joku 10.jotain ubuntu. - kxknzkskzkdkdkk
saako atmelin työkalut linuxille? sehän voisi olla ratkaisu asentaa linux rinnalle.
itse ohjelmoin picejä ja se mplabx toimi huonosti windowsissa, mutta linuxissa se toimi täysin ongelmitta. - riippuu_arduinosta
Sehän ei ole sitten enää arduino vaan tavallinen avr. Nuo vanhemmat arduinot erillisellä ftdi_piirillä kävisi tarkoitukseen, uudemmissa usb_ohjain on poltettu siihen arduinopiiriin. Lisäksi tarvitaan erillinen ohjelmointilaite.
- kyllävarmaan
Onko sinulla se arduino ide asennettuna, siinähän on integroitu avrdure ja gcc joten luulis onnistuvan puhtaan c:n tai c koodin kääntö.
- Qu4l1ty
Onhan se Arduino IDE pyörinyt tuolla kovon sopukoissa jo vuoden, mutta ei siinä mielestäni ole integroitu avrdure eikä gcc.
- katoppavielä
Katsoppa hakemisto arduino-xxxx/hardware/tools/avr. Sieltä löytyy WinAVR. WinAVR sisältää avr-gcc (kääntäjän), avrdude (ohjelmoijan), AVR-gdb (debuggerin). Näin ainakin versiossa arduino-0023. Onhan nuo kirjastot kirjoitettu C:llä eikä prosessing-kielellä.
- laimeaa_on
Kyllähän tuo onnistuu. Ongelmia tulee kylläkin nopeasti suoritustehon kanssa. Nimittäin c on jo sen verran korkean tason kieli, että siinä on melko paljon ylimääräistä koodia "jotta homma toimisi" - mukana. Esim. periyttämisen voi hetimoilleen unohtaa. Samoin autovarit, ym. tauhkan, joka käyttää dynaamisesti varattua muistia - sitä kun ei ole tarjolla liiemmälti. AVR:ssä kun on flashia pysyväismuistina yleensä runsaasti ja rammia vähän, esim 128k/4k. Sen sijaan jos prosarilla on muistiohjain ja lisätty esim. 32k sram - c alkaa olla jo ihan yes. Tämä tietenkin tarkoittaa arduinon hylkäämistä ja siirtymistä johonkin, missä on esim. mega128. Tuo taitaa olla pienin, jossa vielä järkevän muistiohjain. Niitä SPI-väyläisiä kun voi lähinnä käyttää datapuskureina, kun nopeus ei ole niin kriittistä, latenssi on joka tapauksessa hirveä.
- Haminaattori
Ei kait sillä kääntävällä ohjelmalla niin suurta merkistystä. Melkein saman konekielisen "sekamelskan" ne kumminkin tekee. Käyttöön kääntäjä ottaa vain ne osat jotka se tarvitsee ohjelman suorittamisessa. Aikoinaan kokeiltiin muutamaa ohjelmaa ja oli joukossa oikein kaupallinen isoohjelma. Kaikki teki noin sadan tavun sisään viidenkilon kokoisen konekielisen ohjelman. Konekielilistauksessa näkyi selvijä eroja ryhmittelyssä, mutta ajotilanteessa ei eroja havaittu. Kaikki oli tosin GCC-kääntäjiä. Kääntäjäohjelmilla on joskus "huonosti kirjoitettuja" funktioita kirjastoissaan jotka ei osaa tehdä riittävän tiukkaa koodia. Silloin tietenkin funktio kannattaa yrittää kirjoitta itse.
Se on tietenkin, jos käännettävään ohjelmaan tekee muutoksen. Kaikki kääntät eivät osaa muutoksen alla ollutta kohtaa poistaa vaan kääntävät uudenpätkän edellisen jatkoksi. Turha jää sinne koodinsisään käyttämättömäksi. - tämä_nähty
Itselläni on sellainen näppituntuma, että jos käyttää periyttämistä sulautetuissa ympäristöissä, aiheuttaa samalla n. 100 tavun lisäyksen koodin kokoon. Siispä jos ohjelmassa tekee listan, jossa on 40 alkiota - periytettyjä luokkia siis, on helposti koko muistiavaruus käytetty, koska varaus tapahtuu rammista eli yleensä 2-4k muistista. (Periytetty luokka ei ole mitään muuta kuin structi, jossa on alussa sen isäntä luokan tietoalkiot.) Tietysti tuota voi optimoida. Kuitenkin miettimällä c-tasolla, mitä oikeasti tarvittaisiin ja tekemällä perinteiset structit, päästään parempaan tulokseen. Riippuu tietysti myös siitä, halutaanko tehdä käsitteellistä ajattelua jota helposti ymmärtää, vaiko toimivaa koodia. Useinhan ne ovat sama asia, vaan ei aina.
Vaikka ei se c:kään mikään autuaaksi tekevä ole. gcc:llä jos käyttää keskeytyksiä on helposti tilanteessa, jossa keskeytyskäsittelijän kutsu vie päälle 50 kellosykliä ennen kuin oma koodi lähtee ajoon. Vähän eri, kuin datakirjassa mainittu luku. Onneksi sen saa sylkäisemään assemblerit ja siitä sitten vaan optimoimaan! ;)
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 962625
Jotain puuttuu
Kun en sinua näe. Et ehkä arvaisi, mutta olen arka kuin alaston koivu lehtiä vailla, talven jäljiltä, kun ajattelen sinu1012223- 841947
- 111675
Hei A, osaatko
sanoa, miksi olet ihan yhtäkkiä ilmestynyt kaveriehdotuksiini Facebookissa? Mitähän kaikkea Facebook tietää mitä minä en441671- 781626
- 361606
Persuilla ja Saksi-Riikalla meni sitten pornon levittämiseksi koko touhu.
Onko kenellekään yllätys?911553Synnittömänä syntyminen
Helluntailaisperäisillä lahkoilla on Raamatunvastainen harhausko että ihminen syntyy synnittömänä.1201415Mitä tämä tarkoittaa,
että näkyy vain viimevuotisia? Kirjoitin muutama tunti sitten viestin, onko se häipynyt avaruuteen?411274