This is an old revision of the document!


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

  1. LCD ekraanil kuvada aega 100 ms täpsusega mis kulub suvaliste nuppude allavajutamiste vahel. Aja mõõtmise teostus vabal valikul.
  2. Vajutades nuppu S1 kõigi kolme LED-i vilkumine aeglustub 2 korda, vajutades nuppu S3 vilkumine sageneb 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).
  3. 7-segmendilisel LED indikaatoril kuvada nupu S1 vajutamise sagedust hertsides. Sageduse näit tuleb piirata madalamalt nulli ja kõrgemalt üheksaga.
  4. Nupule S1 vajutades loendab programm sekundeid 60-st nulli ja süütab seejärel punase LED-i. Nupule S2 vajutes on ajaks on 30 sekundit misjärel süüdatakse kollane LED. Nupp S3 aeg on 10 sekundit ja LED on roheline. Kõik protsessid peavad toimima paralleelselt. LED-id kustuvad vastavaid nuppe vajutades.
  5. Näidata LCD ekraanil kellaaega kujul hh:mm:ss. Kasutada tuleb raudvaralist taimerit 1 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

  1. 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. 2-sekundilise vahega süttib ja kustub sujuvalt järjest punane, kollane ja roheline LED. Sujuv valgustus saadakse LED-i mitmesaja hertsise sagedusega moduleerides (seda ülikiiresti süüdates ja kustutades) ja põlemise/kustumise aja proportsioone muutes, mismõttu silmale paistab, et LED-i heledus muutub (tegu on pulsilaiusmodulatsiooniga).
  3. Tekitada C keelde programmilõik mis tekitab 14.7456 MHz taktsagedusel 10 μs ± 10 % viite. Viite toime tõestada teoreetiliselt - kompileeritud programmi .lss failis olevaid assembler keele instruktsioone kommenteerides.

Kordamisküsimused

  1. Millised meetodid on viite tekitamiseks?
  2. Kuidas tekitada tarkvaraline viide? Millistest parameetritest tarkvaralise viite kestvus sõltub?
  3. Mis sunnib kasutama raudvaralist taimerit koos katkestusega?
  4. Arvutage 8-bitise taimeri ületäitumise katkestuse periood kui taktsagedus on 16 MHz ja sagedusjaguri tegur 1024.
  5. Mis asi on arvutites peituv “RTC”?
  6. Mis juhtub 19 jaanuaril 2038 arvutite maailmas?
  7. Mida saab AVR taimeritega veel teha peale aja loendamise?
  8. Millised registrid määravad ära Timer0 töö. Mida on nende registritega võimalik seadistada?
  9. Milline on suurim ajaline täpsus millisekundites, mida on võimalik saavutada AVR mikrokontrolleriga, mis töötab 14.7456 MHz taktsagedusel? Näidake arvutusvalem.
  10. Kui mikrokontroller töötab suurel koormusel (näiteks juhib mitut mootorit ja kontrollib pidevalt paljude andurte väärtusi), siis kas see mõjutab taimeri aja mõõtmise täpsust? Selgitage oma vastust.
et/exercises/timer.1263817012.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0