harraste E L E K T R O N I I K K A

SISÄLTÖ
MILJOONALAATIKKO
Sekalaista elektroniikkaharrastajan tarvitsemaa tietoa, taulukoita, laskukaavoja, yms.
KIRPPIS
Elektroniikkaharrastajan kauppapaikka.
PIIRROSMERKIT
Elektroniikan, sähkötekniikan ja rakenussähköpiirrustusten piirrosmerkkejä.
RAKENNUSOHJEET
Kytkikset, piirilevykuvat, ja muut rakenteluohjeet pariin elektroniikkaprojektiin.
ARTIKKELIT
Elektroniikasta ja sähköstä yleensäkin, kirjoittelemiani juttuja, asiasta ja asian vierestä.
U.K.K.
Usein Kysytyt Kysymykset.
KÄRY KÄVI
Enemmän tai vähemmän hauskoja tapahtumia elävästä elämästä.
SALAISET PAHEET
Elektroniikkaharrastajan salaiset paheet... sovellettavissa omalla vastuulla.
LINKIT
Linkkejä sinne ja tänne.
PALAUTE
Näihin sivuihin liittyvä palaute, sekä elektroniikkaan liittyvät kysymykset tänne.
ETUSIVULLE

 

Julkaistu:5.12.2011
Muokattu: 
AVR:rän polttajan pikaopas

Atmelin AVR-sarjan, samoin kuin muidenkin mikrokontrollereiden polttamiseen on olemassa kaksi erilaista tapaa:

1) Mikrokontrolleri kytketään tietokoneeseen polttolaitteen tai ohjelmointivälikaapelin välityksellä, ja tietokoneeseen asennetulla poltto-ohjelmalla poltetaan haluttu ohjelmakoodi kontrollerin muistiin.

2) Mikrokontrolleri kytketään polttoon soveltuvaan jännitelähteeseen. Poltto-ohjelmistoa tai tietokonetta ei tarvita.

Molemmilla tavoilla on omat hyvät ja huonot puolensa. Tässä pikaoppaassa keskitymme tapaan numero yksi. Kakkostavasta täytynee joskus kirjoitella lisää Salaiset Paheet-osioon ;-)

Tavoite
Kirjoittelemiani tekstejä on joskus kritisoitu siitä että asiat on väännetty vähän turhankin paksusta rautalangasta, joten tällä kertaa yritän käyttää hieman ohuempaa lankaa ... katsotaan nyt onnistunko. Oppaan tavoitteena on kääntää C-kielellä kirjoitettu koodin pätkä AVR:n ymmärtämään konekieliseen muotoon AVR-GCC-kääntäjäohjelmalla, ja sitten polttaa se AVR-mikrokontrollerin muistiin AVRDUDE-poltto-ohjelmalla. Lisäksi lyhyt ... hyvin lyhyt esimerkki siitä, kuinka AVR:n sulakebitit tarkastetaan ja tarvittaessa muutetaan.

Tässä oppaassa keskitymme AVR-kontrollereiden, ehkä yleisimpään käytettyyn ohjelmointitapaan, joka hyödyntää kontrollerin SPI-liitäntää. Poltossa siis käytetään kontrollerin MISO, MOSI, SCK ja RESET liitäntänastoja. Toinen, liki yhtä yleinen tapa on JTAG-liitännän käyttö, mutta siihen emme tässä oppaassa kajoa pitkällä tikullakaan.

Mitä tarvitaan?
Ensinnäkin tietysti tarvitaan se poltettava AVR-mikrokontrolleri. Jos kontrolleri on vielä asentamatta lopulliseen kytkentäänsä, ja se on tarkoitus laittaa sinne vasta polton jälkeen, tarvitset polttolaitteen, eli polttokortin, eli ohjelmointilaitteen. Polttolaitteen on luonnollisesti oltava sellainen, joka sopii kyseiselle kontrollerille. Kontrolleri laitetaan polttolaitteen kantaan ja polttolaite kytketään välikaapelilla tietokoneeseen. LPT- ja USB-liitäntäiset ovat yleisimpiä malleja.

Vaihtoehtoinen tapa on se, että kontrolleri on jo ennen polttamista asennettu lopulliseen kytkentään. Tällöin kytkennässä on oltava ohjelmointiliitäntä, johon ohjelmointivälikaapeli kytketään polton ajaksi. Yksinkertaisimmat ohjelmointivälikaapelit ovat tietokoneen LPT-porttiin kytkettäviä. USB-porttiin kytkettäviä on myös, mutta niissä kaapeli sisältää jo enemmän elektroniikkaa.

Mitä taas tulee tietokoneen softapuoleen, ainakin seuraavat paketit on oltava asennettuina:

  • gcc-avr
  • avr-libc
  • avrdude
  • build-essential
Lisäksi, jos käytät LPT-porttiin (rinnakkaisportti, eli kirjoitinportti) kytkettyä polttolaitetta tai ohjelmointivälikaapelia, tulee polton suorittavalla käyttäjällä olla luku- ja kirjoitusoikeudet LPT-portin laitetiedostoon. Se on jakelusta riippuen /dev/parport0 tai jotakin vastaavaa.

Ohjelman lähdekoodi
Ennen kuin alat suurempia ohjelmia kirjoittelemaan, kannattaa käännös- ja polttosysteemien toimintaa testata mahdollisimman yksinkertaisella esimerkkikoodilla. PC-puolen ohjelmointimaailman "Hello World"-ohjelman vastine mikrokontrollereiden puolella on led vilkku. Tällaisia esimerkkikoodeja, toimintaselvityksineen, on netti täynnä, joten en alla olevan koodin toimintaa ala sen paremmin ruotimaan lävitse: