2. domača naloga - Nižje nivojska aplikacija na STM32 ali FRI-SMS ter ostalih sistemih
Projekt je lahko rezultat združitve delnih podprojektov (LED, tipke, Časovnik. U(S)ART, DMA, prekinitve), ki so nastajali v okviru laboratorijskih vaj. Osnovno priporočilo za projekt je uporaba vhodno izhodnih naprav, ki smo jih spoznali na lab. vajah - vsaj serijske komunikacije, po možnosti še časovnika, DMA ali seveda tudi drugih naprav po izbiri. Lahko seveda vključite oziroma aktivirate tudi ostale V/I naprave, ki jih nismo obravnavali.
Aplikacija je lahko narejena po vaši ideji, lahko tudi na drugi platformi ali programskem okolju. Pomembno je le, da je povezana z nižjim nivojem programiranja ali aparaturne opreme.
Kje dobiti ideje oziroma osnovo za morebitno nadgradnjo:
- objavljeni projekti na LEA portalu (dostopen znotraj UL):
- objavljeni primeri projektov na Githubu:
- lahko uporabite tudi katerega od razširitvenih modulov, ki se enostavno priključijo na H7 ploščo (nekaj jih imamo, lahko se kakšen tudi nabavi):
- nekaj starejših idej je predstavljenih na Wiki strani (npr. pod prejšnjimi projekti: kalkulator, vislice, iskanje števila, ali iztočnicami za STM32H7 ploščo
- izhodiščni projekti za delo se nahajajo na OR github repozitoriju:
- https://github.com/LAPSyLAB/ORLab-STM32H7
- letos smo dodali še projekt, kjer iz zbirnika lahko kličete vse ostale funkcije v C in med drugim rišete na ekran in zaznavate dotike
Lahko pa naredite tudi aplikacijo po spodaj definiranih specifikacijah. Vkolikor opravite dodatno delo izven "obveznega" obsega, ga oddajte pod neobvezno domačo nalogo, ki je tudi razpisana.
Poročilo oddajte v obliki PDF. V poročilu na nekaj straneh opišite zgradbo in delovanje vašega programa (lahko pomembnejše izseke tudi poudarite) in potem v prilogi (zadnjem poglavju) dodajte še pomembnejšo programsko kodo v celoti (le tisto, kar ste morali sami dodati osnovnemu projektu - torej definicije spremenljivk, podprograme in glavni program). Za boljši prikaz delovanja dodajte slikovne ali video materiale iz katerih je jasno razvidno delovanje vaše rešitve. Na prvo stran napišite tudi kratek povzetek vsebine poročila, dodajte tudi slikovni povzetek vaše naloge (t.i. infografiko).
Primer dobrega, dovolj podrobnega in hkrati informativnega poročila je tukaj:
2. domača naloga je odprta in prepuščena vaši kreativnosti. Uporabite lahko katerikoli razvojni sistem (STM32, FRI-SMS) in različne nivoje programiranja (zbirnik, C, C++, Micropython).
Seveda se lahko oglasite in skupaj poiščemo pravšnji izziv za vas. Za pomoč pri izdelavi 2. domače naloge vam ponujamo tudi dve pripravljeni temi:
- PWM sintetizator
Prva je izdelava PWM sintetizatorja na FRI-SMS ali STM32 in brenčaču. Osnove bomo predelali pri obravnavi časovnika in ostalih V/I naprav. Predvsem je potem predmet domače naloge nadgradnja v smislu sintetizatorja melodij, ki lahko komunicira preko RS232 oziroma USART (VCOM) povezave. Morda lahko celo sporočate notne zapise melodij, ki se potem odigrajo na brenčaču.
- Morsejev oddajnik
Druga pripravljena tema pa je Morsejev oddajnik (vsi poznamo radijsko oddajo klicev na pomoč SOS, ki so ga uporabljale ladje). Morsejev oddajni lahko realizirate s pomočjo LED diode ali pa tudi brenčača.
V nadaljevanju se nahaja podrobnejša specifikacija postopka pisanja programa za Morsejev oddajnik. Specifikacija se nanaša na realizacijo na samem sistemu FRI-SMS. Podrobno preberite specifikacijo in sledite postopku postopne gradnje.
- Napišite podprogram XMCHAR, ki dobi parameter v registru r0. Parameter je lahko '.' ali '-'. V primeru, da je parameter '.' naj podprogram za približno 150 ms prižge LED (LED_ON, DELAY). V primeru, da je parameter '-' naj podprogram za približno 300 ms prižge LED (LED_ON, DELAY). V obeh primerih naj nato ugasne LED in počaka približno 150ms (LED_OFF, DELAY). Podprogram preizkusite s primernim glavnim programom.
- Napišite podprogram XMCODE, ki kot parameter v r0 dobi kazalec na z ničlo zaključen niz, v katerem se pojavljajo samo '.' in '-'. Konec niza označuje 0. Podprogram naj gre skozi niz znak po znak in za vsak znak pokliče podprogram iz XMCHAR. Ko naleti na 0, pa naj počaka približno 300 ms in se zaključi. Podprogram preizkusite tako, da oddate zaporedje "--.-".
- Napišite podprogram GETMCODE, ki kot parameter v r0 dobi ASCII kodo velike tiskane črke 'A' – 'Z'. Podprogram naj v r0 vrne kazalec na z ničlo zaključen niz, v katerem je zaporedje črk in pik, ki ustreza Morsejevi kodi ustrezne črke. Podprogram naj uporablja tabelo, v kateri so Morsejeve kode črk in je vsaka črka predstavljena s šestimi znaki. Tiste kode, ki so krajše, naj imajo na koncu več 0. Npr. koda črke 'A' bo oblike:
.ascii ".-" @ A
.byte 0,0,0,0
.ascii "-…" @ B
.byte 0,0
itd.
Namig: pri določanju začetka niza z Morsejevo kodo uporabite množenje s 6. Tabela Morsejevih kod:
|
A |
· – |
K |
– · – |
U |
· · – |
|
B |
– · · · |
L |
· – · · |
V |
· · · – |
|
C |
– · – · |
M |
– – |
W |
· – – |
|
D |
– · · |
N |
– · |
X |
– · · – |
|
E |
· |
O |
– – – |
Y |
– · – – |
|
F |
· · – · |
P |
· – – · |
Z |
– – · · |
|
G |
– – · |
Q |
– – · – |
|
|
|
H |
· · · · |
R |
· – · |
|
|
|
I |
· · |
S |
· · · |
|
|
|
J |
· – – – |
T |
– |
|
|
- Napišite podprogram XWORD, ki kot parameter v r0 dobi kazalec na z ničlo zaključen niz, v katerem so samo velike črke. Podprogram naj s klicanjem GETMCODE in XMCODE po Morsejevi kodi pošlje črko za črko, ko pride do zaključne 0 pa počaka približno 1 sekundo in se zaključi. Za preizkus oddajte "SOS".
- Napišite glavni program, v katerem preko zaporednega vmesnika enote DBGU sprejmete besedo (znake sprejemajte, dokler ne sprejmete znaka za tipko enter). Nato to besedo v Morsejevi kodi 'oddajte' preko LED diode.