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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-08-16T10:47:13+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=12658&amp;mode</id>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2015-08-16T10:47:13+01:00</updated>
<published>2015-08-16T10:47:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12658&amp;p=137494#p137494</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12658&amp;p=137494#p137494"/>
<title type="html"><![CDATA[Re: STM32F0 Discovery - problem z USART2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12658&amp;p=137494#p137494"><![CDATA[
Oki, po poprawieniu nazwy funkcji wszystko ruszyło. Jeszcze raz dziękuje za pomoc <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=2500">Nefarious19</a> — 16 sie 2015, o 10:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2015-08-16T00:11:16+01:00</updated>
<published>2015-08-16T00:11:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12658&amp;p=137478#p137478</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12658&amp;p=137478#p137478"/>
<title type="html"><![CDATA[Re: STM32F0 Discovery - problem z USART2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12658&amp;p=137478#p137478"><![CDATA[
Panowie, jakby mi procek nie ruszał to bym szukał gdzie indziej problemu. Według teorii zegar mam skonfigurowany na 96Mhz, jednak sprawdziłem RCC get clocks i podaje mi ze mam 48MHZ a dioda sobie migała normlanie na delayu. Nie wiem czemu przy tym ustawieniu prediv dzieli mi przez 4, nie przez dwa. Dlatego jest tak ustawione. Systicka sobie odpalę. Dzięki za pomoc, jutro dam znać czy pomogło bo widzę jaki głupi błąd zrobiłem.<br /><br /><br /><br />A co do rejestrów to sobie poradzę. Niech Kolega Xbary tak bardzo nie czarnowidzi.  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 16 sie 2015, o 00:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2015-08-15T22:49:27+01:00</updated>
<published>2015-08-15T22:49:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12658&amp;p=137473#p137473</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12658&amp;p=137473#p137473"/>
<title type="html"><![CDATA[Re: STM32F0 Discovery - problem z USART2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12658&amp;p=137473#p137473"><![CDATA[
Witam,<br /><br /><div class="quotetitle">Nefarious19 napisał(a):</div><div class="quotecontent"><br />Witam<br /><br />....<strong>Wlutowałem w płytke kwarc 16MHz</strong>, uruchomiłem zegar przez HSEi PLL na 48Mhz, na peryferia idzie 24MHz. Ma ktoś jakiś pomysł?....<br /></div><br /><br />No toś mu, kolego, dał po garach <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" />.<br /><br />Masz:<br />[syntax=c]RCC_PREDIV1Config(RCC_PREDIV1_Div2);<br />RCC_PLLConfig(RCC_PLLSource_PREDIV1, RCC_PLLMul_12);[/syntax]<br /><br />Czyli SYSCLK = (16/2)*12 = 96MHz. Daj np. dzielnik RCC_PREDIV1_Div4, albo mnożnik RCC_PLLMul_6 i tu będzie ok. I poza tym, to co napisał kolega <strong>xbary</strong>, ma być:[syntax=c]RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE)[/syntax]<br /><br />bo USART2 jest podłączony do APB ( APB1).<br /><br />Więcej grzechów nie pamiętam... <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" />.<br /><br />Dopisane:<br />Na początku pisania projektu warto uruchomić przerwanie od SYSTICK-a i zrobić sobie z niego delay-a, wtedy można &quot;na oko&quot; ocenić poprawność konfiguracji zegara ( inna sprawa, że u Ciebie procek na pewno i tak w ogóle nie rusza ). I jeszcze jedno w STM-ach  można skonfigurować port jako wyjściowy i jednocześnie zostawić załączone rezystory podciągające. Zwykle nie ma to sensu, bo jedynie zwiększa pobór prądu, więc coś takiego :<br /><br />[syntax=c]PINY_POD_USART.GPIO_PuPd = GPIO_PuPd_UP;<br />PINY_POD_USART.GPIO_OType = GPIO_OType_PP;[/syntax]<br /><br />warto zastąpić czymś takim:<br /><br />[syntax=c]PINY_POD_USART.GPIO_PuPd = GPIO_PuPd_NOPULL;<br />PINY_POD_USART.GPIO_OType = GPIO_OType_PP;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 15 sie 2015, o 22:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xbary]]></name></author>
<updated>2015-08-15T22:03:51+01:00</updated>
<published>2015-08-15T22:03:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12658&amp;p=137468#p137468</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12658&amp;p=137468#p137468"/>
<title type="html"><![CDATA[Re: STM32F0 Discovery - problem z USART2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12658&amp;p=137468#p137468"><![CDATA[
<div class="quotetitle">Nefarious19 napisał(a):</div><div class="quotecontent"><br />[syntax=c]{<br />uruchom_zewnetrzny_kwarc();<br /><br />RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC,ENABLE);<br />RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);<br />RCC_AHBPeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);[/syntax]<br /><br />Korzystam z bibliotek std jak narazie, ale mam zamiar jechać później po rejestrach....<br /></div><br /><br />Zwróć uwagę na uruchamianie RCC dla USART2 , chyba argument nie do tej funkcji.<br />Czy dalej w kodzie jest oki, nie sprawdzałem.<br /><br />a jeśli chodzi o pisanie później na rejestrach hmm najpierw zapanuj nad kodowanie przy pomocy bibliotek bo z rejestrami zaginiesz:) ... a może nie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=447">xbary</a> — 15 sie 2015, o 22:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2015-08-15T20:36:13+01:00</updated>
<published>2015-08-15T20:36:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12658&amp;p=137464#p137464</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12658&amp;p=137464#p137464"/>
<title type="html"><![CDATA[STM32F0 Discovery - problem z USART2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12658&amp;p=137464#p137464"><![CDATA[
Witam<br /><br />Chciałem wysłać kilka bajtów do terminala, wklepałem kod do AC6 i niestety nic, cisza. Na oscylu nawet nie widać żeby pin PA2 coś toglował. Nie mam już siły. Wlutowałem w płytke kwarc 16MHz, uruchomiłem zegar przez HSEi PLL na 48Mhz, na peryferia idzie 24MHz. Ma ktoś jakiś pomysł?<br /><br />KOD z maina:<br /><br />[syntax=c]#include &quot;stm32f0xx.h&quot;<br />#include &quot;stm32f0_discovery.h&quot;<br />#include &quot;stm32f0xx_conf.h&quot;<br />#include &quot;system_stm32f0xx.h&quot;<br />#include &quot;stdint.h&quot;<br />#include &quot;stm32f0xx_rcc.h&quot;<br />#include &quot;stm32f0xx_gpio.h&quot;<br />#include &quot;konfiguracja_zegara.h&quot;<br /><br />uint8_t zmienna = 0;<br /><br />int main(void)<br />{<br />uruchom_zewnetrzny_kwarc();<br /><br />RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC,ENABLE);<br />RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);<br />RCC_AHBPeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);<br /><br />RCC_ClocksTypeDef RCC_CLOCKS;<br /><br />RCC_GetClocksFreq(&amp;RCC_CLOCKS);<br />uint8_t clk_sorce = RCC_GetSYSCLKSource();<br />GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_1);<br />GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_1);<br /><br /><br />GPIO_InitTypeDef Odpal_PORT_C;<br />GPIO_InitTypeDef PINY_POD_USART;<br /><br />Odpal_PORT_C.GPIO_Mode = GPIO_Mode_OUT;<br />Odpal_PORT_C.GPIO_PuPd = GPIO_PuPd_NOPULL;<br />Odpal_PORT_C.GPIO_OType = GPIO_OType_PP;<br />Odpal_PORT_C.GPIO_Speed = GPIO_Speed_50MHz;<br />Odpal_PORT_C.GPIO_Pin = GPIO_Pin_8;<br />GPIO_Init(GPIOC, &amp;Odpal_PORT_C);<br />GPIO_SetBits(GPIOC,GPIO_Pin_8);<br /><br />PINY_POD_USART.GPIO_Mode = GPIO_Mode_AF;<br />PINY_POD_USART.GPIO_PuPd = GPIO_PuPd_UP;<br />PINY_POD_USART.GPIO_OType = GPIO_OType_PP;<br />PINY_POD_USART.GPIO_Speed = GPIO_Speed_50MHz;<br />PINY_POD_USART.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;<br /><br /><br />GPIO_Init(GPIOA, &amp;PINY_POD_USART);<br /><br /><br />USART_InitTypeDef USART_InitStructure;<br /><br />USART_InitStructure.USART_BaudRate = 9600;<br />USART_InitStructure.USART_WordLength = USART_WordLength_8b;<br />    USART_InitStructure.USART_StopBits = USART_StopBits_1;<br />USART_InitStructure.USART_Parity = USART_Parity_No;<br />USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;<br />    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;<br />    USART_Init(USART2, &amp;USART_InitStructure);<br /><br />    USART_Cmd(USART2,ENABLE);<br /><br />while(1)<br />{<br />USART_SendData(USART2, 'X');<br />while ( USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET );<br />}<br />}[/syntax]<br /><br />config zegara:<br /><br />[syntax=c]#include &quot;konfiguracja_zegara.h&quot;<br />#include &quot;stm32f0xx.h&quot;<br />#include &quot;stm32f0_discovery.h&quot;<br />#include &quot;stm32f0xx_conf.h&quot;<br />#include &quot;system_stm32f0xx.h&quot;<br />#include &quot;stdint.h&quot;<br />#include &quot;stm32f0xx_rcc.h&quot;<br />#include &quot;stm32f0xx_gpio.h&quot;<br />#include &quot;stm32f0xx_usart.h&quot;<br /><br />void uruchom_zewnetrzny_kwarc( void )<br />{<br />//zresetuj ustawienia bloku oscylatora<br />RCC_DeInit();<br />//wlacz zewnetrzny kwarc<br />RCC_HSEConfig(RCC_HSE_ON);<br /><br />//deklaracja zmiennej typu ErrorStatus w celu przechowywania w niej statusu ustawienia zewnętrznego kwarca<br />ErrorStatus Err_State;<br /><br />Err_State = RCC_WaitForHSEStartUp();<br />if(Err_State == SUCCESS)<br />{<br />RCC_PREDIV1Config(RCC_PREDIV1_Div2);<br />RCC_PLLConfig(RCC_PLLSource_PREDIV1, RCC_PLLMul_12);<br />RCC_PLLCmd(ENABLE);<br />while( RCC_GetFlagStatus( RCC_FLAG_PLLRDY) == RESET );<br /><br />RCC_HCLKConfig(RCC_HCLK_Div1);<br />RCC_PCLKConfig(RCC_HCLK_Div2);<br /><br />FLASH_SetLatency(FLASH_Latency_1);<br /><br />RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);<br />}<br />else<br />{<br />while(1){}<br />}<br /><br />}[/syntax]<br /><br />Korzystam z bibliotek std jak narazie, ale mam zamiar jechać później po rejestrach....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 15 sie 2015, o 20:36</p><hr />
]]></content>
</entry>
</feed>