10. naloga: Zaporedni vmesnik (U(S)ART, DBGU)
1. Zaporedni vmesnik enote USART na STM32H7 ali 'debug unit' na mikrokrmilniku AT91SAM9260 s kablom povežite z USB ali zaporednim vmesnikom na računalniku PC. V zbirnem jeziku za ARM9 napišite naslednje podprograme:
a) DEBUG_INIT, ki zaporedni vmesnik nastavi na hitrost 19200 baudov (FRI-SMS) oziroma 115200 (STM32H7) in prenos brez bita parnosti. Podprogram naj tudi omogoči oddajnik in sprejemnik vmesnika (TX, RX). Upoštevajte, da znaša frekvenca ure MCK 48MHz (FRI-SMS) oziroma 64MHz (STM32H7), zato hitrosti natančno na toliko baudov ni mogoče nastaviti, odstopanje pa je dovolj majhno, da ne moti pravilnega prenosa podatkov.
b) RCV_DEBUG, ki v neskončni zanki čaka, da sprejemnik sprejme znak, ki ga preko terminala pošljete z računalnika PC. Sprejet znak naj podprogram vrne v registru R0. Uporabite enega od serijskih terminalskih programo (npr. Putty) ali kar terminal, ki je vgrajen v okolje WinIDEA. (Nastavite enako hitrost prenosa, 8 podatkovnih bitov, 1 stop bit, brez parnosti).
c) SND_DEBUG, ki v neskončni zanki čaka, da je oddajnik pripravljen na oddajo, nato pošlje znak v smeri plošča -> računalnik PC. Znak, ki ga pošlje, dobi podprogram v registru R0.
Vsi podprogramu naj ohranijo vrednosti registrov razen registra R0 pri podprogramih RCV_DEBUG in SND_DEBUG. Napišite tudi kratek glavni program, da preizkusite delovanje podprogramov. Po inicializaciji enote v zanki izmenično kličete podprograma RCV_DEBUG in SND_DEBUG ter tako računalniku PC vračate znake, ki jih od njega sprejmete (echo).
2. Napišite podprogram, za sprejemanje niza znakov. Podprogram ima dva parametra: v r0 naj bo naslov, kamor se bo niz shranil, v r1 pa število znakov, ki jih želimo sprejeti. Podprogram naj sprejeti niz zaključi z ničlo - rezultat naj bo z ničlo zaključen niz.
3. Napišite podprogram, za pošiljanje niza znakov. Podprogram v r0 dobi naslov z ničlo zaključenega niza, ki ga želimo poslati.
Enako nalogo lahko naredite tudi na sistemu STM32H7. Dokumentacija je podana posebej.
Opombe za delo v testnem "Local Loopback" načinu (velja samo za FRI-SMS, kjer lahko preizkušate kodo tudi brez povezave s kablom):
Za preizkus napisane kode v nalogi 1 je potrebno v zanki pri preizkusu kode obrniti vrstni red klicanja podprogramov RCV_DEBUG in SND_DEBUG. To je zato, ker imamo lokalno zanko in se vsi poslani znaki takoj tudi sprejmejo. Pri komunikaciji s PC računalnikom pa bi najprej sprejeli in nato poslali. V nalogah 2. in 3. pa samo pripravite kodo - preizkusili jo boste lahko le ob pravi komunikaciji z zunanjo napravo.