10. naloga: Zaporedni vmesnik (enota DBGU)

Rok za oddajo: četrtek, 5. januar 2023, 23.55

1. Zaporedni vmesnik enote 'debug unit' na mikrokrmilniku AT91SAM9260 s kablom povežite z zaporednim vmesnikom na računalniku PC. V zbirnem jeziku za ARM9 napišite naslednje podprograme:

a) DEBUG_INIT, ki zaporedni vmesnik enote 'debug unit' nastavi na hitrost 19200 baudov 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, zato hitrosti natančno na 19200 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 kar terminal, ki je vgrajen v okolje WinIDEA. (Nastavite: hitrost prenosa 19200 baudov, 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ščica -> 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 'debug' 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 z preko enote DBGU. 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 z preko enote DBGU. 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 (na FRI-SMS 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.