Harjutusülesanded
Eesmärgiks on koostada programm, mis täidab kirjeldatud ülesannet.
Soojendusülesanne
Algajale
Imiteeritakse klassikalise autode valgusfoori tööd.
Imiteeritakse ülekäiguraja autode valgusfoori tööd. Kuni pole vajutatud ühelegi nupule, põleb autodele roheline LED. Pärast nupule (S1) vajutamist hakkab roheline LED kolmeks sekundiks vilkuma, seejärel süttib kolmeks sekundiks kollane ning kümneks sekundiks punane ja lõpuks jääb uuesti pidevalt põlema roheline LED, kuni toimub uus nupule vajutus. Ajal mil põleb punane tuli, näidatakse jalakäijale aega 7-segmendisel numbernäidikul, kui kaua on veel aega (sekundites) rohelise lubava tule süttimiseni.
Loendatakse nupuvajutusi. Tulemus kuvatakse LED-i vilkumistega. Pärast igat nupule vajutamist suureneb vilgutamiste arv ühe võrra. Valida võib suvalise nupu. LED-i vilgutamiseks kasutada alamfunktsiooni, mille parameetriks on vilkumiste arv.
Suvalises järjekorras esitatakse 7-segmendilisel indikaatoril kuueteistkümnendsüsteemi arve sagedusega 1 Hz.
Vajutades nuppu S1, aeglustub kõigi kolme LED-i vilkumine 2 korda, vajutades nuppu S3, sageneb vilkumine 2 korda, ja vajutades nuppu S2, määratakse vilkumise sageduseks 1 Hz. Ülesanne tuleb lahendada katkestuste abil (mitte tarkvaralise viitega).
Luuakse kolm lihtsat muusikalugu, mis mängitakse ette nupule vajutamise järel. Edasijõudnud võivad teha nii, et lugu saab vahetada (nupule vajutusel) ka poole loo pealt.
Edasijõudnule
Vajutades nuppe järjekorras S3 – S2 - S1, süttib roheline LED. Kõigi teiste kombinatsioonide korral süttib punane LED. Iga nupuvajutuse korral vilgatab kollane LED, mis kinnitab nupule vajutust.
Igale LED-ile vastab üks nupp. Kontroller vilgutab LED-e suvaliselt ja kasutaja peab nuppe vajutades sama jada kordama. Vilkumiste jada läheb iga korraga järjest pikemaks, lisades eelnevale jadale uue suvalise LED-i. Pärast iga kasutaja sisestuskorda kontrollitakse, kas sisestus oli õige. Sisestuste vahe on kaks sekundit. Vale sisestuse korral vilgutatakse kõiki tulesid korraga kolm korda. (Mängija õigete sisestuste arvu võib kuvada LCD ekraanil.)
7-segmendilisel indikaatoril pannakse 500 ms perioodiga ringiratast kordamööda põlema välised 6 segmenti.
Graafilisel LCD-l näidatakse sümbolit “X”, mida saab nuppudega liigutada. Nupp S1 liigutab vasakule, S3 paremale ja S2 vahetab rida.
Lihtne ussimäng graafilisel LCD ekraanil. Ussi laius on 1 piksel, pikkus 5 pikslit. Ussi saab nuppudega vasakule või paremale pöörama panna. Uss peab suutma vältida kokkupõrget ekraani servaga (enne seda ära keerama). Boonuspunktid munade korjamise võimaluse ja järjest pikeneva ussi eest. Ülesande lihtsam lahendus on uss teha “O” tähtedest.
Kordamisküsimused
Mis on tehete “=” ja “==” erinevus? Esitage selle erinevuse tõestuseks kaks näidet.
Mis on tehete “|” ja “||” erinevus? Esitage selle erinevuse tõestuseks kaks näidet.
Kirjutage avaldis, milles kasutate võrrandit “x = x + 1” kaksteist korda.
Kuidas kirjutate C-keeles lõputu tsükli? Esitage kaks erinevat varianti.
Millist tüüpi muutuja valite C-keeles, et esitada positiivseid arve vahemikus 7 kuni 154?
Milline register määrab ära pordi suuna? Tooge pordi näide sisendi ja väljundi seadistamise kohta.
Milliste meetoditega saab elimineerida lüliti kontaktide põrkumisest tekkivaid väärlülitusi? Tooge näiteid riistvaralise ja tarkvaralise lahenduse kohta.
Mida tähendab termin bitinihutus? Tooge praktiline näide koos seletusega.
Miks kasutatakse lülitite juures pull-up takistit? Mille järgi määratakse selle takistus?
Arvutage LED-i voolu piirava takisti väärtus, kui toitepinge on 5 V, LED-i päripinge 2,7 V ja vool 30 mA.
Mitu viiku kasutab 7-segmendiline numbernäidik (koos punktisegmendiga), kui see on ühendatud mikrokontrolleriga otse? Mitu viiku on vaja, kui numbernäidikut juhitakse läbi nihkeregistri 74HC595?
Mis määrab 7-segmendilise numbernäidiku heleduse? Kuidas seda reguleerida, kui numbernäidikut juhitakse otse ja läbi nihkeregistri 74HC595?
Kuidas teisendada kümnendsüsteemi arvu kahendsüsteemi arvuks (tekstikujul) ja vastupidi?
Mille poolest erineb monokromaatiline (must-valge) ja värviline LCD ekraan?
Kuidas tekitada tarkvaraline viide? Millistest parameetritest tarkvaralise viite kestus sõltub?
Mis sunnib kasutama riistvaralist taimerit koos katkestusega?
Arvutage 8-bitise taimeri ületäitumise katkestuse periood, kui taktsagedus on 16
MHz ja sagedusjaguri tegur 1024.
Mida saab AVR taimeritega veel teha peale aja loendamise?
Milline on suurim katkestuste ajaline täpsus millisekundites, mida on võimalik saavutada ATxmega128A1U mikrokontrolleriga, mis töötab 32
MHz taktsagedusel? Näidake arvutusvalem.
Kui protsessor on tugevalt koormatud programmi täitmisega (näiteks juhib mitut mootorit ja kontrollib pidevalt paljude andurite väärtusi), siis kas see mõjutab taimeri aja mõõtmise täpsust? Selgitage oma vastust.