10. naloga: Zaporedni vmesnik (enota DBGU)

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 115200 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 115200 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 115200 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.