Mikroprocesorski sistemi/Jul 2022

Izvor: SI Wiki
< Микропроцесорски системи
Datum izmene: 25. oktobar 2025. u 18:41; autor: Andrija (razgovor | doprinosi) (Dodata postavka prakticnog dela (zadatka))
Pređi na navigaciju Pređi na pretragu

Julski ispit 2022. godine održan je 10. jula i na njemu je bila dostupna sva potrebna dokumentacija i prezentacije sa predavanja. Postavka roka nije dostupna sa stranice predmeta.

  • Za pitanja sa više odgovora, tačni odgovori su podebljani i uokvireni
  • Za pitanja za koje se odgovori unose, tačni odgovori su podvučeni i sakriveni, tako da se prikažu kada izaberete taj tekst (primer: ovako)
  • Pritisnite levo dugme ispod za sakrivanje i otkrivanje svih odgovora, ili desno dugme za uključivanje i isključivanje interaktivnog režima:

Teorija

1. zadatak

Na kojoj adresi se nalazi mašinska instrukcija koju mikroprocesor Cortex-M3 prvu izvršava nakon reseta?

  1. 0x00000004
  2. mem[0x00000004]
  3. Nijedna od ponuđenih
  4. mem[0x08000004]
  5. 0x08000004

Objašnjenje: U Cortex-M3 Programming Manual piše na strani 15 kako se u programski brojač upisuje vrednost sa adrese 0x00000004, tako da se prva instrukcija izvršava sa adrese koja piše na toj lokaciji u memoriji.

2. zadatak

Koja vrednost se nalazi u registru R1 nakon izvršavanja date sekvence asemblerskih instrukcija? Odgovor uneti prema formatu neoznačenih heksadecimalnih literala u C programskom jeziku širine 32 bita.

mov r0, 3
mov r1, 8
cmp r1, r0
itttt gt
subgt r1, r1, r0
subgt r1, r1, 8
subsgt r1, r1, r0
subsgt r1, r1, 5

Prikaz očekivanog formata odgovora za proizvoljno odabranu vrednost 1 jeste:

0x00000001

Odgovor: 0xFFFFFFFA

Objašnjenje: Na početku programa registru R0 dodeljuje se vrednost 3, a registru R1 vrednost 8. Zatim se ta dva registra upoređuju, pa se prelazi na izvršavanje instrukcija koje zavise od toga da li je jedan broj bio veći od drugog. Pošto jeste, prva instrukcija subgt menja R1 na 5, a druga na -3. Pošto druga instrukcija nije imala sufiks s, programski statusni registar se nije ažurirao, pa se nastavlja na izvršavanje instrukcije subsgt, nakon koje R1 ima vrednost -6, a programska statusna reč se ažurira tako da se poslednja instrukcija ne izvršava. Relevantna stranica u Cortex-M3 Programming Manual je 56 (3.3.7 Conditional execution).

3. zadatak

Kolika je maksimalna radna frekvencija (HCLK) mikrokontrolera STM32F103R6 ukoliko se koristi HSE oscilator koji na svom izlazu proizvodi signal takta frekvencije 2MHz? Odgovor uneti u megahercima bez navođenja oznake jedinice.

Odgovor: 32

Objašnjenje: Na slici sa strane 93 od STM32F103 Reference Manual može se videti kako HSE takt može proći kroz PLL koji može da njegovu frekvenciju pomnoži do 16 puta.

4. zadatak

Isti zadatak kao sa drugog kolokvijuma 2022. godine.

5. zadatak

Periferija USART mikrokontrolera STM32F103R6 konfigurisana je tako da prenosi osam (8) bitova, koristi parnu parnost i postavlja jedan stop bit. Sa linije za prenos uzorkovani su sledeći bitovi (svaki bit je dobijen na osnovu odgovarajućeg broja uzoraka stanja na liniji):

...111111011011010000011111111...

Koje greške postoje prilikom prijema?

  1. Nema grešaka
  2. Samo Framing error
  3. Framing error i Parity error
  4. Samo Parity error

Objašnjenje: Dok na žici nema paketa, stoji vrednost 1. Nailazimo na početni bit 0, a nakon njega dolazi osam bitova od kojih osmi predstavlja bit parnosti. Sabiranjem tih osam bitova dobijamo broj 5, što je neparan broj a parnost je parna, pa se dešava Parity error. Nakon tih osam bitova nailazi bit sa vrednošću 0, a očekuje se završni bit sa vrednošću 1, tako da se takođe dešava i Framing error.

Zadatak

Postavka

Referentna šema u zadatku.
  1. U sistemu postoji jedan mikrokontroler koji kontroliše ventilator u skladu sa trenutnom vrednošću temperature. U simulatoru Proteus napraviti projekat i instancirati mikrokontroler STM32F103R6 (CM3_STM32). Napraviti projekat u alatu CubeMX koji će služiti za konfigurisanje mikrokontrolera.
  2. U simulatoru Proteus dodati sledeće komponente strogo prema datoj referentnoj šemi:
    • elektromotor MOTOR (MOTORS) koji predstavlja ventilator i čija će brzina rada biti kontrolisana PWM signalom kanala 4 tajmera 1 mikrokontrolera,
    • analogni multiplekser 74HC4051 (74HC), koji jedan od analognih signala sa ulaza propušta nepromenjen na izlaz, čiji je izlazni pin povezan na kanal 7 analogno-digitalnog konvertora mikrokontrolera; selekcija izlaza multipleksera se vrši preko njegovih pinova CBA gde pin A ima najmanju težinu,
    • temperaturni senzor LM35 (NATDAC) čiji je izlazni pin povezan na nulti ulaz (X0) multipleksera (analogna vrednost napona na izlaznom pinu senzora je linearno proporcionalna vrednosti temperature),
    • anemometar ANEMOMETER (ACTIVE) povezan u skladu sa referentnom šemom na kanale 1 i 2 tajmera 1; izlazni signal anemometra je periodična pravougaona povorka čija se frekvencija linearno povećava sa povećanjem brzine vetra (brzina vetra jednaka je proizvodu frekvencije izlaznog signala anemometra i realne konstante 2.4),
    • vetrokaz WINDVANE (ACTIVE) čiji je izlazni pin povezan u skladu sa referentnom šemom (obratiti pažnju na postojanje otpornika) na prvi ulaz (X1) multipleksera; analogna vrednost napona na izlaznom pinu vetrokaza predstavlja azimut odnosno pravac vetra (funkcija za preslikavanje vrednosti napona u azimut data je u prilogu),
    • kišomer RAINGAUGE (ACTIVE) povezan u skladu sa referentnom šemom na monostabilni multivibrator 74HC221 (74HC); kišomer radi po principu kofe sa prevrtanjem (kofa se puni kišnicom sve dok se ne prepuni, zatim dolazi do njenog prevrtanja i potpunog pražnjenja uz generisanje električnog impulsa); monostabilni multivibrator obezbeđuje uniformno trajanje generisanog električnog impulsa; podesiti na kišomeru nivo prevrtanja kofe (Trigger Level) na vrednost 0.01 milimetara usled čega će kofa slati električni impuls na svakih 1200 milisekundi pri konstantnom intenzitetu padavine od 30.0 milimetara po sat (za veći intenzitet padavine impuls će stizati brže i obrnuto); podesiti na monostabilnom multivibratoru vremensku konstantu (Monostable Time Constant) na jednu milisekundu (1mS) usled čega će signal na njegovom izlazu uvek trajati tačno jednu milisekundu,
    • virtuelni terminal povezan na periferiju USART1 mikrokontrolera preko pinova PB6 i PB7 i,
    • LCD displej LM041L (DISPLAY) sa četiri linije, kojima redom odgovaraju početne adrese 0x80, 0xC0, 0x90 i 0xD0 u DDRAM memoriji kontrolera HD44780, povezan na pinove PC0-PC6 mikrokontrolera.
  3. [6 poena] Obezbediti mogućnost rada sa LCD displejom i formirati karaktere za LCD displej koji predstavljaju strelicu na gore (↑) i strelicu na dole (↓) u skladu sa referentnim snimkom. Ovi karakteri koristiće se kao indikatori da li se neka vrednost povećala ili smanjila prilikom njene poslednje promene.
  4. Obezbediti prikaz poruke /A=<a>/B=<b>/T=<t>/K=<k> na virtuelnom terminalu, gde je <a> trenutna vrednost azimuta vetra, <b> trenutna vrednost brzine vetra, <t> trenutna vrednost temperature izraženo u stepenima Celzijusa u opsegu [0, 60] i <k> trenutna vrednost inteziteta padavine. Ovaj ispis je predviđen samo radi mogućnosti ostvarivanja parcijalnih poena za studente koji uspešno očitaju vrednost sa komponente ali ne mogu da je prikažu na LCD displeju kao što je traženo u narednim stavkama. Za veličine čije vrednosti nisu uspešno izračunate ispisati ? (znak pitanja). Osvežavanje opisane poruke vršiti periodično na svakih 200 milisekundi ukoliko je došlo do promene vrednosti. Prilikom osvežavanja poruke promeniti trenutne vrednosti u postojećoj poruci umesto dodavanja nove poruke na virtuelnom terminalu.
  5. Obezbediti prikaz poruke <i> Tem: <t> u trećem redu LCD displeja, gde <t> predstavlja trenutnu vrednost temperature izraženo u stepenima Celzijusa u opsegu [0, 60] očitanu sa temperaturnog senzora, a <i> indikator smera poslednje promene vrednosti u vidu strelice. Osvežavanje poruke vršiti periodično na svakih 200 milisekundi ukoliko je došlo do promene vrednosti. Ovaj ispis je predviđen radi ostvarivanja poena za studente koji uspešno obezbede mogućnost rada sa LCD displejom.
  6. [6 poena] Obezbediti prikaz poruke <i> Brz: <b> u drugom redu LCD displeja, gde <b> predstavlja trenutnu vrednost brzine vetra očitanu sa anemometra, a <i> indikator smera poslednje promene vrednosti u vidu strelice. Osvežavanje poruke vršiti periodično na svakih 200 milisekundi ukoliko je došlo do promene vrednosti.
  7. [6 poena] Obezbediti prikaz poruke <i> Azi: <a> u prvom redu LCD displeja, gde <a> predstavlja trenutnu vrednost azimuta vetra očitanu sa vetrokaza, a <i> indikator smera poslednje promene vrednosti u vidu strelice. Osvežavanje poruke vršiti periodično na svakih 200 milisekundi ukoliko je došlo do promene vrednosti.
  8. [6 poena] Obezbediti prikaz poruke <i> Kis: <k> u četvrtom redu LCD displeja, gde <k> predstavlja trenutnu vrednost intenziteta padavine izraženo u milimetrima po satu očitanu sa kišomera, a <i> indikator smera poslednje promene vrednosti u vidu strelice. Osvežavanje poruke vršiti periodično na svakih 200 milisekundi ukoliko je došlo do promene vrednosti.
  9. [6 poena] Obezbediti kontrolu ventilatora na način opisan u nastavku. Zavisno od trenutne vrednosti temperature ventilator se vrti odgovarajućom brzinom. Ukoliko trenutna vrednost temperature pripada opsegu:
    • [0, 30) ventilator se ne vrti,
    • [30, 35) ventilator se vrti brzinom jednakom 50% maksimalne brzine i
    • [35, 60] ventilator se vrti maksimalnom brzinom.
    Ažuriranje brzine ventilatora vršiti periodično na 200 milisekundi.