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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-07-06T13:28:04+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=12177&amp;mode</id>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2015-07-06T13:28:04+01:00</updated>
<published>2015-07-06T13:28:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133754#p133754</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133754#p133754"/>
<title type="html"><![CDATA[Re: Wolna zmiana stanów wyjść]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133754#p133754"><![CDATA[
Witam,<br /><br />Nie mam pojęcia, dlaczego kompilator generuje taki &quot;pokręcony&quot; kod - sama zmiana stanu wyjść trwa krótko, ale pętla nieskończona - porażka. Widocznie kompilator wie, że takie testy są bez sensu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" />. Z tego widać, że w takich wypadkach warto rzucić okiem na kod wynikowy. Jako ciekawostkę napiszę, że ten sam kompilator potrafi wygenerować dla ARM pętlę while(1) składającą się z 1 instrukcji .asm. Ostatnio testowałem jakieś tam procedury obsługi przerwań, a program główny składał się tylko z takiej pustej pętli. Przerwania się nie wykonywały, ja straciłem kupę czasu, a wystarczyło rzucić okiem na plik .lss <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":-(" title="Smutny" />.<br /><br />Pozdrawiam, QuadMan.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 6 lip 2015, o 13:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daniel880]]></name></author>
<updated>2015-07-03T11:41:13+01:00</updated>
<published>2015-07-03T11:41:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133536#p133536</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133536#p133536"/>
<title type="html"><![CDATA[Re: Wolna zmiana stanów wyjść]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133536#p133536"><![CDATA[
No więc udało mi się uzyskać zmianę co trochę ponad 40ns. Wychodzi prawie 24MHz więc wydaje mi się, że jest dobrze:) Faktycznie dopiero przy użyciu timera udało się uzyskać taką częstotliwość. Dzisiaj sprawdzę jeszcze jak ze zmianą wyjść bez pętli - tylko w ciągu;) ale rzeczywiście czasy trwania stanu wysokiego i niskiego nie były sobie równe;)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2328">Daniel880</a> — 3 lip 2015, o 11:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gizmo5418]]></name></author>
<updated>2015-07-03T10:14:25+01:00</updated>
<published>2015-07-03T10:14:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133518#p133518</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133518#p133518"/>
<title type="html"><![CDATA[Re: Wolna zmiana stanów wyjść]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133518#p133518"><![CDATA[
Witam, <br /><br />Może walnę gafę, ale jakie taktowanie ma magistrala APB2 ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1967">gizmo5418</a> — 3 lip 2015, o 10:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sepako]]></name></author>
<updated>2015-07-02T14:07:00+01:00</updated>
<published>2015-07-02T14:07:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133469#p133469</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133469#p133469"/>
<title type="html"><![CDATA[Re: Wolna zmiana stanów wyjść]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133469#p133469"><![CDATA[
Wydaje mi się ,że problem tkwi gdzie indziej - jeśli zobaczysz jaki kod wynikowy assemblera wygenerował kompilator to okaże się dlaczego działa to tak wolno. Szybciej będzie jeśli pin będzie zmieniać jakieś peryferium np zegar (np PWM) lub kod zawierający po sobie kilkadziesiąt następujących po sobie instrukcji ustawiających i zerujących pin ale napisanych wprost a nie w pętli.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1305">sepako</a> — 2 lip 2015, o 14:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ramrusazer]]></name></author>
<updated>2015-07-02T09:38:00+01:00</updated>
<published>2015-07-02T09:38:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133448#p133448</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133448#p133448"/>
<title type="html"><![CDATA[Re: Wolna zmiana stanów wyjść]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133448#p133448"><![CDATA[
Tylko czego się spodziewasz po serii VL, w dodatku tej starej i najsłabszej. To jak byś wziął attiny2313 i narzekał że jest wolne <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<br /><br />Chcesz migać szybciej, są nowsze rdzenie/procki na STM32. VL to totalny lowend.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10335">ramrusazer</a> — 2 lip 2015, o 09:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daniel880]]></name></author>
<updated>2015-07-01T18:55:52+01:00</updated>
<published>2015-07-01T18:55:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133402#p133402</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133402#p133402"/>
<title type="html"><![CDATA[Re: Wolna zmiana stanów wyjść]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133402#p133402"><![CDATA[
Zmieniałem też stany poprzez<br /><br />[syntax=c]GPIOC-&gt;BSR = GPIO_Pin_8;<br />GPIOC-&gt;BSRR = GPIO_Pin_8;[/syntax]<br /><br />Wyniki są porównywalne. Bez ustawiania taktowania z tego co doczytałem mikrokontroler startuje z HSI i jest taktowany 8MHz. Przy takich ustawieniach na wyjściu stan zmienia się z częstotliwością około 340kHz czyli 1/3 tego co przy ustawieniu częstotliwości.<br /><br />Widać zależność 340kHz/1,2MHz  =  8/24 = 1/3     Dlatego też zakładam, że częstotliwość ustawiona jest poprawnie.<br /><br />Będę próbował uruchomić timery i zobaczymy czy potwierdzi się częstotliwość.<br /><br /><br />edit:<br /><br />Zegar jest ustawiony na 24MHz to jest pewne. Potwierdziło to przerwanie od SysTick. Ustawione co 1ms dla 24MHz jest wywoływane dokładnie co 1ms;)<br />Jestem bardzo ciekawy dlaczego nie mogę uzyskać szybszej zmiany wyjścia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2328">Daniel880</a> — 1 lip 2015, o 18:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nondzu]]></name></author>
<updated>2015-07-01T18:34:17+01:00</updated>
<published>2015-07-01T18:34:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133398#p133398</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133398#p133398"/>
<title type="html"><![CDATA[Re: Wolna zmiana stanów wyjść]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133398#p133398"><![CDATA[
nie sprawdzałem w jaki sposób ustawiłeś rejestry do taktowania procka jednak tutaj szukałbym ewentualnego problemu, skoro od niedawna programujesz stm32 to być może coś przeoczyłeś właśnie tutaj. A drugie co to jeśli robisz takie porównanie to zmieniaj stan wyjścia stm32 nie przez bibliotekę a bezpośrednio na rejestrach. Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1672">Nondzu</a> — 1 lip 2015, o 18:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daniel880]]></name></author>
<updated>2015-07-01T17:11:10+01:00</updated>
<published>2015-07-01T17:11:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133395#p133395</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133395#p133395"/>
<title type="html"><![CDATA[Wolna zmiana stanów wyjść]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12177&amp;p=133395#p133395"><![CDATA[
Witam!<br />Od dzisiaj jestem posiadaczem płytki STM32VLDISCOVERY z mikrokontrolerem STM32F100RB. Chciałem dzisiaj porównać osiągi Atmegi 328p i STM. W tym celu napisałem na obydwa mikrokontrolery program, który w głównej pętli miał tylko zmianę stanu wyjścia. W 328p udało mi się uzyskać częstotliwość około 2MHz przy taktowaniu 12MHz. W STM na wyjściu jest maksymalnie 1,2MHz przy taktowaniu 24MHz. Czy może mi ktoś wytłumaczyć czym to jest spowodowane?? Może coś w programie jest nie tak? Poniżej program:<br />[syntax=c]int main(){<br /><br />RCC_Config();<br />GPIO_Config();<br /><br /><br /><br />while(1){<br /><br />//Ustawienie wyjscia<br />GPIO_SetBits(GPIOC,GPIO_Pin_8);<br /><br />//Skasowanie wyjscia<br />GPIO_ResetBits(GPIOC,GPIO_Pin_8);<br />}<br />}<br /><br />void RCC_Config(void){<br />ErrorStatus HSEStartupStatus;<br />RCC_DeInit();<br />RCC_HSEConfig(RCC_HSE_ON);<br />HSEStartupStatus=RCC_WaitForHSEStartUp();<br />if(HSEStartupStatus == SUCCESS)<br />{<br />RCC_HCLKConfig(RCC_SYSCLK_Div1);<br />RCC_PCLK1Config(RCC_HCLK_Div1);<br />RCC_PCLK2Config(RCC_HCLK_Div1);<br />RCC_PLLConfig(RCC_PLLSource_PREDIV1,RCC_PLLMul_3);<br />RCC_PLLCmd(ENABLE);<br /><br />while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);<br /><br />RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);<br />while(RCC_GetSYSCLKSource() != 0x08);<br />}<br />}<br />void GPIO_Config(void){<br /><br />GPIO_InitTypeDef GPIO_InitStruct;<br />RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);<br /><br />GPIO_StructInit(&amp;GPIO_InitStruct);<br /><br /><br />GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8;<br />  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;<br />  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;<br /><br /> GPIO_Init(GPIOC, &amp;GPIO_InitStruct);<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2328">Daniel880</a> — 1 lip 2015, o 17:11</p><hr />
]]></content>
</entry>
</feed>