====== Harjutusülesanded ====== ===== Ülesanded ===== Eesmärgiks on koostada programm, mis täidab kirjeldatud ülesannet. ===== Soojendusülesanne ===== * Panna punane LED vilkuma 10-sekundilise perioodiga (poolperiood 5 s). Teostamiseks luua tarkvaralise viite funktsioon, mille parameetriks on sekundite arv. ===== Algajale ===== - LCD ekraanil kuvada aega 100 ms täpsusega, mis kulub suvalise kahe nupu allavajutamiste vahel. Aja mõõtmise teostuse võib vabalt valida. - 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. Kasutada viitefunktsioone või katkestusi. (Katkestused on keerukamad, kuid viitefunktsioonidega tekib nuppude filtreerimisfunktsiooni tõttu lisaviide.) - 7-segmendilisel LED indikaatoril kuvada nupu S1 vajutamise sagedus hertsides. Sageduse näit tuleb piirata madalamalt nulli ja kõrgemalt üheksaga. - Nupule S1 vajutades loendab programm sekundeid 60-st nullini ja süütab seejärel punase LED-i. Nupule S2 vajutades on ajaks 30 sekundit, misjärel süüdatakse kollane LED. Nupp S3 aeg on 10 sekundit ja süüdatav LED on roheline. Kõik protsessid peavad toimima paralleelselt. LED-id kustuvad, kui vajutada vastavaid nuppe. - Näidata LCD ekraanil kellaaega kujul "hh:mm:ss". Kasutada tuleb riistvaralist taimerit koos katkestustega ja kellaaeg peab nuppudega seadistatav olema. Soovitatav on kasutada 3 nuppu, millest S1 suurendab roteeruvalt tunde, S2 minuteid ja S3 sekundeid. ===== Edasijõudnule ===== - Teha stopper, mis LCD ekraanil kuvab tunde, minuteid, sekundeid ja millisekundeid. Nupp S1 alustab mõõtmist, S2 peatab mõõtmise ja S3 nullib aja. Kasutada tuleb taimeri katkestust. - 2-sekundilise vahega süttib ja kustub sujuvalt järjest punane, kollane ja roheline LED. Sujuv valgustus saadakse LED-i mitmesajahertsise sagedusega moduleerides (seda ülikiiresti süüdates ja kustutades) ja põlemise/kustumise aja proportsioone muutes, mistõttu silmale paistab, et LED-i heledus muutub (tegu on pulsilaiusmodulatsiooniga). ===== Kordamisküsimused ===== - Millised meetodid on viite tekitamiseks? - 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. - Mis asi on arvutites peituv "RTC"? - Mis juhtub 19. jaanuaril 2038 arvutite maailmas? - Mida saab AVR taimeritega veel teha peale aja loendamise? - Milline on suurim katkestuste ajaline täpsus millisekundites, mida on võimalik saavutada ATmega128A1U mikrokontrolleriga, mis töötab 32MHz 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.