Kodutöö III variant: Mikrokontrolleril postfix

Ülesande kirjeldus

Emuleeri postfixi parser kasutades Basys MX3 arendusplatvormi.

Postfixi tuntakse ka  Reverse Polish notation nime all.

Demo

Kodutöö valmistulemus peaks nägema välja sarnane järgnevale videole. Osade funktsioonide käitumine võib olla erinev, kuid see peab olema vastavuses ülesande nõuetega.

Dokumentatsioon

  • Tiitelleht
  • Autorideklaratsioon
  • Lühendite ja mõistete sõnastik (vajadusel)
  • Sisukord
  • Jooniste ja tabelite loetelu (vajadusel)
  • Programmi töövoo ja põhimõtte kirjeldus
    • Programmi töövoog
    • Nimekiri kõigist võimalikest vigadest ja kuidas neid käsitsetakse
    • Nimeta ja kirjelda kõik veakoodid.
    • Nimeta ja kirjelda kõik operatsioonid ja nende koodid
    • Kirjelda oma andmestruktuuri
  • Kokkuvõte
    • Kirjuta mõni lause oma lähenemisest ülesandele ja tööprotsessi kohta.
    • Kirjuta mõni lause ülesandest ja selle keerukusest sinu jaoks.
    • Kui võimalik, hinda ülesande sooritamise ajalist mahtu.
    • Kas soovitad ülesannet kasutada ka tulevikus? Kas ja mida muudaksid?
    • Täiendavad kommentaarid, emotsioonid, mõtted.
  • Kasutatud kirjandus (vajadusel)
    • Kõik mis ei olnud kaetud selle õppeaine raames ja mida sa ei loonud iseseisvalt.
    • Ka näiteks sõbra või kursusekaaslase abi tuleks viidata: https://libraryguides.vu.edu.au/ieeereferencing/personalcommunication
    • Kui kasutasid tehisintellekti (nt ChatGPT), peab selle kasutus olema viidatud – mis ulatuses ja mille jaoks kasutasid.
    • Viited allikatele peavad olema täpsed. Näiteks viitena stackoverflow.com või google.com ei sobi. Viide peab olema konkreetsele leheküljele kust informatsioon pärineb.

NB! Funktsioonide dokumenteerimine on osa dokumentatsioonist. Funktsioonid tuleb dokumenteerida koodis. Iga funktsiooni kohta kirjelda selle eesmärki, parameetreid, nõudeid parameetritele tagastavat väärtust ja kõrvalmõjusid.

Sisendid ja väljundid

  • SW DIP lülitid – ülesande valik
  • LCD – väärtuste ja operatsioonide näitamiseks
  • 7-segmendi indikaatorid – Operatsiooni ja veakoodide näitamine
  • LEDid – kasutatakse teavitamaks ülesaande edukast sooritusest või veaolukorrast
  • Surunupp – valitud ülesande käivitamine, seadistuste menüü avamine / sulgemine
  • ADC – seadistuse muutmine

Üldised nõuded

  • Postfixi parser peab kasutama pinumälu töödeldavate andmete salvestamiseks
  • Pinumälu suurus on 8 elementi
  • Testjuhud on antud tekstimassiivis.
    • Tühikut kasutatakse eraldajana
    • Massiivid hoiavad endas arve (positiivsed ja negatiivsed täisarvud) ja operatsioone (+ – / *)
  • Programm peab teostama arvude liitmist, lahutamist, korrutamist ja jagamist.
  • Testjuhtude tulemused ja vahetulemused peavad olema vahemikus -999 ja 999. Arvud, mis pole selles vahemikus, peavad tekitama veaolukorra.
  • Ainult üks ülesanne võib korraga valitud olla lülititelt.
  • Kõik operatsioonid peavad olema korratavad ilma arendusplaati lähtestamata (reset)

Operatsioonide ja seadistuste kuvamine

  • Vaikimisi uuendamise intervall on 1 sekund. vaimisi intervall valitakse plaadi käivitumisel või lähtestamisel. Uuendamisintervalli kasutatakse ekraanil ja 7-segmendi indikaatoritel tulemuste uuendamiseks.
  • Uuendamise intervall peab olema seadistatav
    • Seadistuse uuendamisse peab olema võimalik minna pärast plaadi käivitamist, pärast arvutamisoperatsiooni lõppu või veaolukorras.
    • Uuendamise intervalli muutmiseks peab kasutaja vajutama surunuppu (vali üks mida hetkel ei kasutata). Vajutus sellel nupul avab seadistuse menüü
    • Seadistuse väärtust saab muuta kasutades ADCd.
    • Lubatud intervalli vahemik on 0.1 – 2 sekundit, täpsusega 0.01 sekundit.
    • Kohustuslik on kasutada kogu ADC võimalikku vahemikku – surnud tsooni lõpus või alguses ei tohi olla.
    • Teine klikk valitud surunupul viib plaadi tagasi arvutusrežiimi, kust on võimalik kasutajal soovitud tehte arvutamist alustada.
    • Surunupu all hoidmine ei tohi tekitada olukorda kus plaat hakkab “hüplema” arvutamise ja seadistuse režiimi vahel.
    • Dokumentatsioonis kirjelda kindlasti mis nuppu kasutasid seadistuste menüüsse minekuks ning kuidas viisid ADC füüsiliselt toetatud vahemiku vastavusse ülesande nõuetes antud vahemiku jatäpsusega.
  • Iga samm arvutuses peab olema kasutajale nähtav vastavalt seadistatud uuendamise intervallile (või vaikimisi aja kui kasutaja pole seadistust muutnud)
    • Kuva LCD peal numbrid, mis lisatakse või eemaldatakse pinust (nt Push 75 )
    • Kuva LCD peal hetkel teostatav arvutustehe (nt -57 + 3 = -54 )
    • Igale operatsioonile vastav (opcode) operatsiooni kood tuleb kuvada 7-segmendi indikaatoritel. Kood peab olema unikaalne, valitud koodid peavad olema dokumenteeritud.
  • Kui arvutamine on jõudnud lõpule, anna sellest märku kasutades plaadil plaadil olevat kaheksat LEDi. Mõtle välja muster mida tahad kasutada ning dokumenteeri see. Valitud muster peab olema selgelt eristuv veaolukordades kasutatavatest mustritest.

Veaolukorrad

  • Peab suutma tuvastada pinu ületäituvust, alatäituvust, jagamist nulliga, vigast postfixi valemit, samuti ka arvu üle- ja alatäituvust ette antud vahemikust.
  • Vigadele tuleb anda unikaalsed veakoodid, mida kuvatakse  7-segmendi indikaatoritel. Kasutatud veakoodid peavad olema dokumenteeritud.
  • Veaolukorra tekkides peavad kõik LEDid vilkuma ühe sekundilise intervalliga lõputult või kuni uus ülesanne lahendamiseks käivitatakse.
  • Uue ülesande käivitamine peab kasutaja vea olekust välja tooma.

Silumiskood

Sul on lubatud jätta esitatavasse koodi sisse täiendavaid silumiseks kasutatud koodijuppe – näiteks võid kasutada täiendava informatsiooni kuvamiseks LCD teist rida ja LED lampe (nt pinu silmumisinfo jaoks).

Esitatavasse koodi jäetud täiendavad silumiselemendid ei tohi blokeerida või segada rakenduse tööd vastavalt etteantud nõuetele.

Testjuhud

Määra igale DIP lülitile oma testjuht. Ainult üks testjuht tohib korraga aktiivne olla.

NB! Ainult esimesed kolm ülesannet annavad korrektse vastuse. Ülejäänud testivad erinevaid veaolukordasid.

Kõik vajalikud failid kodutööks on leitavad siit.

Soovituslik lähenemine arendusele

Kodutöö sooritamiseks on vajalik mikrokontrolleriga lahenduse testimine. Mikrokontrollerit saab kasutada vaid ICT-501 arvutiklassis kohapeal.

Kirjuta esmalt kodus valmis lahenduse funktsionaalne, mis suudab simuleerida kogu vajalikku funktsionaalsust. Kirjuta kõik oma funktsioonid sedasi, et nendel kas ei oleks üldsegi või oleks minimaalselt kõrvalmõjusid (nt printf/scanf lauseid).

Seejärel kontakteeru kas Hardi (e-post või MS Teams) või Ristoga (Mattermost), et tulla kohapeale testima ja ühildama oma lahendust arendusplaadiga.

Kontakt ja töö esitamine

Kõigi kodutöö 3 variantide tähtaeg on 8. juuni 2025.

Töö juhendajaks on Hardi Selg (Kontaktiks ülikooli MS Teams või e-post hardi.selg@ati.ttu.ee). 

Kodutöö esitamine käib kahes etapis:

  1. Lae üles oma lahendus Moodlesse: https://moodle.taltech.ee/mod/assign/view.php?id=499816
  2. Kirjuta töö juhendajale andmaks teada, et lahendus on esitatud. Täiendavalt on soovitav lahendus saata ka talle otse tema eelistatud suhtlusvahendi kaudu.

Kodutöö raames tuleb esitada kaks faili:

  1. Aruanne (pdf fail)
  2. Kokkupakitud projekti kaust (.zip arhiiv)

Juhendajal on õigus nõuda töö kaitsmist kohapeal!