Timo Haiko • Keijo salonen • toni harju DIGITAALIelektroniikka Peruspiireistä sulautettuihin järjestelmiin Sanoma Pro Oy Helsinki s1-7.indd 1 20.4.2012 14.34 Tiedustelut Sanoma Pro Oy, Helsinki puh. 020 391 000 sähköposti: asiakaspalvelu@sanomapro.fi www.sanomapro.fi Kustantaja: Sanoma Pro Oy 1. painos 2012 ISBN 978-952-63-0272-0 Toimitus: Suvi Hanste Ulkoasu ja kansi: Veera Alanko Taitto: Heli Haiko, Sirpa Hämäläinen Kuvat: Kuvaluettelo sivulla 7 © Timo Haiko, Toni Harju, Keijo Salonen ja Sanoma Pro Oy Teos on suojattu tekijänoikeuslailla (1961/404). Kopiointi, tallentaminen, jakelu, muu jatkokäyttö sekä edelleenluovutus sallittu vain tekijän ja kustantajan etukäteen antamalla luvalla. Kopiointiluvasta vastaa aina käyttäjä. Varmista sopimuksesi voimassaolo: www.kopiosto.fi. s1-7.indd 2 20.4.2012 14.34 Esipuhe Elektroniikka on tekniikan ala, jota sovelletaan nykyään lähes kaikkialla. Aluksi elektroniikka oli analogista ja sittemmin se täydentyi digitaalielektroniikalla. Tämä kirja kertoo digitaalielektroniikan perusteista alkaen yksinkertaisista porttipiireistä aina mikroprosessoreihin. Elektroniikan oppiminen edellyttää moninaisia tietoja ja taitoja niin käytännön kuin teorian alueilta. Elektroniikan rakentaminen esimerkiksi rakennussarjoista tai vastaavista ohjeista on vaativa mutta palkitseva oppimistapa. Myös oman virtuaalisen elektroniikkalaboratorion perustaminen on suositeltavaa. Internetissä onkin tarjolla useita kohtuuhintaisia, jopa ilmaisia, simulaatio-ohjelmia, jotka soveltuvat niin analogisen kuin digitaalielektroniikan tutkimiseen. Myös protopiirilevyjen suunnitteluun löytyy varsin kohtuuhintainen ohjelma. Piirilevyjen suunnitteluun on olemassa useita ohjelmia, joilla voidaan tulostaa fotolakatun piirilevyn valotuksessa tarvittava työfilmi ja/tai tallentaa ohjaustiedosto piirilevyn jyrsintää varten. Kirjan sivuilla ja netistä ladattavalla oheismateriaalilla on eräitä tuotoksia, kuten piirikaavioita, simulaatioita sekä jyrsimen ohjaustiedostoja, joiden teossa on käytetty mainittuja työkaluohjelmia. Ohjelmien nimet on esitetty asiayhteydessä. Kirjan sisältö koostuu opetustekstin lisäksi tehtävistä, esimerkeistä ja projekteista, sekä runsaasta kuvituksesta, joiden avulla opiskelijalla on entistä paremmat mahdollisuudet oppia digitaalielektroniikan keskeiset asiat. Kirjan tekstissä on suomenkielisten termien lisäksi usein myös englanninkielinen vastine ja/tai sen lyhenne. Tarkoituksena on auttaa lukijaa löytämään lisätietoja internetin avulla. Oman ammattialan vieraskielinen sanasto on arvokasta pääomaa. Monet kirjan piirikaaviokuvista voidaan avata myös tietokoneella niiden lähempää ja laajempaa tarkastelua varten. Tällöin on mahdollista testata kytkentää omassa virtuaalilaboratoriossa itselle parhaimmin sopivana aikana. Simulaatio-ohjelma ja kirjassa mainitut simulaatiotiedostot sekä muu sähköinen materiaali on ladattavissa: www.timohaiko.fi. Otamme kiitollisina vastaan palautetta, jotta voimme edelleen parantaa kirjan käytettävyyttä. Maaliskuussa 2012 Tekijät 3 s1-7.indd 3 20.4.2012 14.34 Sisällys Esipuhe.......................................................................3 1 4 Portit ja puskurit..................................................40 Digitaalitekniikka.....................................8 NOT-puskuri............................................................41 Puskuripiiri eli bufferi............................................45 Portit........................................................................48 AND-portti..........................................................49 Totuustaulun laatiminen loogiselle piirille.................................................52 OR-portti..............................................................54 NAND-portti.......................................................56 NOR-portti...........................................................60 XOR-portti...........................................................63 XNOR-portti........................................................65 Yleistä .........................................................................8 Elektroniikan historiaa............................................8 Analogisen elektroniikan ja digitaalielektroniikan välinen ero....................................... 9 Siniaaltosignaalin ja suorakaideaaltosignaalin yhteys.................................................... 10 Käytännön digitaalisignaali ............................... 11 Digitaalisista peruspiireistä sulautettuihin järjestelmiin........................................................... 12 2 Digitaalitekniikan mittalaitteet ja työkalut........................................................16 Oskilloskooppi.......................................................16 Oskilloskoopin mittapää.......................................21 Mittauksia oskilloskoopilla..................................22 Sähkölaitteiden luokitusjärjestelmät.............................................................25 IP-luokitus...............................................................25 CAT-merkintä..........................................................26 Komponenttien ladontakone.........................26 ESD-suojaus..........................................................28 ESD-varusteita.......................................................28 teht ä v i ä . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 0 3 Lukujärjestelmät.....................................32 Kymmenjärjestelmä...........................................32 Binäärijärjestemä...............................................33 Heksadesimaalijärjestelmä...........................34 Lukujärjestelmien muunnokset............................................................35 Koodeja...................................................................38 Kombinaatiopiirit....................................40 Kytkentäalgebraa..................................... 72 5 Sekvenssipiirit...........................................76 Kellopulssioskillaattorit...................................76 Käytännön kellopulssioskillaattori......................76 Reaaliaikakellopiirit ..........................................78 Astabiili värähtelijä ...........................................79 Astabiilin värähtelijän toteuttaminen transistoreilla......................................................... 79 Astabiilin värähtelijän toteuttaminen NAND-porttipiirillä................................................ 81 Astabiilin värähtelijän toteuttaminen inverttereillä........................................................... 82 Astabiilin värähtelijän toteuttaminen 555-ajastinpiirillä................................................... 82 555-ajastinpiirin toiminnan havainnollistaminen.......................................... 84 Astabiili värähtelijä pulssinleveysmodulaattorina....................................................... 86 Kideoskillaattori ..................................................87 Ohjaimet...................................................................88 Ledien ohjaukset ..................................................88 Lediohjain 1............................................................90 Lediohjain 2............................................................91 4 s1-7.indd 4 20.4.2012 14.34 Lediohjain 3............................................................93 7-segmenttien (ledi) ohjaukset ...........................93 7-segmenttien (LCD) ohjaukset ........................102 6 Piiriperheet...........................................................144 TTL-piirit................................................................144 CMOS-piirit...........................................................145 HCMOS-piirit........................................................146 Piirien käyttöjännitteet.......................................146 Käyttöjännitteet ja häiriöiden vaimennus........147 Komponenttien kotelointi...................................147 Lähdön kytkennät................................................147 Avokollektorilähtö............................................147 Toteemipaalukytkentä.....................................148 Kolmitilalähtö...................................................149 Puskurilähtö.....................................................149 Datalehdet............................................................150 Kiikut ja salvat.....................................................103 Transistoreilla toteutettu kiikku.........................104 Mikropiirillä toteutettu kiikku.............................105 RS-kiikku...............................................................107 Veräjöity RS-kiikku..........................................108 D-kiikku ................................................................113 Veräjöity D-kiikku.............................................114 D-salpa .................................................................115 Käytännön esimerkki latch-piiristä...............115 JK-kiikku...............................................................116 T-kiikku .................................................................118 Pulssin jakaminen luvulla n...........................124 Jakaminen luvulla n........................................124 Monostabiili kiikku..............................................127 LM555-ajastinpiiri monostabiilina kiikkuna.............................................................127 Peruspiirit monostabiilina kiikkuna ............................................................128 7 Analyysilajit..........................................................154 Simulaatiotiedoston käyttö................................154 Simulaation kuvaajat..........................................156 D(1)-digitaalisignaali kytkentäpisteestä numero yksi maatasoon.................................156 Stimulusgeneraattorit.........................................160 1-bittinen stimulusgeneraattori.....................160 4-bittinen stimulusgeneraattori.....................163 8-bittinen stimulusgeneraattori.....................166 Siirtorekisterit ....................................................130 SISO-rekisteri.......................................................130 SIPO-rekisteri.......................................................131 PISO-rekisteri.......................................................133 PIPO-rekisteri.......................................................134 DA- ja AD-muuntimet ....................................135 Muistit.....................................................................138 8 Tietokone komponenttina.........168 Schmitt-liipaisin ................................................139 Tietokoneen toimintaperiaate....................168 Komparaattori ....................................................141 teht ä v i ä . . . . . . . . . . . . . . . . . . . . . . . . . 1 4 3 IO-laitteet .............................................................169 Mikroprosessori..................................................170 Arkkitehtuuri.........................................................174 Väylät.....................................................................176 Muistit...................................................................178 Käyttömuisti..........................................................179 DIGITAALIelektroniikka s1-7.indd 5 Digitaalikytkentöjen simulointi........................................................152 Ohjelman rakenne............................................152 Ylös/alas-laskuri ...............................................128 DA-muunnin.........................................................135 AD-muunnin ........................................................137 Multiplekserit.......................................................138 Käytännön mikropiirit.....................144 5 20.4.2012 14.34 Ohjelmamuisti..................................................179 Datamuisti.........................................................179 Rekisterit...............................................................179 ALU........................................................................181 Ohjelmointi............................................................181 Vuokaaviot ja sanalliset algoritmit....................187 teht ä v i ä . . . . . . . . . . . . . . . . . . . . . . . . . 1 8 9 9 Mikro-ohjaimet.......................................190 Yleistä......................................................................190 Mikro-ohjainten käyttökohteet..........................192 Mikro-ohjaimen rakenne ja toiminta...................................................................195 Mikro-ohjainten muistit......................................198 Ohjelmamuisti..................................................198 Käyttömuisti......................................................199 Datamuisti.........................................................199 Digitaaliset tulo- ja lähtöportit...........................200 JTAG, ohjelmointi- ja testiliityntä......................202 Ajastimet...............................................................203 Komparaattori......................................................206 AD-muunnin.........................................................207 PWM ja digitaalinen tehonsäätö......................209 Sarjaportti.............................................................212 Sarjamuotoiset oheislaiteliitynnät....................214 SPI......................................................................214 I2C......................................................................215 1-Wire................................................................215 Sarjamuotoisten oheislaiteliityntöjen ominaisuuksia..................................................216 AVR-mikro-ohjaimet............................................219 AVR-mikro-ohjainten luokittelu.....................220 AVR-piirien sisäinen toiminta........................221 Kirjassa käytettyjä C-kielen ohjelmakäskyjä....................................................235 6 s1-7.indd 6 20.4.2012 14.34 Kuvalähteet Timo Haiko: 10, 11, 17, 18, 19, 22, 23, 24, 27, 28, 29, 41, 42, 43, 44, 45 vas. yläk. ja alak., 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 76, 77 alak., 78 yläk., 79, 80, 81, 82, 83, 84, 86, 87, 89, 90 vas., 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102 yläk., 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 116, 117, 118, 119, 120, 121, 122 alak., 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 136, 137 alak., 138, 140, 141, 142, 147, 148 vas. yläk., 149, 154, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168 vas. yläk., 168 toinen oik., 170 vas.,182 vas. Toni Harju: 13, 72, 73, 74, 139, 178, 181, 183, 188, 190, 191, 193, 194, 195, 196, 198, 200, 201, 202, 206, 207, 208, 210, 211, 212, 215, 216, 217, 219, 226, 229, 230, 232, 233. Eila Sinivuori: 9, 12, 45 yläk. vas., 77 yläk. ja kesk., 78 alak., 90 oik. alak., 91, 92 oik. yläk., 93 vas. yläk.,102 alak., 111 oik. yläk., 113 vas., 115, 116 kesk., 122 yläk., 137 yläk., 148, 152, 153, 168 alak., 169, 170 oik., 171 yläk., 172, 173, 174, 175, 176, 177, 180, 182 oik., 184, 185, 187, 192, 204, 220, 223, 225, 228, 231. Colourbox: 168 toinen vas. ja oik. yläk. DIGITAALIelektroniikka s1-7.indd 7 7 20.4.2012 14.34 2 Digitaalitekniikan mittalaitteet ja työkalut Digitaalitekniikassa käytetään osin erilaisia mittalaitteita ja työkaluja kuin tavallisessa analogiatekniikassa. Mittalaitteiden osalta nämä syyt ovat mitattavien signaalien yksinkertaisuus ja moninaisuus: mittaamiseen tarvitaan muun muassa monikanavaisia oskilloskooppeja ja analysaattoreita. Työkalujen ja koneiden osalta erityisiä vaatimuksia tuovat suojaukset staattiselta sähköltä, pintaliitostekniikan käyttö ja automaattinen komponenttilevyjen ladonta. Tarvitaan muun muassa ESD-työkaluja ja kalusteita, ESDsuojavaatetusta ja massatuotantoon soveltuvia koneita, kuten automaattisia ladontakoneita. Oskilloskooppi Sanastoa 16 oskilloskooppi bench scope, scope kannettava portable nelikanavainen four channel mittapää probe pihtivirtamuuntaja current clamp vaimennin attenuator Tavallisesti oskilloskoopissa on kaksi tulokanavaa, jotka riittävät kahden signaalin samanaikaiseen tarkkailuun. Seuraavassa esitellään nelikanavainen oskilloskooppi, Fluke ScopeMeter 190 II. Se on enemmän kuin tavanomainen nelikanavainen oskilloskooppi, koska siinä on tarvittaessa 1–4 toisistaan erotettua mittaria tasa- ja vaihtojännitteen, tasa- ja vaihtovirran, taajuuden ja lämpötilan mittaamiseen. Se soveltuu rakenteensa ja korkeimman turvaluokituksensa (CAT 4) ansiosta käytettäväksi paitsi tavanomaisissa elektroniikan laboratorioissa myös vaativissa tehoelektroniikan sovelluksissa. DIGITAALITEKNIIKAN MITTALAITTEET JA TYÖKALUT DE Luku 2 JN.indd 16 20.4.2012 14.03 mittajohdot (4 kanavaa) Nelikanavainen akkukäyttöinen oskilloskooppi ja yleismittari S a na s toa Yleisiä ominaisuuksia: ■■ Kaistanleveys: – Fluke 190-204: 200 MHz – Fluke 190-104: 100 MHz ■■ Suurin reaaliaikainen näytteenottonopeus: – Fluke 190-204: 2,5 GS/s – Fluke 190-104: 1,25 GS/s ■■ Neljä sähköisesti erotettua tuloa ■■ Erilliset, kelluvat eristetyt tulot: 1 000 V:iin asti tulojen, referenssien ja maan välillä ■■ Aikakanta-alue/jakoväli: 5 ns-2 min/div ■■ Tulon herkkyys/jakoväli: 2 mV-100 V/div ■■ Liipaisutyypit: Connect-and-View™, Free Run, yksittäis-, reuna-, video-, valinnainen pulssinleveys- ja ulkoinen liipaisu, kaksoisliipaisu ja halutun jakson liipaisu (n-jakso) ■■ Häiriöpiikit: 8 ns ■■ Scope-mittaukset: – Kursori: 7 – Automaattinen: 30 DIGITAALIELEKTROniikka DE Luku 2 JN.indd 17 banaaniliitin banana probe tekniset tiedot specifications kaistanleveys bandwidth reaaliaikainen real-time näytteenottotaajuus sample rate giganäytettä sekunnissa giga samples/s, GS/s kelluva floating eristetty isolated tulo input aika-akseli time base jakoväli division, div alue range 17 20.4.2012 14.03 ■■ Sanastoa herkkyys sensitivity liipaisin trigger vapaasti värähtelevä free run ■■ yksittäislaukaisu single shot ■■ viive delay pulssin leveys valittavissa selectable pulse width ulkoinen external häiriöpiikki glitch sieppaus capture mittaus measurement kursori cursor automaattinen automatic enimmäis- maximum tallennuspituus record length kohinan rajoitus noise reject suurtaajuus high frequency, HF yksittäispyyhkäisy single shot Oskilloskooppina ■■ ■■ ■■ ■■ ■■ ■■ ■■ ■■ Suurin muistin koko (ScopeRecord-toiminto): 27 500 tai 10 000 min/max näytettä kanavaa kohden Muisti: näyttöruudut + Asetukset 15, replay + Asetukset 2 Pölyltä ja tippuvalta vedeltä suojaava IP-51-luokitus takaa, että laite soveltuu vaativiinkin teollisuusympäristöihin Näyttö: 153 mm:n täysväri-nestekidenäyttö, jossa on nopea näytön päivitys Jälkihehku: analogisen oskilloskoopin kaltainen aaltomuodon vaimeneminen (käyttäjän valittavissa) Aaltomuotovertailu: aaltomuotoreferenssi ja automaattinen Pass/Fail-testaus Sähköturvallisuus: 1 000 V CAT III/600 V CAT IV Paristojen käyttöikä: jopa 7 tuntia (Li-Ion) USB-liitäntä: muistille ja PC:n liitäntään Takuu: 3 vuotta osille ja työlle (1 vuosi lisävarusteille) Mitat ja paino: 270 mm × 190 mm × 70 mm, 2,2 kg Mukana toimitettavat varusteet: ■■ BC190-verkkolaite/-akkulaturi kaikille 190-sarjan mittauslaitteille ■■ VPS410-mittajohtosarjat, jännitesuhde 10:1 ■■ Rannehihna ja ripustin ■■ Käyttöopas (CD-ROM) ■■ BP291-Li-ion-akku ■■ FlukeView-esittelypaketti ■■ USB-liitäntäkaapeli tietokoneliitäntää varten Oskilloskooppina Fluke 190 näyttää samanaikaisesti neljän, toisistaan täysin erotetun, mittauskohteen signaalit. Myös tietokone liitetään tähän mittalaitteeseen liitosjohdoissa olevien optisten erottimien avulla. vaihesiirto, (tässä A- ja Bkanavien signaaleilla 45°) pulssin pituus, (tässä 10 μs) verkko-/akkukäyttö Kuvaruudulta on luettavissa signaalin muodon lisäksi jännite- ja aikaskaalaukset, pulssin kestoaika, pulssien välinen vaihesiirto ja tahdistustapa sekä -kohde. 18 tahdistusmuoto ja -kohde (tässä nousevalla pulssinreunalla A-kanavaan) tulokanavien A, B, C ja D jänniteskaalaukset, mV/jakoväli aika-akselin skaalaus, μs/jakoväli DIGITAALITEKNIIKAN MITTALAITTEET JA TYÖKALUT DE Luku 2 JN.indd 18 20.4.2012 14.03 Signaalin tahdistus voidaan määrittää pulssin reunan lisäksi myös erityisesti PAL-, NTSC- ja SECAM-videosignaaleille. Kohinan ja suurtaajuuksien vaimennus on myös mahdollista. Kertailmiöiden tutkiminen on mahdollista yksittäispyyhkäisytoiminnon avulla. Yleismittarina Fluke 190 voi toimia samanaikaisesti esimerkiksi jännite-, taajuus- ja lämpötilamittarina. verkko-/akkukäyttö mittapäiden vaimennukset Videosignaali-standardeja: Phase alternate line, PAL (esim. Suomessa) National television system committee, NTSC (esim. USA:ssa) Séquentiel couteur à mémoire, SECAM (esim. Ranskassa ja Venäjällä) Yleismittarina sekajännitemittari taajuusmittari vaihtojännitemittari tasajännitemittari mittareiden valinta vertailujännite (tässä poiskytketty) Jännitetason suuruus voidaan ilmaista myös desibeleinä. Tällöin mittaustuloksen yksikkönä on desibelivoltti, dBV, eli mitattavan jännitteen arvoa verrataan 1 V:n vertailutasoon, osamäärästä otetaan 10-kantainen logaritmi ja tulos kerrotaan 20:llä. Vertaa jännitetaso (dBV) ja jännitevahvistus (dB): AU(dBV) U = 20 ⋅ log 1 V AU(dB) U OUT = 20 ⋅ log U IN Jännitteitä voidaan mitata tavanomaiseen tapaan absoluuttisina arvoina tai niitä voidaan verrata mittalaitteeseen ennalta asetettuun jännitearvoon, jolloin mittaustuloksena on jännite-ero. Jännitetaso dBV ilmaisee, kuinka monta desibeliä jännite on yhden voltin ylä- tai alapuolella. 1 V = 0 dBV 2 V = 6 dBV 4 V = 12 dBV 0,5 V = –6 dBV 0,25 V = –12 dBV ESIMERKKI 1 Jännitearvo 1,58 V halutaan ilmaista dBV:ina. 1,58 V = 3,97 dBV ≈ 4 dBV AU(dBV) = 20 ⋅ log 1V Vastaus: 1,58 V:n jännite vastaa 4 dBV:n jännitetasoa. Tämän voi helposti tarkistaa kytkemällä mittalaiteen osoittamaan dBVjännitetasoa ja mittaamalla esimerkiksi 1,5 V:n pariston jännitetason. DIGITAALIELEKTROniikka DE Luku 2 JN.indd 19 19 20.4.2012 14.03 Ohjaimet Ledien ohjaukset S ana stoa päästösuunta forward, F estosuunta reverse, R pulssinleveysmodulaatio pulse width modulation, PWM tuotettu teho power generated, PG häviöteho power dissipation, PD Ledi on diodi, joka muuttaa sähkövirran valoksi. Diodin tavoin on huolehdittava siitä, ettei ledin läpi kulkevan virran suuruus ylitä sille ilmoitettua virran enimmäisarvoa IF MAX. Ledi on kytkettävä sähkölähteeseen siten, ettei sen napoihin pääse estosuuntaista (vastakkaista) jännitettä, sillä useille ledeille ilmoitetaan estosuuntaiseksi jännitekestoksi IR MAX vain 5 V. On myös syytä havaita, että ledin hyötysuhde voi jäädä hyvin pieneksi, kun se liitetään esimerkiksi 12 V:n tasajännitelähteeseen, ellei sen ohjauksesta erityisesti huolehdita. Merkkivaloledi kytketään jännitelähteeseen yleensä sarjavastuksen avulla. ESIMERKKI 4 Ledin etuvastuksen mitoitus ja hyötysuhteen arviointi Oletetaan ledin sähköisiksi arvoiksi UF = 1,8 V @ 10 mA IFmax = 20 mA. Valitaan ledin virta-arvoksi 50 % enimmäisvirta-arvosta 10 mA. Lasketaan etuvastuksen resistanssi 5 voltin käyttöjännitteelle ja valitaan sopiva käytännön arvo E12-sarjasta. RLED = U − U LED 5 V − 1,8 V 3,2 V 3,2 ⋅ 103 V = = = ⋅ = 320 Ω ⇒ 330 Ω − 3 I LED 10 mA 10 A 10 ⋅ 10 A Simulaatiokytkennästä ilmenee, että sähkölähteestä otettu teho PG on 49 mW ja etuvastukseen lämmöksi muuttuva teho PD on 31,7 mW. Lasketaan ledille tulevan tehon suhde kulutettuun kokonaistehoon eli hyötysuhde η: η = PLED P ⋅ PR 49 mW − 31,7 mW ⋅ 100 % = G ⋅ 100 % = ⋅ 100% = 35 % PG PG 49 mW Tulos: 35 % Sähkönkäytön hyötysuhde ei ole kovin hyvä! 88 DE Luku 5.indd 88 Sekvenssipiirit 20.4.2012 14.46 Ledi ja sen etuvastus #Led_driver.cir ESIMERKKI 5 Ledin etuvastuksen mitoitus ja hyötysuhteen arviointi Oletetaan ledin sähköisiksi arvoiksi UF = 1,8 V @ 10 mA IFmax = 20 mA. Valitaan ledin virta-arvoksi 50 % enimmäisvirta-arvosta 10 mA. Lasketaan etuvastuksen resistanssi 12 V:n käyttöjännitteelle ja valitaan sopiva käytännön arvo E12-sarjasta: RLED = U − U LED 12 V–1,8 V 10,2 V 10,2 ⋅ 103 V = = = ⋅ = 1020 Ω ⇒ 1 kΩ –3 I LED 10 mA 10 A 10 ⋅ 10 A Tulos: Etuvastuksen resistanssi on 1 kW ja tehonkesto 0,25 W. Simulaatiokytkennästä ilmenee, että sähkölähteestä otettu teho PG on 122,8 mW ja etuvastukseen lämmöksi muuttuva teho PD 104,8 mW. Lasketaan ledille tulevan tehon suhde kulutettuun kokonaistehoon eli hyötysuhde h: η = PLED P ⋅ PR 122,8 mW ⋅ 104,8 mW ⋅ 100 % = G ⋅ 100 % = ⋅ 100 % ≈ 15% PG PG 122,8 mW Tulos: 15 % Sähkönkäytön hyötysuhde on heikko. Ledi kuluttaa (merkkivalona) vähän virtaa, mutta se ei ole näin ohjattuna energiataloudellinen. E12-sarja 10 12 15 18 22 27 33 39 47 56 68 82 Yllä olevan esimerkin ledi ja sen etuvastus #Led_driver.cir DIGITAALIELEKTROniikka DE Luku 5.indd 89 89 20.4.2012 14.46 Sanastoa jännitettä pienentävä step down, buck jännitettä suurentava step up, boost himmennin dimmer Ledilampun kytkeminen jännitelähteeseen tehdään usein erityisen ohjauspiirin, mikropiirin, avulla. Suureen hyötysuhteeseen (jopa yli 90 %) yltävä kytkentä perustuu hakkuritoimintaan (esim. 500 kHz - 1 MHz kytkentätaajuus). Kyseessä voi olla jännitettä pienentävä tai sitä suurentava kytkentä. Himmennyksen toteuttamiseen käytetään pulssinleveysmodulaatiota, PWM:ää. Tällöin ledilamppuun menevää jännitettä säädetään muuttamalla suorakaideaaltomuotoisen jännitteen pulssisuhdetta (ylhäälläoloajan suhdetta alhaallaoloaikaan). Seuraavassa esitellään muutamia valaisinledien ohjainpiirejä. Kyseisen mikropiirin lisäksi tarvitaan vain muutamia komponentteja, kuten kela, nopeatoiminen diodi sekä kondensaattoreita ja vastuksia. Lediohjain 1 Ledin ohjain, CAT4240 TSOT-23-kotelossa Lediohjaimen CAT4240 ominaisuuksia: toimintatapa: jännitettä suurentava hakkuri ■■ tulojännitealue: 8 V - 16 V (ledeille) ■■ tulojännite: 5 V (ohjainpiirille) ■■ lähtöjännitealue: 38 V ■■ kuormitusvirta: 31,5 mA ■■ hyötysuhde: 94 % ■■ himmennintoiminto kytkettävissä, PWM 100 Hz - 2 kHz ■■ hakkurin kytkentätaajuus: 1 MHz ■■ Jännitettä suurentavan hakkuriteholähteen periaatepiirros Sähköenergia varautuu kelaan Shottky-diodi Sähköenergia purkautuu kelasta Jännitettä suurentavan hakkuriteholähteen toimintaperiaate VL L1 8V to 16 V 47 µH VIN 5V C1 C3 1 µF D1 90 DE Luku 5.indd 90 1 µF/50 V SW CAT4240 SHDN FB GDN ON/OFF-kytkintoiminto CAT4240-lediohjaimen piirikaavio C2 4.7 µF/16 V VIN VOUT 300 mA (300 mV) R2 1 kΩ R1 1Ω ledien virtarajoitus: 300 mA @ 1 Ω 20 mA @ 15 Ω Sekvenssipiirit 20.4.2012 14.46 kela, L kytkintransistori, SW diodi, D VIN D1 VOUT SW C2 C1 1MHz Oscillator Ref 300 mV – + VIN SHDN Thermal Shutdown & UVLO LED Current PWM Driver & Logic + – Current Sense Over Voltage Protection + – Rs GND FB R1 kuormitusvastus, RL Lisätietoja saa piirin valmistajan datalehdeltä internetistä. Ohjaimen lohkokaaviokuvassa esitetään piirin sisäisen kytkennän toiminta. CAT4240-lediohjaimen lohkokaavio katkoviivoitetulla alueella S a nas toa ledin ohjain led driver virtavahti current sense Lediohjain 2 ylijännitesuojaus over voltage protection Lediohjaimen CAT4201 ominaisuuksia: ■■ toimintatapa: jännitettä pienentävä hakkuri ■■ tulojännitealue: 6,5 - 36 V ■■ lähtöjännitealue: 32 V ■■ kuormitusvirta: 350 mA ■■ hyötysuhde: 94 % ■■ himmennintoiminto kytkettävissä, PWM 100 Hz - 2 kHz ■■ hakkurin kytkentätaajuus: 1 MHz alijännitesuojaus undervoltage lockout, UVLO vertailu, referenssi reference, Ref lämpösuojaus thermal shutdown kytkin switch, SW Seuraavalla sivulla oleva sovelluskytkentä syöttää kuutta sarjaan kytkettyä lediä mutta niiden lukumäärä voisi olla pienempikin, jopa vain yksi, sillä ledeille syötetään vakiovirtaa. DIGITAALIELEKTROniikka DE Luku 5.indd 91 91 20.4.2012 14.46 VBAT R3 36V 2Ω Shottky-diodi C1 4.7 µF R1 10 kΩ Eräs CAT4201-piirin sovelluskytkentä sekä käytännön piiri Yksinkertaistettu malli VBAT CAT4240 RSET D1 C2 2.2 µF L CTRL SW GDN 47 µH 300 mA R2 1 kΩ Virtarajoitus asetetaan vastuksen R1 avulla. Kuvan mukainen resistanssiarvo (10 kW) vastaa 300 mA:n virtarajoitusta ja 33 kWrajoittaa virran 100 mA:ksi. Kytkemällä kolme yllä olevaa kytkentää rinnakkain voidaan tarvittaessa ohjata yhtä 1 A:n lediä. Lisätietoja piirin toiminnasta ja mitoituksista saa valmistajan datalehdeltä internetistä esimerkiksi hakusanalla ”CAT4201 data”. Ledivalaisimia ei aina ole helppo tunnistaa pelkän komponenttilevyn perusteella. Kuvassa on yllä esitetyn piirikaavion mukainen ledivalaisimen koekytkentä. Sen piirilevy on valmistettu jyrsimällä. Piirikaaviokuvasta poiketen siinä on vain yksi 1 A:n ledi. Sen jännitelähteenä on käytetty 9 V:n paristoa. Saavutettu valoteho on ollut hyvin voimakas, joten silmien suojaus on syytä muistaa. Sähköenergia varautuu kelaan Sähköenergia purkautuu kelasta Jännitettä pienentävän hakkuriteholähteen toimintaperiaate 92 DE Luku 5.indd 92 Kuvassa on edellä olevan piirikaavion mukainen protokytkentä, jossa kuuden ledin ryhmä on korvattu yhdellä teholedillä. Sekvenssipiirit 20.4.2012 14.46 Lediohjain 3 Lediohjaimen NCP5005SNT1G ominaisuuksia: toimintatapa: jännitettä suurentava hakkuri ■■ tulojännitealue: 2,7 V - 5,5 V ■■ lähtöjännitealue: 24 V ■■ kuormitusvirta: 50 mA ■■ hyötysuhde: 90 % ■■ himmennintoiminto kytkettävissä (EN), PWM ■■ kaikki liitinnastat ESD-suojattu S a na s toa ■■ sallinta enable, EN takaisinkytkentä feedback, FB Seuraava sovelluskytkentä voi syöttää 2 - 5 sarjaan kytkettyä lediä. Niiden virransyöttö tapahtuu vakiovirtaperiaatteella. PWM-pulssin syötön mahdollisuus VBAT GND VBAT U1 4 EN 2 3 C1 VBAT 5 4.7 µF L1 22 µH GND D1 VOUT 1 FB R1 15 Ω D6 D5 Shottky-diodi, 0,5 A, 30 V MBRO530 NCP5005 GND GND C2 1.0 µF D4 D3 D2 LWT67C LWT67C LWT67C LWT67C LWT67C GND NCP5005SNTIG-piirin sovelluskytkentä ja käytännön piiri 7-segmenttien (ledi) ohjaukset 7-segmenttinäytössä on seitsemän lediä (kahdeksan, jos mukana on desimaalipilkku). Niiden ohjaamiseksi tarvitaan ohjauspiiri, joka saa 7-segmentin ledit palamaan siten, että niistä muodostuu haluttu numero. Samalla ledien läpi kulkeva virta täytyy rajoittaa sopivan suuruiseksi. a f g e b c d 7-segmenttinäytön segmenttien merkitseminen DIGITAALIELEKTROniikka DE Luku 5.indd 93 93 20.4.2012 14.46 3,8 b a 7 6 c 4 d e 2 1 f g DP 9 10 5 7-segmenttinäytön piirikaavio 7-segmenttinäytön ohjauksen periaate #7-segment_driving.cir Lyh e n t ei tä binary coded decimal BCD decimal point DP dual in line DIL buffered B Yllä esitetyn 7-segmentin ohjaimen laajuus ei näy kokonaan piirroksessa, sillä siinä esitetään vain numeroiden 1, 2, 3 ja 4 muodostuminen. Käytännön kytkennässä, mikropiirissä, tulojen määrä on karsittu neljään. On edullisempaa käyttää nelilankaista BCD-muodossa olevaa ohjausta kuin kymmenlankaista suoraa ohjausta. Lisäksi näytettävä numero saadaan laskinketjulta (neljältä kiikulta) suoraan BCD-muodossa. 23 = 8 CD4511B DIL16-kotelossa 22 = 4 21 = 2 7-segmenttinäytön ohjaus binäärikoodilla 20 = 1 #7-segment_driver.cir CD4511B on 16-jalkainen BCD to 7-segment latch decoder driver -piiri, johon syötetty binäärikoodattu luku muuttuu desimaaliluvuksi ja ohjautuu 7-segmenttinäytölle. Piirin tuloihin ABCD syötetyn binääriluvun painoarvot esitetään piirikaaviossa, jolloin kytkinten S1-S4 muodostama binäärikoodi 0101 antaa luvun 5, sillä 0×23+1×22+0×21+1×20 = 0 + 4 +0 + 1 = 5. LT on normaalisti ykkösessä, ja sen muuttaminen nollaan saa aikaan testin, jolloin kaikki segmentit palavat (= numero 8). LE taas on normaalisti nollassa, mikä mahdollistaa salpapiirin toiminnan. 94 DE Luku 5.indd 94 Sekvenssipiirit 20.4.2012 14.46 P r o j ek t i 3 7-segmenttien ohjauksen rakentaminen Rakennetaan koekytkentälevylle vaiheittain a) 7-segmentin ohjauskytkentä b) BCD-kooderi ja c) binääri/dekadi-muotoinen ylös/alas-laskuri. nelikulmainen Tutustu ensin tämän projektin lopussa esitettävään valmiiseen tuotokseen ja aloita sen jälkeen koekytkentälevyn kalustaminen vaiheittain. Siirry seuraavaan vaiheeseen vasta sen jälkeen, kun olet testannut kokoamasi vaiheen ja todennut sen toimivuuden. Osa- ja tarvikeluettelo: ■■ pala koekytkentälevyä, jossa on johtimet vaakasuunnassa ■■ yksinapaisia liittimiä (pinnejä), 2 kpl ■■ mikropiirikanta, DIL16, 2 kpl ■■ mikropiiri CD4511B, DIL16-kotelo, 1 kpl ■■ mikropiiri CD4029B, DIL16-kotelo, 1 kpl ■■ vastus, R1-R12, 1 kW, 0,25 W, 12 kpl ■■ 7-segmentti, CC, SA56-11EWA, 1 kpl ■■ ledi, D1-D4, Ø 3,0 mm, punainen, 4 kpl ■■ ledi, D5, Ø 3,0 mm, vihreä, 1 kpl ■■ ledi, D6, Ø 3,0 mm, keltainen, 1 kpl ■■ muovieristeistä kytkentälankaa ■■ tekstitetyt teipit Esimerkissä käytetään SA56-11EWA-tyypin 7-segmenttiä, joka on tyypiltään yhteiskatodi (sen ledien katodit on liitetty yhteen). Kyseisen näytön piirikaavio ja kantakytkentä on esitetty alla. pyöreä Pinni S a na stoa dekooderi decoder ohjain driver lampputesti lamp test, LT tyhjennys blanking, BL salvan sallinta latch enable, LE vilkutus strobe yhteiskatodi common cathode, CC yhteisanodi common anode, CA päältä nähtynä top view a) 7-segmentin ohjauskytkentä Tutkitaan aluksi 7-segmentin toimintaa yleismittarin, tasajännitelähteen ja etuvastuksen avulla. yhteiskatodi, CC erilliset anodit 10 6 1 5 7-segmenttinäytön piirikaavio, kantakytkentä ja pinnijärjestys päältä nähtynä DIGITAALIELEKTROniikka Sekvenssipiirit DE Luku 5.indd 95 95 20.4.2012 14.46 Muistisääntö 1 kW:n vastus rajoittaa virran suuruuden suunnilleen käyttöjännitteen lukuarvon mukaisiksi milliampeereiksi. I = U R [mA ] = 7-segmentti muodostuu ledeistä, joten sen jokaiselle ledille (segmentille) on asetettava ledin virtaa rajoittava vastus. Nyt sen segmenttien järjestys ja napaisuus (CC tai CA) voidaan tutkia tasajännitelähteen (5 V - 15 V) avulla, jolloin 1 kW:n vastus rajoittaa virran noin 5 mA - 15 mA:n suuruiseksi. [V] [1 k W] anodille katodille 7-segmenttinäytön kantakytkennän ja napaisuuden selvittäminen Edellä esitetty tutkimus voidaan tehdä ilman tasajännitelähdettä ja sarjavastuksia, kun tasajännitelähteenä (ja virranrajoitusvastuksena) käytetään yleismittaria. anodille katodille Yleismittarin käyttäminen jännitelähteenä 96 DE Luku 5.indd 96 Sekvenssipiirit Ohjaimet 20.4.2012 14.46 Yleismittarissa voi olla sellainen ohmialue (esim. dioditestaus), jonka mittausjännite on suurempi kuin mitattavan 7-segmenttinäytön ledin kynnysjännite (esim. 2 V), jolloin mittaus aiheuttaa yksittäisen segmentin palamisen. Analogista yleismittaria käytettäessä on muistettava, että sen napaisuus ”jännitelähteenä” on mittariin merkittyyn nähden vastakkainen. Kokoa 7-segmentti ja sen tarvitsemat vastukset koekytkentälevylle. Lisää levylle jännitesyöttöliittimet ja merkkivalo etuvastuksineen. Tee piirikaaviota apuna käyttäen tarvittavat johdinkatkokset ja hyppylankaliitännät. 7-segmenttinäyttö ja sen etuvastukset tilavaraus laskimelle +12 V merkkivalo ja sen etuvastus pinni GND LochMaster-ohjelma 7-segmenttinäytön, etuvastusten ja merkkivalon kytkentä koekytkentälevyllä Testaa kokoamasi kytkennän toimivuus! b) BCD-dekooderi BCD-dekooderin tuloihin syötetään neljä binäärilukua, joista piiri muodostaa desimaaliluvun ja syöttää sen 7-segmenttinäytön segmenteille. BCD-kooderina käytetään tässä CD4511Bpiiriä. Piirin kantakytkennästä selviävät a) jännitesyöttö, jossa VDD tulee plus-napaan ja VSS miinus-napaan, b) 7-segmenttinäytön segmenteille tulevat liitännät (a, b, c, d, e, f ja g), BCDtuloliitännät (A, B, C ja D), 7-segmentin kaikkien segmenttien testaustulo (lampputesti, LT), numeron vilkutus (BL) ja sal paus (LE). DIGITAALIELEKTROniikka Sekvenssipiirit DE Luku 5.indd 97 S a na stoa kooderi, koodain coder dekooderi, koodin purkain decoder 97 20.4.2012 14.46 1 16 VDD C 2 15 f LT 3 14 g BL 4 13 a CD4511B CD4511B-dekooderin kantakytkentä ja käytännön piiri B 12 b 6 11 c A 7 10 d VSS 8 9 e LE 5 D merkki 9 8 16 1 Liitä DIL16-mikropiirikanta, CD4511B-piiri, ledit ja niiden etuvastukset koekytkentälevylle. Tee piirikaaviota apuna käyttäen koekytkentälevyyn tarvittavat johdinkatkokset ja hyppylankaliitännät. 7-segmenttinäytön ja sen ohjauspiirin piirikaavio #BCD-decoder.cir dekooderi ja sen kanta BCD-tulot D C B loveus A tilavaraus laskimelle 8 7-segmenttinäyttö ja sen ohjauspiiri 98 DE Luku 5.indd 98 4 2 1 binäärilukujen painoarvot Sekvenssipiirit Ohjaimet 20.4.2012 14.46 Testaa kokoamasi kytkennän toimivuus kytkemällä tulot: LE = 0, LT = 1 ja BL = 1 ja syöttämällä BCD-tuloihin binäärilukuja totuustaulun mukaisesti. LE BL LT D C B A a b c d e f g Näyttö x x 0 x x x x 1 1 1 1 1 1 1 8 x 0 1 x x x x 0 0 0 0 0 0 0 Blank 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 2 0 1 1 0 0 1 1 1 1 1 1 0 0 1 3 0 1 1 0 1 0 0 0 1 1 0 0 1 1 4 0 1 1 0 1 0 1 1 0 1 1 0 1 1 5 0 1 1 0 1 1 0 0 0 1 1 1 1 1 6 0 1 1 0 1 1 1 1 1 1 0 0 0 0 7 0 1 1 1 0 0 0 1 1 1 1 1 1 1 8 0 1 1 1 0 0 1 1 1 1 0 0 1 1 9 c) Binääri/dekadi-muotoinen ylös/alas-laskuri. Tämä laskinpiiri on toiminnoiltaan varsin monipuolinen. Periaatteessa sen rakenne on kuitenkin yksinkertainen: siinä on vain neljä kiikkua. Peräkkäin kytkettyinä kiikut jakavat sisään tulevan kellopulssin taajuuden kuudellatoista (24 = 16), jolloin laskin toimii binäärilaskurina (00002-11112). Tämä toiminto on luettavissa laskimen lähtöön tulevista neljästä ledistä. Ulkoisella ohjauksella (binary/decade) sisäistä kytkentää voidaan muuttaa siten, että laskin toimii dekadilaskimena (0-9), mikä näkyy ledien lisäksi myös 7-segmenttinäytössä. Laskinpiirissä on up/ down-tulo, jolla sen toiminta voidaan muuttaa alhaalta ylöspäin laskennan sijaan ylhäältä alaspäin laskentaan. Jam-tulojen (J1– J4) avulla laskin voidaan asettaa nollan sijasta johonkin toiseen haluttuun alkuarvoon. DIGITAALIELEKTROniikka Sekvenssipiirit DE Luku 5.indd 99 Totuustaulusta esitetään tässä vain alkuosa (DCBA) 0000BIN - 0101BIN sillä näillä yhdistelmillä voidaan tuottaa desimaaliluvut 0-9. Tulotilat 1010BIN1111BIN eivät tuota näyttöön mitään (Blank). S a na s toa esiaseteltava presettable laskuri counter muistinumero carry alkuasetus jam 99 20.4.2012 14.46 1 16 VDD Q4 2 15 CLOCK J4 3 14 Q3 J1 4 13 J3 CARRY IN 5 12 J2 Q1 6 11 Q2 CARRY OUT 7 10 UP/DOWN VSS 8 9 BINARY/DECADE CD4029B CD4029B-laskinpiirin kantakytkentä ja käytännön piiri merkki PRESET/ENABLE 9 8 16 1 Liitä vielä toinen DIL16-mikropiirikanta ja CD4029B-piiri koekytkentälevylle. Tee piirikaaviota apuna käyttäen koekytkentälevyyn tarvittavat johdinkatkokset ja hyppylankaliitännät. Ylös/alas-laskurin piirikaavio Ylös/alas-laskuri rakennettuna koekytkentälevylle 100 Sekvenssipiirit Ohjaimet DE Luku 5.indd 100 20.4.2012 14.46 Oskilloskooppikuvista ilmenee, miten dekadilaskimeksi kytketyn laskinpiirin signaalien aaltomuodot poikkeavat binäärilaskimeksi kytketyn laskimen aaltomuodoista. Nelikanavaisen oskilloskoopin signaalikuvat CD4029B-dekadilaskimen pisteistä a) clk, b) Q2, c) Q3 ja d) Q4. D-kanavalla mitatun laskimen Q4-lähtösignaali on epäsymmetrinen. Sen ylhäälläoloaika vastaa kahta A-kanavan kellopulssia ja alhaallaoloaika kahdeksaa kellopulssia. Koko pulssin pituuteen mahtuu 10 kellopulssia. Nelikanavaisen oskilloskoopin signaalikuvat CD4029Bbinäärilaskimen pisteistä a) clk, b) Q2, c) Q3 ja d) Q4. D-kanavalla mitatun laskimen Q4-lähtösignaali on symmetrinen. Sen ylhäälläoloaika vastaa kahdeksaa A-kanavan kellopulssia ja alhaallaoloaika myös kahdeksaa kellopulssia. Koko pulssin pituuteen mahtuu 16 kellopulssia. Testaa kokoamasi laskurin toimivuus: 1. Laskeeko laskuri kellopulsseja alhaalta ylöspäin? 2. Laskeeko laskuri kellopulsseja ylhäältä alaspäin? 3. Täsmäävätkö ledien binääriluku ja 7-segmentin desimaaliluku? DIGITAALIELEKTROniikka Sekvenssipiirit DE Luku 5.indd 101 101 20.4.2012 14.47 tehtäviä Mikro-ohjainten muistit s. 198 1 Mikro-ohjaimissa on kolmentyyppistä muistia: ohjelma-, data- ja käyttömuistia. Mitä muistitekniikoita näihin muisteihin käytetään? Mainitse ainakin yksi etu ja haitta kustakin muistitekniikasta. Digitaaliset tulo-ja lähtöportit s. 200 2 AD-muunnin s. 207 6 Mitä eroa on tavallisella ja open-draintyyppisellä lähdöllä? Voiko tavallista mikro-ohjaimen lähtöä käyttää kuten open-drain-lähtöä? JTAG-kappaleessa mainittiin lyhenteet CPLD ja FPGA. Mistä nämä lyhenteet tulevat ja miten JTAG liittyy niihin? 7 4 Kuvaile, miten mittaisit taajuutta ajastimen avulla? Komparaattori s. 206 5 Kerro lyhyesti, mikä on komparaattori. Anna esimerkki komparaattorin käyttökohteesta. Monet mikro-ohjaimet pystyvät tuottamaan PWM-signaalia suoraan sisäisten oheislaitelohkojensa avulla. Miksi kuitenkin 20 MHz:n taajuudella toimivan AVR-piirin PWM-signaalin taajuus jää alle 20 kHz:n, kun tuotetun signaalin resoluutio on kymmenen bittiä? Sarjaportti s. 212 8 Ajastimet s. 203 AD-muuntimien datalehdissä on usein mainittu termit INL ja DNL. Mitä nämä termit tarkoittavat? Onko laadukkailla AD-muuntimilla suuret vai pienet INL- / DNL-arvot? PWM s. 209 JTAG, ohjelmointi- ja testiliityntä s. 202 3 234 Aiemmin kirjassa esiteltiin esimerkki piirin ATmega324p sarjaportin alustamiseksi asetuksin 38400 bps, 8 databittiä, 1 stop bitti, ei pariteettibittiä. Mitä esimerkissä pitäisi muuttaa, jotta sarjaportti alustuisi asetuksin 9600 bps, 7 databittiä, 1 stop bitti, ”Even”-pariteetti? Sarjamuotoiset oheislaiteliitynnät s. 214 9 Etsi internetistä viisi esimerkkiä SPI-, I2Ctai 1-Wire-väylää käyttävistä sarjamuotoisista oheislaitteista, joita ei ole esitelty kirjassa. MIKRO-OHJAIMET DE Luku 9 JN.indd 234 19.4.2012 13.24 Kirjassa käytettyjä C-kielen ohjelmakäskyjä unsigned Muuttujatyypin eteen kirjattava lisämääre, jolla määritellään muuttuja etumerkittömäksi (esim. unsigned char). Vastaavasti avainsanalla ”signed” muuttujatyyppi voidaan määritellä etumerkilliseksi, jolloin se voi saada myös negatiivisia arvoja. char Muuttujatyyppi, jota käytetään merkkien, kuten ’s’, ’e’ tai ’A’, tallentamiseen. ”Char”-tyypin muuttuja voidaan tulkita myös kokonaislukuna, jolloin sen arvoalue on 0..255 (etumerkitön) tai –128..127 (etumerkillinen). if, else if ja else Näiden ohjelmakäskyjen avulla ohjelmaan saadaan muodostettua ehdollisia haarautumia, joissa sama ohjelma saadaan suorittamaan eri toimintoja ehtolauseessa ilmaistun ehdon mukaisesti. Esimerkiksi käsky ”if(i==3) a++;” kasvattaa muuttujan ”a” arvoa yhdellä vain, jos muuttujan ”i” arvo on 3. Jos haaraumaan halutaan useampia komentoja, ne kaikki kirjoitetaan {aaltosulkuparin} sisään. while Tämän ohjelmakäskyn avulla useita kertoja peräkkäin toistettava toiminnallisuus voidaan esittää lyhyessä ja helposti luettavassa muodossa. Esimerkiksi käsky while(i<=5) toistaa sen jälkeen {aaltosulkuihin} kirjoitettua ohjelmaa niin kauan, kunnes muuttujan i arvo on suurempi kuin 5. for ”For”-käsky on ”while”-käskyn tapaan silmukointikomento. Tässä käskyssä voidaan ehdon lisäksi antaa myös toteutusosa, joka suoritetaan jokaisella toistokerralla, ja alustusosa, joka suoritetaan vain kerran ennen ensimmäistä toistoa. Esimerkiksi lause for(i=0;i<=5;i++) alustaa ensin muuttujan i arvoon 0, toistaa käskyn jälkeen {aaltosulkuihin} kirjattua ohjelmaa, kunnes muuttujan i arvo on suurempi kuin 5 ja kasvattaa jokaisen toiston aikana muuttujan i arvoa yhdellä. _delay_ms(...) Tämä on esimerkki funktiokutsusta, jolla kutsutaan joko käyttäjän määrittelemää tai kirjastosta ladattavaa funktiota. Funktiolle annettavat argumentit kirjataan heti funktion nimen perässä olevien sulkujen sisään. main() ”Main()” on käyttäjän määrittelemä funktio. Muista funktioista poiketen sitä ei kuitenkaan kutsuta mistään, vaan mikro-ohjaimen ohjelman suoritus lähtee tavallisesti ”main”funktiosta. Tyypillisesti mikro-ohjaimen ohjelman ”main”-funktiosta löytyy myös loputtomiin suoritettava silmukka, jossa toteutetaan suurin osa ohjelman toiminnoista. #include Ohjelmoinnissa käytetään usein hyödyksi aiemmin ohjelmoituja valmiita funktioita, jotka on tavallisesti sisällytetty erityisiin kirjastoihin. Näiden kirjastojen sisällyttäminen osaksi ohjelmaa tapahtuu ”include”-käskyn avulla. asm(...) Toisinaan C-kielisestä ohjelmasta halutaan kutsua myös assembly-kielen käskyjä. Tämä käytäntö vaihtelee hieman eri kääntäjien välillä. Tämän kirjan ohjelmaesimerkeissä käytetyssä kääntäjässä (WinAVR) nämä kutsut tapahtuvat ”asm”-funktion avulla. ISR(...) Tämän kirjan ohjelmaesimerkeissä käytetty kääntäjä (WinAVR) käyttää tätä funktiota keskeytysrutiinien määrittämiseen. Funktion argumentilla määritellään, mikä keskeytysrutiini on kyseessä. DIGITAALIELEKTRONIIKKA DE Luku 9 JN.indd 235 235 19.4.2012 13.24
© Copyright 2024