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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-01-30T06:52:13+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=20101&amp;mode</id>
<entry>
<author><name><![CDATA[makarpi]]></name></author>
<updated>2018-01-30T06:52:13+01:00</updated>
<published>2018-01-30T06:52:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202937#p202937</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202937#p202937"/>
<title type="html"><![CDATA[Re: [STM32][C] - DMA nie ładuje wartości do okresu timera.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202937#p202937"><![CDATA[
A czy inkrementacja adresu peryferiów nie powinna zostać wyłączona?<br /><br /> DMAInit.DMA_PeripheralInc = DMA_PeripheralInc_<span style="color: #FF0000">Enable</span>;<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=507">makarpi</a> — 30 sty 2018, o 06:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krish]]></name></author>
<updated>2018-01-29T19:39:53+01:00</updated>
<published>2018-01-29T19:39:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202901#p202901</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202901#p202901"/>
<title type="html"><![CDATA[Re: [STM32][C] - DMA nie ładuje wartości do okresu timera.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202901#p202901"><![CDATA[
w STM32F10x DMA może przesyłać dane po 8, 16 lub 32 bity.<br />Trzeba tylko nad tym zapanować.<br /><br /><br /><br />ps. przestudiuj: AN2548<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2273">krish</a> — 29 sty 2018, o 19:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SP2LUB]]></name></author>
<updated>2018-01-29T19:00:40+01:00</updated>
<published>2018-01-29T19:00:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202892#p202892</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202892#p202892"/>
<title type="html"><![CDATA[Re: [STM32][C] - DMA nie ładuje wartości do okresu timera.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202892#p202892"><![CDATA[
a bufor nie powinien być też 32 bitowy? widzę że u Ciebie jest u16 PWM_Buf[198];<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12998">SP2LUB</a> — 29 sty 2018, o 19:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[LesterNowicjusz]]></name></author>
<updated>2018-01-29T17:46:30+01:00</updated>
<published>2018-01-29T17:46:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202881#p202881</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202881#p202881"/>
<title type="html"><![CDATA[Re: [STM32][C] - DMA nie ładuje wartości do okresu timera.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202881#p202881"><![CDATA[
Niestety błąd dalej występuję. Coś czuję, że to nie jest związane z tym.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18919">LesterNowicjusz</a> — 29 sty 2018, o 17:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krish]]></name></author>
<updated>2018-01-29T17:18:25+01:00</updated>
<published>2018-01-29T17:18:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202877#p202877</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202877#p202877"/>
<title type="html"><![CDATA[Re: [STM32][C] - DMA nie ładuje wartości do okresu timera.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202877#p202877"><![CDATA[
Strzelam:<br /> DMAInit.DMA_PeripheralDataSize = DMA_PeripheralDataSize_<span style="color: #FF0000">Word</span>;<br /><br />ps. tak na &quot;oko&quot; ( nie chce mi się grzebać w dokumentacji, bo za duża) ale może Half..<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2273">krish</a> — 29 sty 2018, o 17:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[LesterNowicjusz]]></name></author>
<updated>2018-01-29T17:00:35+01:00</updated>
<published>2018-01-29T17:00:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202876#p202876</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202876#p202876"/>
<title type="html"><![CDATA[Re: [STM32][C] - DMA nie ładuje wartości do okresu timera.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202876#p202876"><![CDATA[
Tak zgadza się powinien być 32 bitowy zmieniłem to, ale nadal mam kłopot i walczę z tym<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18919">LesterNowicjusz</a> — 29 sty 2018, o 17:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krish]]></name></author>
<updated>2018-01-29T16:51:13+01:00</updated>
<published>2018-01-29T16:51:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202875#p202875</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202875#p202875"/>
<title type="html"><![CDATA[Re: [STM32][C] - DMA nie ładuje wartości do okresu timera.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202875#p202875"><![CDATA[
Nie wnikając w szczegóły w:<br /> DMAInit.DMA_PeripheralBaseAddr = <span style="color: #FF0000">(u16)TIM1_ARR_Address</span>;<br /><br />adres ARR powinien być chyba 32 bitowy? (czy się mylę?)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2273">krish</a> — 29 sty 2018, o 16:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[LesterNowicjusz]]></name></author>
<updated>2018-01-29T16:23:16+01:00</updated>
<published>2018-01-29T16:23:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202873#p202873</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202873#p202873"/>
<title type="html"><![CDATA[[STM32][C] - DMA nie ładuje wartości do okresu timera.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20101&amp;p=202873#p202873"><![CDATA[
Witam piszę aplikację obsługującą silnik krokowy. Wykorzystuje do tego PWM ( Nie pytać dlaczego, tak chciał prowadzący). Na początku robiłem to na przerwaniach, ale się nie spodobało. Miałem wykorzystać do tego DMA + PWM i ładować z DMA wartości do periodu, tak aby okres ten był zmienny. Napisałem aplikację, ale niestety nie zmienia się period jest dalej stały.  Rejestr periodu wyciągnąłem z dokumentacji i ująłem w programie ( ARR ) . Analizowałem kod i nie mogę dojść do tego co jest w kodzie nie tak. Wstawiam tu implementację kodu z samymi konfiguracjami DMA TIMERA i PWM'a z wypełnioną inkrementującymi się wartościami (okres powinien być coraz dłuższy). Z góry dziękuję za ewentualną pomoc / podpowiedź. Pozdrawiam. <br /><br />[syntax=c]#include &quot;stm32f10x.h&quot;<br />#include &quot;stm32f1xx_nucleo.h&quot;<br />#include &quot;stm32f10x.h&quot;<br /><br />int i =0;<br />u16 PWM_Buf&#91;198&#93;;<br /><br />void TIMInit(void);<br />void GPIOInit(void);<br />void DMAInit(void);<br />void PWMInit(void);<br /><br />int main(void)<br />{<br /> GPIOInit();<br /> TIMInit();<br /> DMAInit();<br /> PWMInit();<br /><br /> for(i = 0;i&lt;198;i++)<br /> {<br />  PWM_Buf&#91;i&#93; = i * 10; // &lt;-------- VALUE OF TIM PERIOD<br /> }<br /><br /><br />    while(1)<br />    {<br />    }<br />}<br />void TIMInit(void)<br />{<br /> TIM_TimeBaseInitTypeDef TIMInit;<br /><br /> RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);<br /><br />    TIMInit.TIM_Period = 1000;<br />    TIMInit.TIM_Prescaler = 64000;<br /><br />    TIMInit.TIM_ClockDivision = TIM_CKD_DIV1;<br />    TIMInit.TIM_CounterMode = TIM_CounterMode_Up;<br /><br />    TIMInit.TIM_RepetitionCounter = 200;<br /><br />    TIM_TimeBaseInit(TIM1, &amp;TIMInit);<br />}<br /><br />void GPIOInit(void)<br />{<br />  GPIO_InitTypeDef GPIOInit;<br /><br /> RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);<br /> RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);<br /><br />   GPIOInit.GPIO_Pin = GPIO_Pin_8;<br />   GPIOInit.GPIO_Mode = GPIO_Mode_AF_PP;<br />   GPIOInit.GPIO_Speed = GPIO_Speed_50MHz;<br /><br />   GPIO_Init(GPIOA, &amp;GPIOInit);<br />}<br /><br />void DMAInit(void)<br />{<br /> #define TIM1_ARR_Address 0X40012C2C<br /><br /> DMA_InitTypeDef DMAInit;<br /><br /> RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);<br /> DMA_DeInit(DMA1_Channel5);<br /> DMAInit.DMA_PeripheralBaseAddr = (u16)TIM1_ARR_Address;<br /> DMAInit.DMA_MemoryBaseAddr = (u32)PWM_Buf;<br /> DMAInit.DMA_DIR = DMA_DIR_PeripheralDST;<br /> DMAInit.DMA_BufferSize = 198;<br /> DMAInit.DMA_PeripheralInc = DMA_PeripheralInc_Enable;<br /> DMAInit.DMA_MemoryInc = DMA_MemoryInc_Enable;<br /> DMAInit.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;<br /> DMAInit.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;<br /> DMAInit.DMA_Mode = DMA_Mode_Circular;<br /> DMAInit.DMA_Priority = DMA_Priority_High;<br /> DMAInit.DMA_M2M = DMA_M2M_Disable;<br /><br /> DMA_Init(DMA1_Channel5, &amp;DMAInit);<br /><br />    DMA_Cmd(DMA1_Channel5, ENABLE);<br />}<br /><br />void PWMInit(void)<br />{<br /> TIM_OCInitTypeDef  PWMInit;<br /><br />    PWMInit.TIM_OCMode = TIM_OCMode_PWM1;<br />    PWMInit.TIM_OutputState = TIM_OutputState_Enable;<br />    PWMInit.TIM_Pulse = 500;<br />    PWMInit.TIM_OCPolarity = TIM_OCPolarity_High;<br />    TIM_OC1Init(TIM1, &amp;PWMInit);<br />    TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);<br />    TIM_ARRPreloadConfig(TIM1, ENABLE);<br />    TIM_DMACmd(TIM1, TIM_DMA_Update, ENABLE);<br />    TIM_Cmd(TIM1, ENABLE);<br />    TIM_CtrlPWMOutputs(TIM1, ENABLE);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18919">LesterNowicjusz</a> — 29 sty 2018, o 16:23</p><hr />
]]></content>
</entry>
</feed>