<?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=18567&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-06-07T19:18:41+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=18567&amp;mode</id>
<entry>
<author><name><![CDATA[RideorDie]]></name></author>
<updated>2017-06-07T19:18:41+01:00</updated>
<published>2017-06-07T19:18:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18567&amp;p=190396#p190396</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18567&amp;p=190396#p190396"/>
<title type="html"><![CDATA[Re: Przerwania w ARM + kilka pytań ogólnych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18567&amp;p=190396#p190396"><![CDATA[
Pomoże ktoś ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7568">RideorDie</a> — 7 cze 2017, o 19:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[RideorDie]]></name></author>
<updated>2017-06-06T20:53:46+01:00</updated>
<published>2017-06-06T20:53:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18567&amp;p=190361#p190361</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18567&amp;p=190361#p190361"/>
<title type="html"><![CDATA[Re: Przerwania w ARM + kilka pytań ogólnych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18567&amp;p=190361#p190361"><![CDATA[
Mam kolejne proste pytanie.<br /><br />Instrukcja TST<br /><br />[syntax=asm]TSTR1,#1[/syntax]<br /><br />W jakim przypadku ustawiana jest flaga?<br /><br />Jeżli do rejestru R1 wrzucę 0x01 to się nie ustawia. a już dla R1 = 0x02 tak. Czyli żeby ustawiła się flaga wynikiem muszą być same zera ?<br /><br />TST to operacja AND czyli <br />dla R1 = 0x01 mam 01 &amp; 01 = 01<br />dla R1 = 0x02 mam 10 &amp; 01 = 00<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7568">RideorDie</a> — 6 cze 2017, o 20:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[RideorDie]]></name></author>
<updated>2017-06-05T21:54:56+01:00</updated>
<published>2017-06-05T21:54:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18567&amp;p=190329#p190329</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18567&amp;p=190329#p190329"/>
<title type="html"><![CDATA[Przerwania w ARM + kilka pytań ogólnych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18567&amp;p=190329#p190329"><![CDATA[
Cześć zwracam się do Was po raz kolejny z prośbą o pomoc.<br /><br />Zaczniemy może od przerwań.<br /><br />Na przykładzie timera jak ja to rozumiem.<br /><br />Timer generuje fale prostokątną i to jaki jest współczynnik wypełnienia tej fali zależy od tego jak skonfigurujemy sobie Timer.<br />Czyli dzięki temu uzyskamy sygnał powtarzający się co pewien okres i rozumiem, że co ten właśnie okres będzie generowane przerwanie. I o co chodzi tutaj w tym przerwaniu co to znaczy, że jest generowane przerwanie, jak to się dzieje ? rozumiem, że to się dzieje samo ja nic nie muszę robić ?<br /><br />I teraz tak tutaj w kodzie z jednym moich programów mam metodę która służy właśnie obsłudze przerwania? nie wiem.<br /><br /><br />[syntax]//obsluga przerwania<br />void TIM2_IRQHandler(void) <br />{<br />licznik=TIM2-&gt;CCR1;<br />GPIOG-&gt;ODR ^=(1&lt;&lt;13);//rejestr danych wychodzacych<br />TIM2-&gt;CCER ^=  (1&lt;&lt;1);    //zmien reakcje na zbocze rosnace&lt;-&gt;opadajace ???<br />pomiar = ~pomiar;<br />}[/syntax]<br /><br />bardzo proszę o wytłumaczenie tego kodu o co tu chodzi. Powyższy fragment kodu jest z programu który zliczał ile jest naciśnięty przycisk, czyli przypuszczam że to przerwanie jest wywołane jak się ten przycisk puści. Jak to się dzieje, w jaki sposób takie przerwanie jest wywołane, co musi się stać ?<br /><br />Przeczytałem też że w każdej obsłudze przerwania trzeba kasować pending request bo obsługa przerwania się zapętli chyba (czy w powyzszym kodzie kasowane jest pending request? ).<br /><br />W kodzie w assemblerze do obsługi przerwań używaliśmy też czegoś takiego: TIM3_IRQHandler  i EXTI0_IRQHandler. Nie wiem jakie to ma znaczenie w użyciu.<br /><br /><br />Część 2 -&gt; banały<br /><br />Mam taki kod<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent"><br />            1. CMP      R5,#255 ;<br />            2. ITE      EQ ;<br />            3. MOVEQ           R1,#1&lt;&lt;13<br />            4. MOVNE           R1,#1&lt;&lt;29 ;reset jest na 29<br />            5. STR      R1,&#91;R0&#93;<br /><br /></div><br /><br />1. Porównuje wartość w rejestrze R5 z 255. Jeżeli jest taka sama ustawia się flaga Z = 1<br />2. Jeżeli Z == 1 to wykona sie linijka 3, jeżeli nie to wykona się linijka 4.<br /><br />PYTANIE 1. Po co piszę MOV<strong>EQ</strong> / MOV<strong>NE</strong> ?? Równie dobrze mogę wywalić linijkę nr 2 ( ITE ) i też będzie chyba działać.<br /><br />PYTANIE 2. Co oznaczają te przesunięcia bitowe w R1 (linijka 3 i 4) po co takie coś się tutaj robi?<br /><br />PYTANIE 3. Co to znaczy ze na jakimś porcie robimy maskę na jakiejś pozycji. Np zadanie że mam liczbę np 1011 i chcę wyzerować jakaś pozycję -&gt; robię maskę z jedynkami/zerami na tej pozycji którą chce zmienić. Czy byłby ktoś w stanie mi pokazać przykład jak takie zadanko należy zrobić?<br /><br />PYTANIE 4. Instrukcja STR<br /><br />Powiedzmy, że mam:<br /><br />LDR R1,[R0]<br />STR R1,[R0]<br /><br />Wiem, że STR zapisuje wartość rejestru w pamięci w przeciwieństwie do LDR który to ładuje wartość rejestru z pamięci.<br /><br />Tylko, że ja nie rozumiem czym to się różni.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7568">RideorDie</a> — 5 cze 2017, o 21:54</p><hr />
]]></content>
</entry>
</feed>