Miten omatekoisia elektroniikka piirejä ohjelmoidaan esim. LED diodit vilkkumaan tietyllä tavalla jonkin ohjelman avulla. En ole vielä niin pitkälle kehittyny, että osaisin elektroniikka ohjelmointia, mutta ajattelin vain kysyä, että minne ohjelma sinne tallentuu(jollekkin mikropiirille vai?). Samoin olis mukava tietää, että mitä ohjelmointikieltä pitäisi alkaa opettelemaan, että oppisin ohjelmoimaan omia elektroniikka kytkentöjä sitten joskus. Kelpaako java vai olisko joku muu ohjelmointikieli helpompi tai parempi siihen hommaan?
Java ei oikein sovellu, sillä se on turhan korkean tason kieli. Mikrokontrollereille löytyy yleensä C-kääntäjä, joten C:n osaaminen on hyväksi. C++-kääntäjän löytyminen ei ole yhtä varmaa. Toisaalta jotkut ovat sitä mieltä että tosimies koodaa mikrokontrollerinsa assemblylla.
Kun koodi on valmis, se käännetään aivan kuten "tavallisessakin" ohjelmoinnissa. Sen jälkeen se pitää siirtää ohjelmoitavalle piirille, ja siihen tarvitaan ohjelmointilaite. Yksinkertaisimmillaan se voi koostua johdoista, vastuksista ja liittimistä, tai sitten voidaan käyttää vähän monimutkaisempiakin virityksiä. PC-päässä se kytketään yleensä sarja- tai rinnakkaisporttiin. Esimerkiksi AVR-perheen piirit ohjelmoidaan tyypillisesti niin, että piirilevyltä löytyy 6- tai 10-pinninen piikkirima, johon ohjelmointilaitteesta tökätään liitin. Sitten ohjelma laitetaan piirille PC:llä olevalta ohjelmistolta.
Ohjelmointilaitteita saa kaupasta, mutta niihin löytyy myös kytkentäkaavioita netistä. Riippuu kovasti valitsemastasi mikropiiristä, millaisen laitteen tarvitset.
Elektroniikalla pystyy rakentamaan vaikkapa ledivilkuttimen täysin ilman ohjelmointiakin. Eli tyyliin bistabiili multivibraattori voidaan helposti toteuttaa peruskomponenteilla.
Jos elektroniikkaan sisältyy prosessori, niin silloin kyseinen prosessori voi luonnollisesti ohjemoida. Lisäksi ohjelmoitavia logiikkapiirejä ohjelmoidaan. (Mikro)prosessorien ohjelmointi tapahtuu aivan samalla tavalla kuin PC:n prosessorinkin ohjelmointi, joskin yksinkertaisia mikrokontrollereita ohjelmoidaan ehkä useammin Assemblyllä kuin esim. PC:n prosessoreita nykyään. C ja C++ ovat varmaan yleisimmät sulautettujen järjestelmien ohjelmointikielet. Pienessä projektissa kätevintä on mikrokontrolleri, joka sisältää "kaiken tarvittavan", eli jossa on käyttömuistia joitakin kymmeniä tai satoja tavuja sekä puolesta kilosanasta muutamaan kilosanaan pysyvää muistia ohjelmakoodille. Tällöin käännetty ohjelmakoodi ohjelmoidaan suoraan mikrokontrollerille. On myös sellaisia mikrokontrollereita joissa on muistiväylä ulkoiselle muistipiirille. Tällöin käännetty ohjelmakoodi tallennetaan kyseiselle ulkoiselle muistipiirille ja (mikro)prosessori lukee sen sieltä.
Ohjelmoitavien logiikoiden ohjelmointi poikkeaa aika paljon prosessorien ohjelmoinnista (joskin hieman isompaan ohjelmoitavaan logiikkaan on usein mahdollista ohjelmoida prosessori, joka suorittaa ohjelmakoodia). Yleensä ohjelmoitavan logiikan kuvaamiseen käytetään VHDL tai Verilog tai vastaavia.
Java ei yleensä ole kovin pop vähätehoisissa sulautetuissa järjestelmissä, joskin muistaakseni Sunilla on omia javaprossuja joita voi toki käyttää. Ledivilkuttimeen sellainen tosin olisi varmasti "overkill".
Mainostaisin tässä Elektroniikkafoorumia jonka ylläpidossa puuhailen, mutta näyttää personal.fi olevan taas maissa.
Osote on http://www.elektroniikka.dy.fi/
Azure kirjoitti:
mutta ajattelin vain kysyä, että minne ohjelma sinne tallentuu(jollekkin mikropiirille vai?). Samoin olis mukava tietää, että mitä ohjelmointikieltä pitäisi alkaa opettelemaan, että oppisin ohjelmoimaan omia elektroniikka kytkentöjä sitten joskus.
Hei. opiskelen ammatikseni ko. asioita ja voin sanoa että osuit naulan kantaan: Ohjelmat kyllä tallentuvat mikropiireille, mutta ohjelmien tekeminen vaatii muutamia asioita, kuten: ohjelmointilaitteen (jos kyseessä olisi flash-muisteilla varustetut mikropiirit, niin laitteen voi tehdä itse), ohjelmointikielestä sen verran, että java ei todellakaan ole se paras mahdollinen (kääntäjiä assembly-kieleen nähden vähän). Assembly olisi 1 valinta mutta kyllä se C:lläkin onnistuu.
En tiiä oiskos tästä hyötyä https://www.ohjelmointiputka.net/keskustelu/
OOPICejä voi ohjelmoida javalla tosin ne on AVR-piirejä kalliimpia, mutta myös huomattavasti monipuolisempiakin.
netissä
http://www.tietomyrsky.fi/
http://www.esutech.com/OOPic/default.shtml
myös microchipin piireistä (esim. PIC16X84) löytyy ohjeita jopa suomenkielellä. suosittelen lämpimästi, että katot: http://koti.mbnet.fi/matjarv/elektron/pic/index.
sivuilla käsitellään ko. mikrokontrollerin ohjelmointia ja ohjelmointilaitteen tekemiseenkin löytyy ohjeet
Itse lueskelen juuri nyt (no, parhaillaan kirjoitan tätä viestiä, mutta äsken luin) attiny2313:n datasheetiä. Pic16f84:ää kokeilin, mutta siirryin pois siitä monestakin syystä.
- Ensinnäkin se on kalliimpi kuin esim. tämä avr (pic16f84 ~4-7e ostopaikasta riippuen, yleensä ~5.5e vs. attiny2313:n ~3.5e), ja sain niitä kaksi rikki jostain syystä, mahdollisesti syynä staattinen sähkö, vaikka varovainen olinkin. Kokeillaan vaihteeksi miten avr kestää sormiani.
- Picit tarvitsevat ohjelmointilaitteen. Valmiita ei kannata harkitakaan ostavansa kunhan juotin pysyy kädessä, hinnat ovat kymmeniä euroja. Alle kympillä rakentaa oman viritelmän, näille ei kuitenkaan ole hirveästi ohjeita ja hyvät vaativat korkeahkon (?) ulkoisen jännitelähteen. Monia eri piirejä ei voi samalla vimpaimella ohjelmoida. Monille avreille riittää käsittääkseni tyyliin parin vastuksen kautta printteriporttiin kytkeminen tietyistä nastoista.
- Avreista löytyy rutkasti tietoa ja monia foorumeita. http://www.avrfreaks.net/ on kiva.
- Laiskana en jaksa assemblyllä hirveän paljon kirjoitella vaikka ihan mielenkiintoista se onkin eikä 16f84:n käskykanta iso ole (muutama kymmenen käskyä), avreille on jopa avr-gcc ja jonkinmoinen c-standardikirjasto. C:tä on mielestäni mukavampaa ja huomattavasti nopeampaa kirjoittaa kuin assemblyä. Pieniin picceihin ainakaan ei hyviä c-kääntäjiä ole.
- Käsittääkseni melkein kaikissa avreissa on valmiina jo usart sarjaporttikikkailuun ja useampi sisäinen pwm-ajastin, esim. pic16f84:ssä ei mitään.
- yms.
En näissä mitenkään ammattilainen ole, aloittelen vasta. Avr:t vaan jotenkin tuntuvat mukavammalta vaihtoehdolta. Kirjoittelin kun on nyt itselle vähän ajankohtaista.
jännitettä ohjelmointilaite tarvitsee 16-24V. Eli se on suhteessa hieman suuri. kyllä avr käy myös. itse en ole vain sattunut huomaamaan sellaista :D katsois senkin tietoja...
sooda kirjoitti:
- Ensinnäkin se on kalliimpi kuin esim. tämä avr (pic16f84 ~4-7e ostopaikasta riippuen, yleensä ~5.5e vs. attiny2313:n ~3.5e), ja sain niitä kaksi rikki jostain syystä, mahdollisesti syynä staattinen sähkö, vaikka varovainen olinkin. Kokeillaan vaihteeksi miten avr kestää sormiani.
Aika mielenkiintoista ottaa vertailukohteeksi melko ikivanha PIC ja suht tuore AVR. Attinyt2313 vs PIC16F819 (alle 2e) olisi ehkä järkevämpi vertailukohta. En ole koskaan saanut yhtään picciä rikki staattisella sähköllä vaikka olen miten huolettomasti käsitellyt. En kyllä AVR:kään.
sooda kirjoitti:
- Picit tarvitsevat ohjelmointilaitteen. Valmiita ei kannata harkitakaan ostavansa kunhan juotin pysyy kädessä, hinnat ovat kymmeniä euroja.
Jälleen vanhat vaativat korkean jännitteen, uudet eivät. Ja kaikki mikrokontrollerit vaativat ohjelmointilaitteen, ihan valmistajasta ja mallista riippumatta. Yleensä ohjelmointilaite on PC ja sitten se itse rakennettavissa oleva on lähinnä sovitinkaapeli. Olen kyllä tehnyt ihan ohjelmointilaitteenkin niin PICeille kuin AVRllekin (eli ohjelmoivat itsenäisesti ilman PC:tä).
sooda kirjoitti:
- Käsittääkseni melkein kaikissa avreissa on valmiina jo usart sarjaporttikikkailuun ja useampi sisäinen pwm-ajastin, esim. pic16f84:ssä ei mitään.
Joo, tässä voi taas kysyä että miksi ihmeessä käytät tuollaista antiikkimallia?
Sinänsä aika sama mulle mitä käytät, piti nyt vaan noita muutamia kohtia kommentoida ettei jää ihmisille pahasti väärää käsitystä.
GCC:n AVR-tuki on kyllä erinomainen peruste AVR:n valintaan. Tosin silläkään ei voi huonoimmille AVR:lle koodata.
Nojoo, ei ehkä olisi pitänyt kirjoitella kun ei kamalasti tosiaan ole uudemmista kokemusta. :o sori hämmennyksestä. 16f84 vaan tuntuu olevan paljon esillä pic-sivuilla, niin unohtui että mokoma on vanhake. (ja eraggokin sen mainitsi, niin hämäs :p)
oon ite tottunut enemmän 18f84:een :D sori jos en maininnut tota uudempaa ;)
Mainittakoon vielä että mm. PIC:eille löytyy myös basic-kääntäjä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.