Микропроцесорски системи/Јул 2022

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

Јулски испит 2022. године одржан је 10. јула и на њему је била доступна сва потребна документација и презентације са предавања. Поставка рока није доступна са странице предмета.

  • За питања са више одговора, тачни одговори су подебљани и уоквирени
  • За питања за које се одговори уносе, тачни одговори су подвучени и сакривени, тако да се прикажу када изаберете тај текст (пример: овако)
  • Притисните лево дугме испод за сакривање и откривање свих одговора, или десно дугме за укључивање и искључивање интерактивног режима:

Теорија

1. задатак

На којој адреси се налази машинска инструкција коју микропроцесор Cortex-M3 прву извршава након ресета?

  1. 0x00000004
  2. mem[0x00000004]
  3. Ниједна од понуђених
  4. mem[0x08000004]
  5. 0x08000004

Објашњење: У Cortex-M3 Programming Manual пише на страни 15 како се у програмски бројач уписује вредност са адресе 0x00000004, тако да се прва инструкција извршава са адресе која пише на тој локацији у меморији.

2. задатак

Која вредност се налази у регистру R1 након извршавања дате секвенце асемблерских инструкција? Одговор унети према формату неозначених хексадецималних литерала у C програмском језику ширине 32 бита.

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

Приказ очекиваног формата одговора за произвољно одабрану вредност 1 јесте:

0x00000001

Одговор: 0xFFFFFFFA

Објашњење: На почетку програма регистру R0 додељује се вредност 3, а регистру R1 вредност 8. Затим се та два регистра упоређују, па се прелази на извршавање инструкција које зависе од тога да ли је један број био већи од другог. Пошто јесте, прва инструкција subgt мења R1 на 5, а друга на -3. Пошто друга инструкција није имала суфикс s, програмски статусни регистар се није ажурирао, па се наставља на извршавање инструкције subsgt, након које R1 има вредност -6, а програмска статусна реч се ажурира тако да се последња инструкција не извршава. Релевантна страница у Cortex-M3 Programming Manual је 56 (3.3.7 Conditional execution).

3. задатак

Колика је максимална радна фреквенција (HCLK) микроконтролера STM32F103R6 уколико се користи HSE осцилатор који на свом излазу производи сигнал такта фреквенције 2MHz? Одговор унети у мегахерцима без навођења ознаке јединице.

Одговор: 32

Објашњење: На слици са стране 93 од STM32F103 Reference Manual може се видети како HSE такт може проћи кроз PLL који може да његову фреквенцију помножи до 16 пута.

4. задатак

Исти задатак као са другог колоквијума 2022. године.

5. задатак

Периферија USART микроконтролера STM32F103R6 конфигурисана је тако да преноси осам (8) битова, користи парну парност и поставља један стоп бит. Са линије за пренос узорковани су следећи битови (сваки бит је добијен на основу одговарајућег броја узорака стања на линији):

...111111011011010000011111111...

Које грешке постоје приликом пријема?

  1. Нема грешака
  2. Само Framing error
  3. Framing error и Parity error
  4. Само Parity error

Објашњење: Док на жици нема пакета, стоји вредност 1. Наилазимо на почетни бит 0, а након њега долази осам битова од којих осми представља бит парности. Сабирањем тих осам битова добијамо број 5, што је непаран број а парност је парна, па се дешава Parity error. Након тих осам битова наилази бит са вредношћу 0, а очекује се завршни бит са вредношћу 1, тако да се такође дешава и Framing error.

Задатак

Поставка

Референтна шема у задатку.
  1. У систему постоји један микроконтролер који контролише вентилатор у складу са тренутном вредношћу температуре. У симулатору Proteus направити пројекат и инстанцирати микроконтролер STM32F103R6 (CM3_STM32). Направити пројекат у алату CubeMX који ће служити за конфигурисање микроконтролера.
  2. У симулатору Proteus додати следеће компоненте строго према датој референтној шеми:
    • електромотор MOTOR (MOTORS) који представља вентилатор и чија ће брзина рада бити контролисана PWM сигналом канала 4 тајмера 1 микроконтролера,
    • аналогни мултиплексер 74HC4051 (74HC), који један од аналогних сигнала са улаза пропушта непромењен на излаз, чији је излазни пин повезан на канал 7 аналогно-дигиталног конвертора микроконтролера; селекција излаза мултиплексера се врши преко његових пинова CBA где пин A има најмању тежину,
    • температурни сензор LM35 (NATDAC) чији је излазни пин повезан на нулти улаз (X0) мултиплексера (аналогна вредност напона на излазном пину сензора је линеарно пропорционална вредности температуре),
    • анемометар ANEMOMETER (ACTIVE) повезан у складу са референтном шемом на канале 1 и 2 тајмера 1; излазни сигнал анемометра је периодична правоугаона поворка чија се фреквенција линеарно повећава са повећањем брзине ветра (брзина ветра једнака је производу фреквенције излазног сигнала анемометра и реалне константе 2.4),
    • ветроказ WINDVANE (ACTIVE) чији је излазни пин повезан у складу са референтном шемом (обратити пажњу на постојање отпорника) на први улаз (X1) мултиплексера; аналогна вредност напона на излазном пину ветроказа представља азимут односно правац ветра (функција за пресликавање вредности напона у азимут дата је у прилогу),
    • кишомер RAINGAUGE (ACTIVE) повезан у складу са референтном шемом на моностабилни мултивибратор 74HC221 (74HC); кишомер ради по принципу кофе са превртањем (кофа се пуни кишницом све док се не препуни, затим долази до њеног превртања и потпуног пражњења уз генерисање електричног импулса); моностабилни мултивибратор обезбеђује униформно трајање генерисаног електричног импулса; подесити на кишомеру ниво превртања кофе (Trigger Level) на вредност 0.01 милиметара услед чега ће кофа слати електрични импулс на сваких 1200 милисекунди при константном интензитету падавине од 30.0 милиметара по сат (за већи интензитет падавине импулс ће стизати брже и обрнуто); подесити на моностабилном мултивибратору временску константу (Monostable Time Constant) на једну милисекунду (1mS) услед чега ће сигнал на његовом излазу увек трајати тачно једну милисекунду,
    • виртуелни терминал повезан на периферију USART1 микроконтролера преко пинова PB6 и PB7 и,
    • LCD дисплеј LM041L (DISPLAY) са четири линије, којима редом одговарају почетне адресе 0x80, 0xC0, 0x90 и 0xD0 у DDRAM меморији контролера HD44780, повезан на пинове PC0-PC6 микроконтролера.
  3. [6 поена] Обезбедити могућност рада са LCD дисплејом и формирати карактере за LCD дисплеј који представљају стрелицу на горе (↑) и стрелицу на доле (↓) у складу са референтним снимком. Ови карактери користиће се као индикатори да ли се нека вредност повећала или смањила приликом њене последње промене.
  4. Обезбедити приказ поруке /A=<a>/B=<b>/T=<t>/K=<k> на виртуелном терминалу, где је <a> тренутна вредност азимута ветра, <b> тренутна вредност брзине ветра, <t> тренутна вредност температуре изражено у степенима Целзијуса у опсегу [0, 60] и <k> тренутна вредност интезитета падавине. Овај испис је предвиђен само ради могућности остваривања парцијалних поена за студенте који успешно очитају вредност са компоненте али не могу да је прикажу на LCD дисплеју као што је тражено у наредним ставкама. За величине чије вредности нису успешно израчунате исписати ? (знак питања). Освежавање описане поруке вршити периодично на сваких 200 милисекунди уколико је дошло до промене вредности. Приликом освежавања поруке променити тренутне вредности у постојећој поруци уместо додавања нове поруке на виртуелном терминалу.
  5. Обезбедити приказ поруке <i> Tem: <t> у трећем реду LCD дисплеја, где <t> представља тренутну вредност температуре изражено у степенима Целзијуса у опсегу [0, 60] очитану са температурног сензора, а <i> индикатор смера последње промене вредности у виду стрелице. Освежавање поруке вршити периодично на сваких 200 милисекунди уколико је дошло до промене вредности. Овај испис је предвиђен ради остваривања поена за студенте који успешно обезбеде могућност рада са LCD дисплејом.
  6. [6 поена] Обезбедити приказ поруке <i> Brz: <b> у другом реду LCD дисплеја, где <b> представља тренутну вредност брзине ветра очитану са анемометра, а <i> индикатор смера последње промене вредности у виду стрелице. Освежавање поруке вршити периодично на сваких 200 милисекунди уколико је дошло до промене вредности.
  7. [6 поена] Обезбедити приказ поруке <i> Azi: <a> у првом реду LCD дисплеја, где <a> представља тренутну вредност азимута ветра очитану са ветроказа, а <i> индикатор смера последње промене вредности у виду стрелице. Освежавање поруке вршити периодично на сваких 200 милисекунди уколико је дошло до промене вредности.
  8. [6 поена] Обезбедити приказ поруке <i> Kis: <k> у четвртом реду LCD дисплеја, где <k> представља тренутну вредност интензитета падавине изражено у милиметрима по сату очитану са кишомера, а <i> индикатор смера последње промене вредности у виду стрелице. Освежавање поруке вршити периодично на сваких 200 милисекунди уколико је дошло до промене вредности.
  9. [6 поена] Обезбедити контролу вентилатора на начин описан у наставку. Зависно од тренутне вредности температуре вентилатор се врти одговарајућом брзином. Уколико тренутна вредност температуре припада опсегу:
    • [0, 30) вентилатор се не врти,
    • [30, 35) вентилатор се врти брзином једнаком 50% максималне брзине и
    • [35, 60] вентилатор се врти максималном брзином.
    Ажурирање брзине вентилатора вршити периодично на 200 милисекунди.

На року је поред текста задатка и референтне шеме био доступан и референтни снимак (изглед симулације урађеног задатка), као и фајл voltage2WindBearing.c у коме је дефинисана помоћна функција static float voltage2WindBearing(float voltage). Целокупна поставка задатка може се преузети овде.