<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sr">
	<id>https://siwiki.rs/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D1%81%D0%BA%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8%2F%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2022</id>
	<title>Микропроцесорски системи/Јануар 2022 - Историја измена</title>
	<link rel="self" type="application/atom+xml" href="https://siwiki.rs/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D1%81%D0%BA%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8%2F%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2022"/>
	<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D1%81%D0%BA%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2022&amp;action=history"/>
	<updated>2026-06-04T10:33:04Z</updated>
	<subtitle>Историја измена ове странице на пројекту</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D1%81%D0%BA%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2022&amp;diff=7970&amp;oldid=prev</id>
		<title>MihailoM342: main.c i usart1</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D1%81%D0%BA%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2022&amp;diff=7970&amp;oldid=prev"/>
		<updated>2025-08-26T19:56:38Z</updated>

		<summary type="html">&lt;p&gt;main.c i usart1&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 26. август 2025. у 21:56&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l31&quot;&gt;Ред 31:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 31:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Омогућен је IN7 улаз ADC1.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Омогућен је IN7 улаз ADC1.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* У TIM1 је канал 1 подешен за &amp;#039;&amp;#039;Input Capture&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* У TIM1 је канал 1 подешен за &amp;#039;&amp;#039;Input Capture&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* У USART1 је режим подешен на &amp;#039;&amp;#039;Asynchronous&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* У USART1 је режим подешен на &amp;#039;&amp;#039;Asynchronous&amp;#039;&amp;#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &amp;#039;&amp;#039;Baud Rate&amp;#039;&amp;#039; је 9600Bits/s&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* У &amp;#039;&amp;#039;FreeRTOS&amp;#039;&amp;#039; је интерфејс подешен на CMSIS_V2.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* У &amp;#039;&amp;#039;FreeRTOS&amp;#039;&amp;#039; је интерфејс подешен на CMSIS_V2.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* У &amp;#039;&amp;#039;Code Generator&amp;#039;&amp;#039; табу је подешено да се генеришу одвојени фајлови за сваку периферију.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* У &amp;#039;&amp;#039;Code Generator&amp;#039;&amp;#039; табу је подешено да се генеришу одвојени фајлови за сваку периферију.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l466&quot;&gt;Ред 466:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 466:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	/* USER CODE END Callback 1 */&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	/* USER CODE END Callback 1 */&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/syntaxhighlight&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Такође додати:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;syntaxhighlight lang=&quot;c&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  /* USER CODE BEGIN Includes */&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  #include &quot;exam.h&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  /* USER CODE END Includes */&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  /* USER CODE BEGIN 2 */&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  examInit();&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  /* USER CODE END 2 */&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>MihailoM342</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D1%81%D0%BA%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2022&amp;diff=5255&amp;oldid=prev</id>
		<title>KockaAdmiralac: Napomene u kodu</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D1%81%D0%BA%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2022&amp;diff=5255&amp;oldid=prev"/>
		<updated>2023-01-26T09:31:47Z</updated>

		<summary type="html">&lt;p&gt;Napomene u kodu&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 26. јануар 2023. у 11:31&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l161&quot;&gt;Ред 161:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 161:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#include &amp;quot;gpio.h&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#include &amp;quot;gpio.h&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;// Napomena: referentna šema se razlikuje od one date na vežbama.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#define LCD_ENABLE_BIT 0x04&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#define LCD_ENABLE_BIT 0x04&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l167&quot;&gt;Ред 167:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 168:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;void LCD_Write(LCD_Register reg, uint8_t data) {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;void LCD_Write(LCD_Register reg, uint8_t data) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	// Napomena: referentna šema se razlikuje od one date na vežbama.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	GPIOC-&amp;gt;ODR = (data &amp;lt;&amp;lt; 3) | reg;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	GPIOC-&amp;gt;ODR = (data &amp;lt;&amp;lt; 3) | reg;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	GPIOC-&amp;gt;ODR |= LCD_ENABLE_BIT;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	GPIOC-&amp;gt;ODR |= LCD_ENABLE_BIT;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l404&quot;&gt;Ред 404:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 406:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	// Ekvivalentne adrese: 0x80, 0xC0, 0x90&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	// Ekvivalentne adrese: 0x80, 0xC0, 0x90&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	// Kontroleru se ne mogu poslati adrese sa preko 7 bita&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	// Kontroleru se ne mogu poslati adrese sa preko 7 bita&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	writeLCD(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0x00&lt;/del&gt;, &amp;quot;Temper: &amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	// Napomena: redosled ispisa je ispravljen ovde, ali nije u projektu.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	writeLCD(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0x40&lt;/del&gt;, &amp;quot;Azimut: &amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	writeLCD(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0x10&lt;/ins&gt;, &amp;quot;Temper: &amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	writeLCD(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0x10&lt;/del&gt;, &amp;quot;Brzina: &amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	writeLCD(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0x00&lt;/ins&gt;, &amp;quot;Azimut: &amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	writeLCD(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0x40&lt;/ins&gt;, &amp;quot;Brzina: &amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	while (1) {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	while (1) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		if (((int) prevTemperatureSensor) != ((int) temperatureSensor)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		if (((int) prevTemperatureSensor) != ((int) temperatureSensor)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l420&quot;&gt;Ред 420:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 423:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			intToStr((int) windvaneSensor, azimut, 3);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			intToStr((int) windvaneSensor, azimut, 3);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			intToStr((int) anemometerSensor, brzina, 3);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			intToStr((int) anemometerSensor, brzina, 3);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			writeLCD(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0x08&lt;/del&gt;, temper);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			// Napomena: redosled ispisa je ispravljen ovde, ali nije u projektu.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			writeLCD(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0x48&lt;/del&gt;, azimut);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			writeLCD(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0x18&lt;/ins&gt;, temper);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			writeLCD(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0x18&lt;/del&gt;, brzina);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			writeLCD(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0x08&lt;/ins&gt;, azimut);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			writeLCD(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;0x48&lt;/ins&gt;, brzina);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			writeUART(&amp;quot;\b\b\b\b\b\b\b\b\b\b\b&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			writeUART(&amp;quot;\b\b\b\b\b\b\b\b\b\b\b&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			writeUART(azimut);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			writeUART(azimut);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D1%81%D0%BA%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2022&amp;diff=5254&amp;oldid=prev</id>
		<title>KockaAdmiralac: Ispravke</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D1%81%D0%BA%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2022&amp;diff=5254&amp;oldid=prev"/>
		<updated>2023-01-26T09:27:37Z</updated>

		<summary type="html">&lt;p&gt;Ispravke&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 26. јануар 2023. у 11:27&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l29&quot;&gt;Ред 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 29:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Омогућени су прекиди од ADC, TIM1 и USART1.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Омогућени су прекиди од ADC, TIM1 и USART1.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Као &amp;#039;&amp;#039;Timebase Source&amp;#039;&amp;#039; подешен је TIM2.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Као &amp;#039;&amp;#039;Timebase Source&amp;#039;&amp;#039; подешен је TIM2.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Омогућен је &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;IN1 &lt;/del&gt;улаз ADC1.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Омогућен је &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;IN7 &lt;/ins&gt;улаз ADC1.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* У TIM1 је канал 1 подешен за &amp;#039;&amp;#039;Input Capture&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* У TIM1 је канал 1 подешен за &amp;#039;&amp;#039;Input Capture&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* У USART1 је режим подешен на &amp;#039;&amp;#039;Asynchronous&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* У USART1 је режим подешен на &amp;#039;&amp;#039;Asynchronous&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* У &amp;#039;&amp;#039;FreeRTOS&amp;#039;&amp;#039; је интерфејс подешен на CMSIS_V2.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* У &amp;#039;&amp;#039;FreeRTOS&amp;#039;&amp;#039; је интерфејс подешен на CMSIS_V2.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* У &amp;#039;&amp;#039;Code Generator&amp;#039;&amp;#039; табу је подешено да се генеришу одвојени фајлови за сваку периферију.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* У &amp;#039;&amp;#039;Code Generator&amp;#039;&amp;#039; табу је подешено да се генеришу одвојени фајлови за сваку периферију.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Пинови PC&amp;lt;sub&amp;gt;6..0&amp;lt;/sub&amp;gt;, PA&amp;lt;sub&amp;gt;13&amp;lt;/sub&amp;gt; и PB&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; су &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;подешено &lt;/del&gt;као GPIO_Output.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Пинови PC&amp;lt;sub&amp;gt;6..0&amp;lt;/sub&amp;gt;, PA&amp;lt;sub&amp;gt;13&amp;lt;/sub&amp;gt; и PB&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; су &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;подешени &lt;/ins&gt;као GPIO_Output.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Након генерисања, линија 310 у &amp;lt;code&amp;gt;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/port.c&amp;lt;/code&amp;gt; је закоментарисана.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Након генерисања, линија 310 у &amp;lt;code&amp;gt;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/port.c&amp;lt;/code&amp;gt; је закоментарисана.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D1%81%D0%BA%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2022&amp;diff=5249&amp;oldid=prev</id>
		<title>KockaAdmiralac: Moje rešenje januara 2022</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D0%BE%D1%80%D1%81%D0%BA%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B8/%D0%88%D0%B0%D0%BD%D1%83%D0%B0%D1%80_2022&amp;diff=5249&amp;oldid=prev"/>
		<updated>2023-01-25T19:11:31Z</updated>

		<summary type="html">&lt;p&gt;Moje rešenje januara 2022&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{tocright}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Јануарски рок 2022. године&amp;#039;&amp;#039;&amp;#039; нема поставку доступну са странице предмета. Није много познато о овом року, осим задатка наведеног испод.&lt;br /&gt;
&lt;br /&gt;
== Задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
[[Датотека:MIPS januar 2022 referentna šema.svg|thumb|Референтна шема у задатку.&amp;lt;ref&amp;gt;На датој шеми &amp;#039;&amp;#039;LCD&amp;#039;&amp;#039; дисплеј није повезан на исти начин као на вежбама - код је одговарајуће модификован да се овоме прилагоди. На правом испиту је шема највероватније била као што је рађено на вежбама.&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
# &amp;lt;del&amp;gt;У систему постоји један микроконтролер који контролише вентилатор у складу са тренутном вредношћу температуре. У симулатору &amp;#039;&amp;#039;Proteus&amp;#039;&amp;#039; направити пројекат и инстанцирати микроконтролер &amp;#039;&amp;#039;STM32F103R6&amp;#039;&amp;#039; (&amp;#039;&amp;#039;CM3_STM32&amp;#039;&amp;#039;). Направити пројекат у алату &amp;#039;&amp;#039;CubeMX&amp;#039;&amp;#039; који ће служити за конфигурисање микроконтролера.&amp;lt;/del&amp;gt;&lt;br /&gt;
# &amp;lt;del&amp;gt;У симулатору &amp;#039;&amp;#039;Proteus&amp;#039;&amp;#039; додати следеће компоненте&amp;lt;/del&amp;gt; &amp;lt;u&amp;gt;строго према датој референтној шеми&amp;lt;/u&amp;gt;:&lt;br /&gt;
#* аналогни мултиплексер &amp;#039;&amp;#039;74HC4051&amp;#039;&amp;#039; (&amp;#039;&amp;#039;74HC&amp;#039;&amp;#039;) чији је излазни пин повезан на канал 7 аналогно-дигиталног конвертора микроконтролера; селекција излаза аналогног мултиплексера се врши преко његових пинова &amp;#039;&amp;#039;CBA&amp;#039;&amp;#039; где пин &amp;#039;&amp;#039;A&amp;#039;&amp;#039; има најмању тежину,&lt;br /&gt;
#* &amp;lt;del&amp;gt;температурни сензор &amp;#039;&amp;#039;LM35&amp;#039;&amp;#039; (&amp;#039;&amp;#039;NATDAC&amp;#039;&amp;#039;) чији је излазни пин повезан&amp;lt;/del&amp;gt; на нулти улаз (&amp;#039;&amp;#039;X0&amp;#039;&amp;#039;) мултилексера &amp;lt;del&amp;gt;(аналогна вредност напона на излазном пину сензора је линеарно пропорционална вредности температуре односно ради добијања вредност температуре напон треба помножити са вредношћу 100),&amp;lt;/del&amp;gt;&lt;br /&gt;
#* анемометар &amp;#039;&amp;#039;ANEMOMETER&amp;#039;&amp;#039; (&amp;#039;&amp;#039;ACTIVE&amp;#039;&amp;#039;) повезан у складу са референтном шемом на канале 1 и 2 тајмера 1;&amp;lt;ref&amp;gt;На референтној шеми са викија повезан је само на један канал, јер је само један канал и потребан.&amp;lt;/ref&amp;gt; излазни сигнал анемометра је периодична правоугаона поворка чија се фреквенција линеарно повећава са повећањем брзине ветра (брзина ветра једнака је производу фреквенције излазног сигнала анемометра и реалне константе 2.4),&lt;br /&gt;
#* ветроказ &amp;#039;&amp;#039;WINDVANE&amp;#039;&amp;#039; (&amp;#039;&amp;#039;ACTIVE&amp;#039;&amp;#039;) чији је излазни пин повезан у складу са референтном шемом (обратити пажњу на постојање отпорника) на први улаз (&amp;#039;&amp;#039;X1&amp;#039;&amp;#039;) мултиплексера; аналогна вредност напона на излазном пину ветроказа представља азимут односно правац ветра (функција за пресликавање вредности напона у азимут дата је у прилогу),&amp;lt;ref&amp;gt;Овај прилог не постоји на викију, али можете ископирати функцију &amp;lt;code&amp;gt;adcToWindvane&amp;lt;/code&amp;gt; из решења.&amp;lt;/ref&amp;gt;&lt;br /&gt;
#* &amp;lt;del&amp;gt;виртуелни терминал повезан на периферију &amp;#039;&amp;#039;USART1&amp;#039;&amp;#039; микроконтролера&amp;lt;/del&amp;gt; преко пинова &amp;#039;&amp;#039;PB6&amp;#039;&amp;#039; и &amp;#039;&amp;#039;PB7&amp;#039;&amp;#039;,&lt;br /&gt;
#* &amp;#039;&amp;#039;LCD&amp;#039;&amp;#039; дисплеј &amp;#039;&amp;#039;LM041L&amp;#039;&amp;#039; (&amp;#039;&amp;#039;DISPLAY&amp;#039;&amp;#039;) са четири линије, којима редом одговарају почетне адресе &amp;lt;code&amp;gt;0x00&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x40&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0x90&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;0xD0&amp;lt;/code&amp;gt; у &amp;#039;&amp;#039;DDRAM&amp;#039;&amp;#039; меморији контролера &amp;#039;&amp;#039;HD44780&amp;#039;&amp;#039;, &amp;lt;del&amp;gt;повезан на пинове &amp;#039;&amp;#039;PC0&amp;#039;&amp;#039;-&amp;#039;&amp;#039;PC6&amp;#039;&amp;#039; микроконтролера и&amp;lt;/del&amp;gt;&lt;br /&gt;
#* црвена &amp;#039;&amp;#039;LED-RED&amp;#039;&amp;#039; (&amp;#039;&amp;#039;ACTIVE&amp;#039;&amp;#039;) повезана на &amp;#039;&amp;#039;PA13&amp;#039;&amp;#039;.&lt;br /&gt;
# Обезбедити приказ поруке &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Temper: &amp;amp;lt;t&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; у трећем реду &amp;#039;&amp;#039;LCD&amp;#039;&amp;#039; дисплеја, где &amp;#039;&amp;#039;&amp;amp;lt;t&amp;gt;&amp;#039;&amp;#039; представља тренутну вредност температуре изражено у степенима Целзијуса у опсегу [0, 60] &amp;lt;u&amp;gt;очитану са температурног сензора&amp;lt;/u&amp;gt;. Освежавање поруке вршити периодично на сваких 200 милисекунди уколико је дошло до промене вредности.&lt;br /&gt;
# Обезбедити приказ поруке &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Azimut: &amp;amp;lt;a&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; у првом реду &amp;#039;&amp;#039;LCD&amp;#039;&amp;#039; дисплеја, где &amp;#039;&amp;#039;&amp;amp;lt;a&amp;gt;&amp;#039;&amp;#039; представља тренутну вредност азимута ветра &amp;lt;u&amp;gt;очитану са ветроказа&amp;lt;/u&amp;gt;. Освежавање поруке вршити периодично на сваких 200 милисекунди уколико је дошло до промене вредности.&lt;br /&gt;
# Обезбедити приказ поруке &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Brzina: &amp;amp;lt;b&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; у другом реду &amp;#039;&amp;#039;LCD&amp;#039;&amp;#039; дисплеја, где &amp;#039;&amp;#039;&amp;amp;lt;b&amp;gt;&amp;#039;&amp;#039; представља тренутну вредност брзине ветра &amp;lt;u&amp;gt;очитану са анемометра&amp;lt;/u&amp;gt;. Освежавање поруке вршити периодично на сваких 200 милисекунди уколико је дошло до промене вредности.&lt;br /&gt;
# Обезбедити треперење црвене &amp;#039;&amp;#039;LED&amp;#039;&amp;#039; са периодом од једне секунде (пола секунде светли, пола секунде не светли) уколико је брзина ветра једнака или већа од 50 километара на сат. Уколико је брзина ветра мања од 50 километара на сат црвена &amp;#039;&amp;#039;LED&amp;#039;&amp;#039; не светли.&lt;br /&gt;
# Обезбедити приказ порука &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;amp;lt;a&amp;gt;/&amp;amp;lt;b&amp;gt;/&amp;amp;lt;t&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; на виртуелном терминалу, где је &amp;#039;&amp;#039;&amp;amp;lt;a&amp;gt;&amp;#039;&amp;#039; тренутна вредност азимута ветра, &amp;#039;&amp;#039;&amp;amp;lt;b&amp;gt;&amp;#039;&amp;#039; тренутна вредност брзине ветра и &amp;#039;&amp;#039;&amp;amp;lt;t&amp;gt;&amp;#039;&amp;#039; тренутна вредност температуре изражено у степенима Целзијуса у опсегу [0, 60]. За величине чије вредности нису успешно израчунате исписати ? (знак питања). Уколико је ипак за неку од ставки (3), (4) или (5) вредност успешно израчуната онда та вредност мора бити приказана на виртуелном терминалу да би за ставку (7) били признати поени. Освежавање описане поруке вршити периодично на сваких 200 милисекунди уколико је дошло до промене вредности. Приликом освежавања поруке променити тренутне вредности у постојећој поруци уместо додавања нове поруке на виртуелном терминалу.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
Цело решење може се преузети [[Медиј:MIPS januar 2022 projekat.zip|одавде]]. Разлика решења у односу на поставку јесте што је редослед исписа на &amp;#039;&amp;#039;LCD&amp;#039;&amp;#039; дисплеју температура, азимут, брзина уместо азимут, брзина, температура.&lt;br /&gt;
&lt;br /&gt;
Сви релевантни измењени фајлови са кодом налазе се у &amp;lt;code&amp;gt;cubemx/code/Core/Src&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;cubemx/code/Core/Inc&amp;lt;/code&amp;gt; директоријумима.&lt;br /&gt;
&lt;br /&gt;
==== &amp;#039;&amp;#039;CubeMX&amp;#039;&amp;#039; ====&lt;br /&gt;
У алату &amp;#039;&amp;#039;CubeMX&amp;#039;&amp;#039; направљене су следеће измене:&lt;br /&gt;
* Омогућени су прекиди од ADC, TIM1 и USART1.&lt;br /&gt;
* Као &amp;#039;&amp;#039;Timebase Source&amp;#039;&amp;#039; подешен је TIM2.&lt;br /&gt;
* Омогућен је IN1 улаз ADC1.&lt;br /&gt;
* У TIM1 је канал 1 подешен за &amp;#039;&amp;#039;Input Capture&amp;#039;&amp;#039;.&lt;br /&gt;
* У USART1 је режим подешен на &amp;#039;&amp;#039;Asynchronous&amp;#039;&amp;#039;.&lt;br /&gt;
* У &amp;#039;&amp;#039;FreeRTOS&amp;#039;&amp;#039; је интерфејс подешен на CMSIS_V2.&lt;br /&gt;
* У &amp;#039;&amp;#039;Code Generator&amp;#039;&amp;#039; табу је подешено да се генеришу одвојени фајлови за сваку периферију.&lt;br /&gt;
* Пинови PC&amp;lt;sub&amp;gt;6..0&amp;lt;/sub&amp;gt;, PA&amp;lt;sub&amp;gt;13&amp;lt;/sub&amp;gt; и PB&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; су подешено као GPIO_Output.&lt;br /&gt;
Након генерисања, линија 310 у &amp;lt;code&amp;gt;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/port.c&amp;lt;/code&amp;gt; је закоментарисана.&lt;br /&gt;
&lt;br /&gt;
==== &amp;#039;&amp;#039;Makefile&amp;#039;&amp;#039; ====&lt;br /&gt;
У &amp;#039;&amp;#039;Makefile&amp;#039;&amp;#039; су додати фајлови &amp;lt;code&amp;gt;uart.c&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lcd.c&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sensors.c&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;exam.c&amp;lt;/code&amp;gt; у &amp;lt;code&amp;gt;C_SOURCES&amp;lt;/code&amp;gt;, следећи блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;makefile&amp;quot;&amp;gt;&lt;br /&gt;
ifeq ($(DEBUG), 1)&lt;br /&gt;
CFLAGS += -g -gdwarf-2&lt;br /&gt;
endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Generate dependency information&lt;br /&gt;
CFLAGS += -MMD -MP -MF&amp;quot;$(@:%.o=%.d)&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
је промењен на:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;makefile&amp;quot;&amp;gt;&lt;br /&gt;
ifeq ($(DEBUG), 1)&lt;br /&gt;
CFLAGS += -g -gdwarf-2 -fdebug-prefix-map==../&lt;br /&gt;
endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Generate dependency information&lt;br /&gt;
CFLAGS += -MMD -MP -MF&amp;quot;$(@:%.o=%.d)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CFLAGS += -mlong-calls&lt;br /&gt;
CFLAGS += -Wall -Wextra&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
и &amp;lt;code&amp;gt;startup_stm32f103x6.s&amp;lt;/code&amp;gt; је промењено на &amp;lt;code&amp;gt;Core/Src/startup_stm32f103x6.s&amp;lt;/code&amp;gt; унутар &amp;lt;code&amp;gt;ASM_SOURCES&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;lcd.h&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef CORE_INC_LCD_H_&lt;br /&gt;
#define CORE_INC_LCD_H_&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;FreeRTOS.h&amp;quot;&lt;br /&gt;
#include &amp;quot;task.h&amp;quot;&lt;br /&gt;
#include &amp;quot;queue.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define CLEAR_DISPLAY_INSTRUCTION 		0x01&lt;br /&gt;
&lt;br /&gt;
#define RETURN_HOME_INSTRUCTION 		0x02&lt;br /&gt;
&lt;br /&gt;
#define ENTRY_MODE_INSTRUCTION			0x04&lt;br /&gt;
#define ENTRY_MODE_INC_CURSOR			0x02&lt;br /&gt;
&lt;br /&gt;
#define DISPLAY_INSTRUCTION				0x08&lt;br /&gt;
#define DISPLAY_ON						0x04&lt;br /&gt;
#define DISPLAY_CURSOR_ON				0x02&lt;br /&gt;
#define DISPLAY_BLINK_ON				0x01&lt;br /&gt;
&lt;br /&gt;
#define SHIFT_INSTRUCTION				0x10&lt;br /&gt;
#define SHIFT_DISPLAY					0x08&lt;br /&gt;
#define SHIFT_RIGHT						0x04&lt;br /&gt;
&lt;br /&gt;
#define FUNCTION_INSTRUCTION			0x20&lt;br /&gt;
#define FUNCTION_2_LINES				0x08&lt;br /&gt;
#define FUNCTION_5x10_DOTS				0x04&lt;br /&gt;
&lt;br /&gt;
#define SET_CGRAM_ADDRESS_INSTRUCTION	0x40&lt;br /&gt;
&lt;br /&gt;
#define SET_DDRAM_ADDRESS_INSTRUCTION	0x80&lt;br /&gt;
&lt;br /&gt;
typedef enum {&lt;br /&gt;
	LCD_INSTRUCTION, LCD_DATA&lt;br /&gt;
} LCD_Register;&lt;br /&gt;
&lt;br /&gt;
typedef struct {&lt;br /&gt;
	LCD_Register reg;&lt;br /&gt;
	uint8_t data;&lt;br /&gt;
} LCD_Command;&lt;br /&gt;
&lt;br /&gt;
void LCD_Init();&lt;br /&gt;
void LCD_Enqueue(LCD_Register reg, uint8_t data);&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;uart.h&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef CORE_INC_UART_H_&lt;br /&gt;
#define CORE_INC_UART_H_&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;FreeRTOS.h&amp;quot;&lt;br /&gt;
#include &amp;quot;task.h&amp;quot;&lt;br /&gt;
#include &amp;quot;queue.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void UART_Transmit(uint8_t byte);&lt;br /&gt;
void UART_Init();&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;sensors.h&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef CORE_INC_SENSORS_H_&lt;br /&gt;
#define CORE_INC_SENSORS_H_&lt;br /&gt;
&lt;br /&gt;
extern float temperatureSensor;&lt;br /&gt;
extern float anemometerSensor;&lt;br /&gt;
extern float windvaneSensor;&lt;br /&gt;
&lt;br /&gt;
void Sensors_Init();&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;exam.h&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef CORE_INC_EXAM_H_&lt;br /&gt;
#define CORE_INC_EXAM_H_&lt;br /&gt;
&lt;br /&gt;
extern unsigned overflowCounter;&lt;br /&gt;
&lt;br /&gt;
void examInit();&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;lcd.c&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
#include &amp;quot;gpio.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define LCD_ENABLE_BIT 0x04&lt;br /&gt;
&lt;br /&gt;
QueueHandle_t LCD_QueueHandle;&lt;br /&gt;
LCD_Command cmd;&lt;br /&gt;
&lt;br /&gt;
void LCD_Write(LCD_Register reg, uint8_t data) {&lt;br /&gt;
	GPIOC-&amp;gt;ODR = (data &amp;lt;&amp;lt; 3) | reg;&lt;br /&gt;
	GPIOC-&amp;gt;ODR |= LCD_ENABLE_BIT;&lt;br /&gt;
	GPIOC-&amp;gt;ODR &amp;amp;= ~LCD_ENABLE_BIT;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void LCD_WriteCommand(LCD_Register reg, uint8_t data) {&lt;br /&gt;
	LCD_Write(reg, data &amp;gt;&amp;gt; 4);&lt;br /&gt;
	LCD_Write(reg, data);&lt;br /&gt;
	vTaskDelay(pdMS_TO_TICKS(2));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void LCD_Task(void *parameters) {&lt;br /&gt;
	UNUSED(parameters);&lt;br /&gt;
	LCD_Write(LCD_INSTRUCTION, (FUNCTION_INSTRUCTION) &amp;gt;&amp;gt; 4);&lt;br /&gt;
	vTaskDelay(pdMS_TO_TICKS(2));&lt;br /&gt;
	LCD_WriteCommand(LCD_INSTRUCTION, FUNCTION_INSTRUCTION | FUNCTION_2_LINES);&lt;br /&gt;
	LCD_WriteCommand(LCD_INSTRUCTION, DISPLAY_INSTRUCTION | DISPLAY_ON);&lt;br /&gt;
	LCD_WriteCommand(LCD_INSTRUCTION,&lt;br /&gt;
	ENTRY_MODE_INSTRUCTION | ENTRY_MODE_INC_CURSOR);&lt;br /&gt;
	LCD_WriteCommand(LCD_INSTRUCTION, RETURN_HOME_INSTRUCTION);&lt;br /&gt;
	while (1) {&lt;br /&gt;
		xQueueReceive(LCD_QueueHandle, &amp;amp;cmd, portMAX_DELAY);&lt;br /&gt;
		LCD_WriteCommand(cmd.reg, cmd.data);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void LCD_Enqueue(LCD_Register reg, uint8_t data) {&lt;br /&gt;
	cmd.reg = reg;&lt;br /&gt;
	cmd.data = data;&lt;br /&gt;
	xQueueSendToBack(LCD_QueueHandle, &amp;amp;cmd, portMAX_DELAY);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void LCD_Init() {&lt;br /&gt;
	xTaskCreate(LCD_Task, &amp;quot;LCD_Task&amp;quot;, 128, NULL, 5, NULL);&lt;br /&gt;
	LCD_QueueHandle = xQueueCreate(64, sizeof(LCD_Command));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;uart.c&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
#include &amp;quot;usart.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
QueueHandle_t UART_QueueHandle;&lt;br /&gt;
TaskHandle_t UART_TaskHandle;&lt;br /&gt;
&lt;br /&gt;
void UART_Task(void *parameters) {&lt;br /&gt;
	UNUSED(parameters);&lt;br /&gt;
	uint8_t byte;&lt;br /&gt;
	while (1) {&lt;br /&gt;
		xQueueReceive(UART_QueueHandle, &amp;amp;byte, portMAX_DELAY);&lt;br /&gt;
		HAL_UART_Transmit_IT(&amp;amp;huart1, &amp;amp;byte, sizeof(uint8_t));&lt;br /&gt;
		ulTaskNotifyTake(pdTRUE, portMAX_DELAY);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) {&lt;br /&gt;
	if (huart-&amp;gt;Instance != huart1.Instance) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	BaseType_t wokenTask = pdFALSE;&lt;br /&gt;
	vTaskNotifyGiveFromISR(UART_TaskHandle, &amp;amp;wokenTask);&lt;br /&gt;
	portYIELD_FROM_ISR(wokenTask);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void UART_Transmit(uint8_t byte) {&lt;br /&gt;
	xQueueSendToBack(UART_QueueHandle, &amp;amp;byte, portMAX_DELAY);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void UART_Init() {&lt;br /&gt;
	xTaskCreate(UART_Task, &amp;quot;UART_Task&amp;quot;, 128, NULL, 5, &amp;amp;UART_TaskHandle);&lt;br /&gt;
	UART_QueueHandle = xQueueCreate(64, sizeof(uint8_t));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;sensors.c&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;sensors.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;FreeRTOS.h&amp;quot;&lt;br /&gt;
#include &amp;quot;task.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;adc.h&amp;quot;&lt;br /&gt;
#include &amp;quot;gpio.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tim.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define MAX_VOLTAGE 5.0&lt;br /&gt;
#define MAX_RESOLUTION 4096&lt;br /&gt;
&lt;br /&gt;
float temperatureSensor = 0.0;&lt;br /&gt;
float anemometerSensor = 0.0;&lt;br /&gt;
float windvaneSensor = 0.0;&lt;br /&gt;
int fetchingTemperature;&lt;br /&gt;
unsigned overflowCounter = 0;&lt;br /&gt;
int previousTicks = 0;&lt;br /&gt;
&lt;br /&gt;
TaskHandle_t Sensors_TaskHandle;&lt;br /&gt;
&lt;br /&gt;
void Sensors_Task(void *parameters) {&lt;br /&gt;
	UNUSED(parameters);&lt;br /&gt;
	while (1) {&lt;br /&gt;
		fetchingTemperature = 1;&lt;br /&gt;
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);&lt;br /&gt;
		HAL_ADC_Start_IT(&amp;amp;hadc1);&lt;br /&gt;
		ulTaskNotifyTake(pdTRUE, portMAX_DELAY);&lt;br /&gt;
&lt;br /&gt;
		fetchingTemperature = 0;&lt;br /&gt;
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);&lt;br /&gt;
		HAL_ADC_Start_IT(&amp;amp;hadc1);&lt;br /&gt;
		ulTaskNotifyTake(pdTRUE, portMAX_DELAY);&lt;br /&gt;
&lt;br /&gt;
		vTaskDelay(pdMS_TO_TICKS(100));&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
float adcToWindvane(int adcValue) {&lt;br /&gt;
	switch (adcValue) {&lt;br /&gt;
	case 952:&lt;br /&gt;
		return 0.0;&lt;br /&gt;
	case 2471:&lt;br /&gt;
		return 22.5;&lt;br /&gt;
	case 2250:&lt;br /&gt;
		return 45.0;&lt;br /&gt;
	case 3760:&lt;br /&gt;
		return 67.5;&lt;br /&gt;
	case 3723:&lt;br /&gt;
		return 90.0;&lt;br /&gt;
	case 3831:&lt;br /&gt;
		return 112.5;&lt;br /&gt;
	case 3356:&lt;br /&gt;
		return 135.0;&lt;br /&gt;
	case 3589:&lt;br /&gt;
		return 157.5;&lt;br /&gt;
	case 2946:&lt;br /&gt;
		return 180.0;&lt;br /&gt;
	case 3116:&lt;br /&gt;
		return 202.5;&lt;br /&gt;
	case 1575:&lt;br /&gt;
		return 225.0;&lt;br /&gt;
	case 1698:&lt;br /&gt;
		return 247.5;&lt;br /&gt;
	case 315:&lt;br /&gt;
		return 270.0;&lt;br /&gt;
	case 786:&lt;br /&gt;
		return 292.5;&lt;br /&gt;
	case 547:&lt;br /&gt;
		return 315.0;&lt;br /&gt;
	case 1285:&lt;br /&gt;
		return 337.5;&lt;br /&gt;
	default:&lt;br /&gt;
		return 0.0;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc) {&lt;br /&gt;
	if (hadc-&amp;gt;Instance != hadc1.Instance) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	uint32_t value = HAL_ADC_GetValue(hadc);&lt;br /&gt;
	if (fetchingTemperature) {&lt;br /&gt;
		temperatureSensor =&lt;br /&gt;
				((float) value) * MAX_VOLTAGE * 100 / MAX_RESOLUTION;&lt;br /&gt;
	} else {&lt;br /&gt;
		windvaneSensor = adcToWindvane(value);&lt;br /&gt;
	}&lt;br /&gt;
	xTaskNotifyGive(Sensors_TaskHandle);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) {&lt;br /&gt;
	if (htim-&amp;gt;Instance != htim1.Instance) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	float ticks = htim-&amp;gt;Instance-&amp;gt;CCR1 + overflowCounter * 65536&lt;br /&gt;
			- previousTicks;&lt;br /&gt;
	previousTicks = htim-&amp;gt;Instance-&amp;gt;CCR1;&lt;br /&gt;
	overflowCounter = 0;&lt;br /&gt;
	anemometerSensor = 8000000.0 / ticks * 2.4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Sensors_Init() {&lt;br /&gt;
	HAL_TIM_Base_Start_IT(&amp;amp;htim1);&lt;br /&gt;
	HAL_TIM_IC_Start_IT(&amp;amp;htim1, TIM_CHANNEL_1);&lt;br /&gt;
	xTaskCreate(Sensors_Task, &amp;quot;Sensors_Task&amp;quot;, 128, NULL, 5,&lt;br /&gt;
			&amp;amp;Sensors_TaskHandle);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;exam.c&amp;lt;/code&amp;gt; ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;exam.h&amp;quot;&lt;br /&gt;
#include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
#include &amp;quot;uart.h&amp;quot;&lt;br /&gt;
#include &amp;quot;sensors.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;FreeRTOS.h&amp;quot;&lt;br /&gt;
#include &amp;quot;task.h&amp;quot;&lt;br /&gt;
#include &amp;quot;timers.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;gpio.h&amp;quot;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void writeLCD(unsigned addr, const char *str) {&lt;br /&gt;
	LCD_Enqueue(LCD_INSTRUCTION, SET_DDRAM_ADDRESS_INSTRUCTION | addr);&lt;br /&gt;
	for (size_t i = 0; i &amp;lt; strlen(str); ++i) {&lt;br /&gt;
		LCD_Enqueue(LCD_DATA, str[i]);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void writeUART(char *str) {&lt;br /&gt;
	for (size_t i = 0; i &amp;lt; strlen(str); ++i) {&lt;br /&gt;
		UART_Transmit(str[i]);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void intToStr(int num, char *str, int maxLen) {&lt;br /&gt;
	for (int i = 0; i &amp;lt; maxLen; ++i) {&lt;br /&gt;
		str[i] = &amp;#039; &amp;#039;;&lt;br /&gt;
	}&lt;br /&gt;
	int index = maxLen - 1;&lt;br /&gt;
	if (num == 0) {&lt;br /&gt;
		str[maxLen - 1] = &amp;#039;0&amp;#039;;&lt;br /&gt;
	}&lt;br /&gt;
	while (num &amp;gt; 0 &amp;amp;&amp;amp; index &amp;gt;= 0) {&lt;br /&gt;
		str[index--] = &amp;#039;0&amp;#039; + (num % 10);&lt;br /&gt;
		num /= 10;&lt;br /&gt;
	}&lt;br /&gt;
	str[maxLen] = &amp;#039;\0&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
float prevTemperatureSensor;&lt;br /&gt;
float prevWindvaneSensor;&lt;br /&gt;
float prevAnemometerSensor;&lt;br /&gt;
&lt;br /&gt;
void examTask(void *parameters) {&lt;br /&gt;
	UNUSED(parameters);&lt;br /&gt;
	// Ekvivalentne adrese: 0x80, 0xC0, 0x90&lt;br /&gt;
	// Kontroleru se ne mogu poslati adrese sa preko 7 bita&lt;br /&gt;
	writeLCD(0x00, &amp;quot;Temper: &amp;quot;);&lt;br /&gt;
	writeLCD(0x40, &amp;quot;Azimut: &amp;quot;);&lt;br /&gt;
	writeLCD(0x10, &amp;quot;Brzina: &amp;quot;);&lt;br /&gt;
	while (1) {&lt;br /&gt;
		if (((int) prevTemperatureSensor) != ((int) temperatureSensor)&lt;br /&gt;
				|| ((int) prevWindvaneSensor) != ((int) windvaneSensor)&lt;br /&gt;
				|| ((int) prevAnemometerSensor) != ((int) anemometerSensor)) {&lt;br /&gt;
			prevTemperatureSensor = temperatureSensor;&lt;br /&gt;
			prevWindvaneSensor = windvaneSensor;&lt;br /&gt;
			prevAnemometerSensor = anemometerSensor;&lt;br /&gt;
			char temper[4];&lt;br /&gt;
			char azimut[4];&lt;br /&gt;
			char brzina[4];&lt;br /&gt;
			intToStr((int) temperatureSensor, temper, 3);&lt;br /&gt;
			intToStr((int) windvaneSensor, azimut, 3);&lt;br /&gt;
			intToStr((int) anemometerSensor, brzina, 3);&lt;br /&gt;
			writeLCD(0x08, temper);&lt;br /&gt;
			writeLCD(0x48, azimut);&lt;br /&gt;
			writeLCD(0x18, brzina);&lt;br /&gt;
			writeUART(&amp;quot;\b\b\b\b\b\b\b\b\b\b\b&amp;quot;);&lt;br /&gt;
			writeUART(azimut);&lt;br /&gt;
			writeUART(&amp;quot;/&amp;quot;);&lt;br /&gt;
			writeUART(brzina);&lt;br /&gt;
			writeUART(&amp;quot;/&amp;quot;);&lt;br /&gt;
			writeUART(temper);&lt;br /&gt;
		}&lt;br /&gt;
		vTaskDelay(pdMS_TO_TICKS(200));&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void ledTimer(TimerHandle_t xTimer) {&lt;br /&gt;
	UNUSED(xTimer);&lt;br /&gt;
	if (anemometerSensor &amp;lt; 50) {&lt;br /&gt;
		HAL_GPIO_WritePin(GPIOA, GPIO_PIN_13, GPIO_PIN_RESET);&lt;br /&gt;
	} else {&lt;br /&gt;
		HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_13);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void examInit() {&lt;br /&gt;
	LCD_Init();&lt;br /&gt;
	UART_Init();&lt;br /&gt;
	Sensors_Init();&lt;br /&gt;
	xTaskCreate(examTask, &amp;quot;examTask&amp;quot;, 128, NULL, 2, NULL);&lt;br /&gt;
	TimerHandle_t timer = xTimerCreate(&amp;quot;ledTimer&amp;quot;, pdMS_TO_TICKS(500), pdTRUE,&lt;br /&gt;
	NULL, ledTimer);&lt;br /&gt;
	xTimerStart(timer, portMAX_DELAY);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;main.c&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Унутар &amp;lt;code&amp;gt;HAL_TIM_PeriodElapsedCallback&amp;lt;/code&amp;gt;, додат је блок кода:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
	/* USER CODE BEGIN Callback 1 */&lt;br /&gt;
	if (htim-&amp;gt;Instance == TIM1) {&lt;br /&gt;
		++overflowCounter;&lt;br /&gt;
	}&lt;br /&gt;
	/* USER CODE END Callback 1 */&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Напомене ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Микропроцесорски системи]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
</feed>