<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=46&amp;t=16660&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-10-31T15:24:12+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=16660&amp;mode</id>
<entry>
<author><name><![CDATA[_damian]]></name></author>
<updated>2016-10-31T15:24:12+01:00</updated>
<published>2016-10-31T15:24:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173288#p173288</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173288#p173288"/>
<title type="html"><![CDATA[Re: [STM32F4] Błąd podczas rzutowania zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173288#p173288"><![CDATA[
<div class="quotetitle">krish napisał(a):</div><div class="quotecontent"><br />Popatrz jak wygląda kod w asemblerze, może jest używany FPU a nie jest włączany?<br /></div><br />Jako, że wygrał we mnie leń to postanowiłem po prostu włączyć FPU, nie analizować na razie kodu asm i zobaczyc co się stanie. I poszło! Także wielkie dzięki bo pewnie bez pomocy męczyłbym się z tym z 2 tygodnie. Generalnie sam opis FPU znajduje się w programming manual, a moja nauka stm opierała się głównie na RM i nie zwróciłem w ogóle uwagi na koprocesor. Także przestroga dla początkujących - czytajcie też PM <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9619">_damian</a> — 31 paź 2016, o 15:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[_damian]]></name></author>
<updated>2016-10-30T22:20:13+01:00</updated>
<published>2016-10-30T22:20:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173246#p173246</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173246#p173246"/>
<title type="html"><![CDATA[Re: [STM32F4] Błąd podczas rzutowania zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173246#p173246"><![CDATA[
<div class="quotetitle">PJS napisał(a):</div><div class="quotecontent"><br />W pętli while(1) nic się nie dzieje, więc kompilator najzwyczajniej (prawdopodobnie) optymalizuje i wywala niepotrzebne &quot;rzeczy&quot;:<br />- przypisanie z rzutowaniem nie jest nigdzie wykorzystywane, więc wywala;<br />- port jest zawsze w jednym stanie, więc być może jest to stan domyślny po resecie lub w sekcji startowej programu jest to ustawiane;<br />--- zatem jak widać zawartość tej pętli z punktu widzenia kompilatora nic nie robi, więc zostaje pusta pętla while(1)<br /></div><br /><br />To tylko przykład, tak samo dzieje się w przypadku bardziej rozbudowanego programu gdzie te zmienne są wykorzystywane, a tutaj chciałem jak najprościej pokazać jaki jest błąd. <br /><br />[syntax=asm]16        zmienna_float=(float)zmienna_int;<br />08000258:   ldr     r3, &#91;pc, #32&#93;   ; (0x800027c &lt;main+64&gt;)<br />0800025a:   ldr     r3, &#91;r3, #0&#93;<br />0800025c:   vmov    s15, r3<br />08000260:   vcvt.f32.s32    s15, s15<br />08000264:   ldr     r3, &#91;pc, #24&#93;   ; (0x8000280 &lt;main+68&gt;)<br />08000266:   vstr    s15, &#91;r3&#93;[/syntax]<br /><br />Tak wygląda kod assemblera. Nie potrafię na razie powiedzieć co on oznacza, ponieważ nie znam ASM ale jutro do tego przysiąde, może coś to pomoże<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9619">_damian</a> — 30 paź 2016, o 22:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PJS]]></name></author>
<updated>2016-10-30T20:57:12+01:00</updated>
<published>2016-10-30T20:57:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173237#p173237</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173237#p173237"/>
<title type="html"><![CDATA[Re: [STM32F4] Błąd podczas rzutowania zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173237#p173237"><![CDATA[
W pętli while(1) nic się nie dzieje, więc kompilator najzwyczajniej (prawdopodobnie) optymalizuje i wywala niepotrzebne &quot;rzeczy&quot;:<br />- przypisanie z rzutowaniem nie jest nigdzie wykorzystywane, więc wywala;<br />- port jest zawsze w jednym stanie, więc być może jest to stan domyślny po resecie lub w sekcji startowej programu jest to ustawiane;<br />--- zatem jak widać zawartość tej pętli z punktu widzenia kompilatora nic nie robi, więc zostaje pusta pętla while(1)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1614">PJS</a> — 30 paź 2016, o 20:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krish]]></name></author>
<updated>2016-10-30T18:19:32+01:00</updated>
<published>2016-10-30T18:19:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173196#p173196</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173196#p173196"/>
<title type="html"><![CDATA[Re: [STM32F4] Błąd podczas rzutowania zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173196#p173196"><![CDATA[
Popatrz jak wygląda kod w asemblerze, może jest używany FPU a nie jest włączany?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2273">krish</a> — 30 paź 2016, o 18:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2016-10-30T16:16:54+01:00</updated>
<published>2016-10-30T16:16:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173189#p173189</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173189#p173189"/>
<title type="html"><![CDATA[Re: [STM32F4] Błąd podczas rzutowania zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173189#p173189"><![CDATA[
<span style="color: #FF0000"><strong>Proszę poprawić formatowanie kodów</strong></span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 30 paź 2016, o 16:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[_damian]]></name></author>
<updated>2016-10-30T16:26:29+01:00</updated>
<published>2016-10-30T16:14:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173188#p173188</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173188#p173188"/>
<title type="html"><![CDATA[[STM32F4] Błąd podczas rzutowania zmiennej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16660&amp;p=173188#p173188"><![CDATA[
Witam. Poniżej wklejam prosty kod programu, który się kompiluje poprawnie, natomiast nie działa na procesorze.<br />[syntax=c]#include&quot;stm32f411xe.h&quot;<br /><br />int zmienna_int=24;<br />float zmienna_float;<br /><br />int main()<br />{<br /><br />RCC-&gt;AHB1ENR=RCC_AHB1ENR_GPIOBEN; // wlaczenie taktowania portu<br />GPIOB-&gt;MODER=GPIO_MODER_MODER3_0;<br />GPIOB-&gt;OSPEEDR=GPIO_OSPEEDER_OSPEEDR3_0;<br />GPIOB-&gt;PUPDR=GPIO_PUPDR_PUPDR3_0;<br /><br />while(1)<br />{<br />zmienna_float=(float)zmienna_int;<br />GPIOB-&gt;ODR=GPIO_ODR_ODR_3; // zaswiec diode - cokolwiek co pozwoli sprawdzic czy program przeszedl<br />}<br />}[/syntax]<br />Otóż błąd znajduje się w przypisaniu zmiennej typu int do zmiennej typu float. W czasie wykonywania tej linijki, program przeskakuje do pętli nieskończonej:<br />[syntax=c]* @brief  This is the code that gets called when the processor receives an <br /> *         unexpected interrupt.  This simply enters an infinite loop, preserving<br /> *         the system state for examination by a debugger.<br /> * @param  None     <br /> * @retval None       <br />*/<br />    .section  .text.Default_Handler,&quot;ax&quot;,%progbits<br />Default_Handler:<br />Infinite_Loop:<br />  b  Infinite_Loop<br />  .size  Default_Handler, .-Default_Handler[/syntax]<br />Jak poprawnie dokonać takiego rzutowania ? No bo chyba jest to możliwe ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9619">_damian</a> — 30 paź 2016, o 16:14</p><hr />
]]></content>
</entry>
</feed>