Микропроцесорски системи/Пробни тест 2022 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
(Probni test od ove godine)
 
м (Z = 1)
Ред 19: Ред 19:
'''Одговор:''' <span class="spoiler" data-solution="text">0x00000008</span>
'''Одговор:''' <span class="spoiler" data-solution="text">0x00000008</span>


'''Објашњење:''' <span class="spoiler" data-solution="explanation">На почетку програма регистру ''R0'' додељује се вредност 4, а регистру ''R1'' вредност 7. Затим се та два регистра упоређују, па се прелази на извршавање инструкција које зависе од једнакости (бит Z у програмском статусном регистру је 0 када су два регистра једнака). Прва инструкција у низу, <code>subeq</code>, не извршава се јер претходно упоређени регистри нису били једнаки. Инструкција <code>subsne</code> се, из истог тог разлога, извршава, па се у регистар ''R1'' уписује разлика регистара ''R0'' и ''R0'', односно нула. Како ова инструкција има суфикс <code>s</code>, значи да се у програмској статусној речи бит Z сада поставио на 0, па се инструкција <code>addsne</code> неће извршити, док инструкција <code>addeq</code> хоће, уписујући збир ''R0'' и ''R0'' у регистар ''R1'', односно вредност 8. Релевантна страница у ''Cortex-M3 Programming Manual'' је 56 (3.3.7 ''Conditional execution'').</span>
'''Објашњење:''' <span class="spoiler" data-solution="explanation">На почетку програма регистру ''R0'' додељује се вредност 4, а регистру ''R1'' вредност 7. Затим се та два регистра упоређују, па се прелази на извршавање инструкција које зависе од једнакости (бит Z у програмском статусном регистру је 1 када су два регистра једнака). Прва инструкција у низу, <code>subeq</code>, не извршава се јер претходно упоређени регистри нису били једнаки. Инструкција <code>subsne</code> се, из истог тог разлога, извршава, па се у регистар ''R1'' уписује разлика регистара ''R0'' и ''R0'', односно нула. Како ова инструкција има суфикс <code>s</code>, значи да се у програмској статусној речи бит Z сада поставио на 0, па се инструкција <code>addsne</code> неће извршити, док инструкција <code>addeq</code> хоће, уписујући збир ''R0'' и ''R0'' у регистар ''R1'', односно вредност 8. Релевантна страница у ''Cortex-M3 Programming Manual'' је 56 (3.3.7 ''Conditional execution'').</span>


== Задатак 2 ==
== Задатак 2 ==

Верзија на датум 27. јануар 2023. у 01:06

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

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

Задатак 1

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

mov r0, 4
mov r1, 7
cmp r1, r0
iteet eq
subeq r1, r1, r1
subsne r1, r0, r0
addsne r1, r1, r1
addeq r1, r0, r0

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

0x00000001

Одговор: 0x00000008

Објашњење: На почетку програма регистру R0 додељује се вредност 4, а регистру R1 вредност 7. Затим се та два регистра упоређују, па се прелази на извршавање инструкција које зависе од једнакости (бит Z у програмском статусном регистру је 1 када су два регистра једнака). Прва инструкција у низу, subeq, не извршава се јер претходно упоређени регистри нису били једнаки. Инструкција subsne се, из истог тог разлога, извршава, па се у регистар R1 уписује разлика регистара R0 и R0, односно нула. Како ова инструкција има суфикс s, значи да се у програмској статусној речи бит Z сада поставио на 0, па се инструкција addsne неће извршити, док инструкција addeq хоће, уписујући збир R0 и R0 у регистар R1, односно вредност 8. Релевантна страница у Cortex-M3 Programming Manual је 56 (3.3.7 Conditional execution).

Задатак 2

Kоја је bit band alias адреса бита 3 (бит најмање тежине је бит 0) унутар бајта који се налази на aдреси 0x20000001 SRAM-а?

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

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

0x00000001

Одговор: 0x2200002C

Објашњење: Почетна адреса SRAM је 0x20000000, тако да је 0x20000001 бајт број 1 у том региону. Према формули са странице 28. у Cortex-M3 Programming Manual, bit band alias адреса рачуна се као , тако да у овом случају добијамо .

Задатак 3

Који пинови микроконтролера STM32F103R6 могу да се користе као пинови чија одговарајућа промена окида односно стартује бројање на тајмеру 2 (TIM2)?

  1. PA1
  2. PA15
  3. PA3
  4. PA0
  5. PA14

Објашњење: На страни 179 од STM32F103 Reference Manual можемо видети све могуће пинове за канале TIM2 као и пинове за спољашње окидаче. На дијаграму на страни 367. може се видети да у сигналу TRGI могу да учествују сигнали са TIMx_ETR, као и TIMx_CH1 и TIMx_CH2 (преко TI1FP1 и TI1FP2). Из овог разлога, бирамо као одговор све понуђене пинове у табели са стране 179 а који се налазе у реду TIM2_CH1_ETR или TIM2_CH2.

Задатак 4

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

Одговор: 64

Објашњење:

Одговор се може наћи испод слике на страни 93 од STM32F103 Reference Manual:

When the HSI is used as a PLL clock input, the maximum system clock frequency that can be achieved is 64 MHz.