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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-04-09T21:52:41+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=20533&amp;mode</id>
<entry>
<author><name><![CDATA[lukas12]]></name></author>
<updated>2018-04-09T21:52:41+01:00</updated>
<published>2018-04-09T21:52:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206679#p206679</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206679#p206679"/>
<title type="html"><![CDATA[Re: STM32 WS2812 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206679#p206679"><![CDATA[
Po długim czasie zapoznawania się doszedłem, że dalej miałem GPIO źle ustawione, ponieważ ustawiłem wszystkie sygnału jako wyjście, a nie jako funkcja alternatywna.<br />Teraz mam:<br />[syntax=c]//pinC 8 wyjscie<br />            GPIOC-&gt;MODER |= GPIO_MODER_MODER0_0;<br /><br />            //pin wejścia timera(PA6 ??) podciąganie do dołu<br />            GPIOA-&gt;ODR &amp;= ~GPIO_ODR_6;<br /><br />            //PB1 alternatywne(Timer3_CH4)<br />            GPIOB-&gt;MODER |= GPIO_MODER_MODER1_1;<br /><br />            //PA3 alternatywne(Timer2_CH4)<br />            GPIOA-&gt;MODER |= GPIO_MODER_MODER3_1;<br /><br />            //PB13 alternatywne(SPI2_SCK)<br />            GPIOB-&gt;MODER |= GPIO_MODER_MODER13_1;<br /><br />            //PB14 wejcie(SPI2_MISO)<br /><br />            GPIOB-&gt;ODR &amp;= ~GPIO_ODR_14;<br /><br />            //PB15 alternatywne(SPI2_MOSI)<br />            GPIOB-&gt;MODER |= GPIO_MODER_MODER15_1;[/syntax]<br /><br />Teraz mam na wyjściu SCK sygnał o długości 1 bita 2000 ns.<br />Jednak nie wiem jak dalej mają działać te timery ?<br /><br /><br />Do tego poradnika <!-- m --><a class="postlink" href="https://ep.com.pl/files/11801.pdf" >https://ep.com.pl/files/11801.pdf</a><!-- m --> niestety nie ma plików na ftp <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />Próbowałem przekopiować sam kody jednak w linijce<br />{&amp;RCC-&gt;AHBENR, RCC_AHBENR_RSTVAL | RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN| RCC_AHBENR_GPIOCEN | RCC_AHBENR_DMAEN},<br />nie mam w bibliotece elementu RCC_AHBENR_RSTVAL, na podstawie dokumentacji także nie doszedłem co to jest.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=513">lukas12</a> — 9 kwi 2018, o 21:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ps19]]></name></author>
<updated>2018-04-03T10:38:03+01:00</updated>
<published>2018-04-03T10:38:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206424#p206424</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206424#p206424"/>
<title type="html"><![CDATA[Re: STM32 WS2812 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206424#p206424"><![CDATA[
<div class="quotetitle">lukas12 napisał(a):</div><div class="quotecontent"><br />Dzięki za poradę niestety nic nie pomogło, czy dam przykładowo:<br />GPIOC-&gt;MODER |=  (1 &lt;&lt; 8*2);<br />czy GPIOC-&gt;MODER |= 1 &lt;&lt; (8 &lt;&lt; 1);<br />efekt jest dalej ten sam. Z Reference Manual korzystam.<br />Zmieniłem kod konfiguracji GPIO na twój niestety dalej brak sygnałów na SCK <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /></div><br /><br /><br />Nie działa bo masz pewnie w dalszej części coś źle poustawiane, do ustawienia portów w F0 nie są potrzebne żadne dodatkowe funkcje - w F1 funkcja przydaje się bo tam jest to kilka % bardziej zawiłe  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Tutaj masz od A do Z co i jak <!-- m --><a class="postlink" href="https://ep.com.pl/files/11801.pdf" >https://ep.com.pl/files/11801.pdf</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=230">ps19</a> — 3 kwi 2018, o 10:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-04-03T08:37:54+01:00</updated>
<published>2018-04-03T08:37:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206420#p206420</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206420#p206420"/>
<title type="html"><![CDATA[Re: STM32 WS2812 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206420#p206420"><![CDATA[
<div class="quotetitle">lukas12 napisał(a):</div><div class="quotecontent"><br />Dzięki za poradę niestety nic nie pomogło, czy dam przykładowo:<br />GPIOC-&gt;MODER |=  (1 &lt;&lt; 8*2);<br />czy GPIOC-&gt;MODER |= 1 &lt;&lt; (8 &lt;&lt; 1);<br />efekt jest dalej ten sam. Z Reference Manual korzystam.<br />Zmieniłem kod konfiguracji GPIO na twój niestety dalej brak sygnałów na SCK <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /></div><br /><br />Jak widzę powyżej to już jest loteria, strzelanie z działa we wszystkie strony, a nuż się trafi.<br />Stosujesz jakieś &quot;podwójne&quot; przesunięcia bitowe, ciężko cokolwiek z tego zrozumieć i pewnie dlatego nie możesz trafić, żeby zadziałało <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Ustawianie portów to jak wiadomo podstawa podstaw. Należy na początek przygotować sobie funkcje do modyfikacji parametrów.<br />Najlepiej zacznij od poradnika:<br /><!-- m --><a class="postlink" href="https://www.elektroda.pl/rtvforum/topic3111562.html" >https://www.elektroda.pl/rtvforum/topic3111562.html</a><!-- m --><br /><br />W jednym z dodatków tego poradnika są przygotowane odpowiednie funkcje do modyfikacji portów.<br />Zrób sobie bibliotekę, pobaw się diodami:<br />Dla stm32f103 mam takie (zaczerpnięte z tego poradnika) funkcje:<br /><br />[syntax=c]#ifndef LIB_SW_GPIO_GPIO_H_<br />#define LIB_SW_GPIO_GPIO_H_<br /><br />#include &quot;stm32f1xx.h&quot;<br /><br />#define PORTA GPIOA<br />#define PORTB GPIOB<br />#define PORTC GPIOC<br />#define PORTD GPIOD<br />#define PORTE GPIOE<br />#define PORTF GPIOF<br />#define PORTG GPIOG<br />#define PORTH GPIOH<br /><br />#defineRTC_PORTA_ENABLED//Ustawione w HALu<br />#defineRTC_PORTB_ENABLED// Włączone w irmp<br />#defineRTC_PORTC_ENABLED<br />//#defineRTC_PORTD_ENABLED<br />//#defineRTC_PORTE_ENABLED<br />//#defineRTC_PORTF_ENABLED<br />//#defineRTC_PORTG_ENABLED<br /><br /><br />typedef enum {<br />/* Push-Pull */<br />gpio_mode_output_PP_2MHz = 2,<br />gpio_mode_output_PP_10MHz = 1,<br />gpio_mode_output_PP_50MHz = 3,<br />/* Open-Drain */<br />gpio_mode_output_OD_2MHz = 6,<br />gpio_mode_output_OD_10MHz = 5,<br />gpio_mode_output_OD_50MHz = 7,<br />/* Push-Pull */<br />gpio_mode_alternate_PP_2MHz = 10,<br />gpio_mode_alternate_PP_10MHz = 9,<br />gpio_mode_alternate_PP_50MHz = 11,<br />/* Open-Drain */<br />gpio_mode_alternate_OD_2MHz = 14,<br />gpio_mode_alternate_OD_10MHz = 13,<br />gpio_mode_alternate_OD_50MHz = 15,<br />/* Analog input (ADC) */<br />gpio_mode_input_analog = 0,<br />/* Floating digital input. */<br />gpio_mode_input_floating = 4,<br />/* Digital input with pull-up/down (depending on the ODR reg.). */<br />gpio_mode_input_pull = 8<br />} T_GPIO_MODE;<br /><br />typedef enum {<br />PA0 = 0x00000001,<br />PA1 = 0x00000002,<br />PA2 = 0x00000004,<br />PA3 = 0x00000008,<br />PA4 = 0x00000010,<br />PA5 = 0x00000020,<br />PA6 = 0x00000040,<br />PA7 = 0x00000080,<br />PA8 = 0x00000100,<br />PA9 = 0x00000200,<br />PA10 = 0x00000400,<br />PA11 = 0x00000800,<br />PA12 = 0x00001000,<br />PA13 = 0x00002000,<br />PA14 = 0x00004000,<br />PA15 = 0x00008000,<br /><br />PB0 = 0x00000001,<br />PB1 = 0x00000002,<br />PB2 = 0x00000004,<br />PB3 = 0x00000008,<br />PB4 = 0x00000010,<br />PB5 = 0x00000020,<br />PB6 = 0x00000040,<br />PB7 = 0x00000080,<br />PB8 = 0x00000100,<br />PB9 = 0x00000200,<br />PB10 = 0x00000400,<br />PB11 = 0x00000800,<br />PB12 = 0x00001000,<br />PB13 = 0x00002000,<br />PB14 = 0x00004000,<br />PB15 = 0x00008000,<br /><br />PC0 = 0x00000001,<br />PC1 = 0x00000002,<br />PC2 = 0x00000004,<br />PC3 = 0x00000008,<br />PC4 = 0x00000010,<br />PC5 = 0x00000020,<br />PC6 = 0x00000040,<br />PC7 = 0x00000080,<br />PC8 = 0x00000100,<br />PC9 = 0x00000200,<br />PC10 = 0x00000400,<br />PC11 = 0x00000800,<br />PC12 = 0x00001000,<br />PC13 = 0x00002000,<br />PC14 = 0x00004000,<br />PC15 = 0x00008000,<br /><br />} T_GPIO_PIN;<br /><br />static inline uint8_t gpio_pin_READ( GPIO_TypeDef * const port, T_GPIO_PIN pin ) {<br />if ( !(port-&gt;IDR &amp; pin) ) return 1;<br />else return 0;<br />}<br /><br /><br />extern void gpio_pin_cfg( GPIO_TypeDef * const port, T_GPIO_PIN pin, T_GPIO_MODE mode );<br /><br />extern void gpio_pin_LO( GPIO_TypeDef * const port, T_GPIO_PIN pin );<br />extern void gpio_pin_HI( GPIO_TypeDef * const port, T_GPIO_PIN pin );<br />extern void gpio_pin_XOR( GPIO_TypeDef * const port, T_GPIO_PIN pin );<br />extern void RCC_gpio_init( void );<br /><br /><br />#endif /* LIB_SW_GPIO_GPIO_H_ */[/syntax]<br /><br />[syntax=c]#include &quot;gpio.h&quot;<br /><br />void gpio_pin_cfg(GPIO_TypeDef * const port, T_GPIO_PIN pin, T_GPIO_MODE mode) {<br />pin = __builtin_ctz(pin) * 4;<br />uint32_t volatile * cr_reg;<br />uint32_t cr_val;<br />cr_reg = &amp;port-&gt;CRL;<br />if (pin &gt; 28) {<br />pin -= 32;<br />cr_reg = &amp;port-&gt;CRH;<br />}<br />cr_val = *cr_reg;<br />cr_val &amp;= ~((uint32_t) (0x0f &lt;&lt; pin));<br />cr_val |= (uint32_t) (mode &lt;&lt; pin);<br />*cr_reg = cr_val;<br />}<br /><br />#ifdef NUCLEO_STM32F303RE<br />void RCC_gpio_init(void) {<br />// Sprawdź plik nagłówkowy, by odblokowac porty.<br /><br />#ifdef RTC_PORTA_ENABLED<br />RCC-&gt;AHBENR |= RCC_AHBENR_GPIOAEN;<br />#endif<br />#ifdef RTC_PORTB_ENABLED<br />RCC-&gt;AHBENR |= RCC_AHBENR_GPIOBEN;<br />#endif<br />#ifdef RTC_PORTC_ENABLED<br />RCC-&gt;AHBENR |= RCC_AHBENR_GPIOCEN;<br />#endif<br />#ifdef RTC_PORTD_ENABLED<br />RCC-&gt;AHBENR |= RCC_AHBENR_GPIODEN;<br />#endif<br />#ifdef RTC_PORTE_ENABLED<br />RCC-&gt;AHBENR |= RCC_AHBENR_GPIOEEN;<br />#endif<br />#ifdef RTC_PORTF_ENABLED<br />RCC-&gt;AHBENR |= RCC_AHBENR_GPIOFEN;<br />#endif<br />#ifdef RTC_PORTG_ENABLED<br />RCC-&gt;AHBENR |= RCC_AHBENR_GPIOGEN;<br />#endif<br />#ifdef RTC_PORTH_ENABLED<br />RCC-&gt;AHBENR |= RCC_AHBENR_GPIOHEN;<br />#endif<br />}<br />inline void gpio_pin_LO(GPIO_TypeDef * const port, T_GPIO_PIN pin) {<br />port-&gt;BRR = pin;<br />}<br />#endif<br /><br />#ifdef KA_NUCLEO<br />void RCC_gpio_init( void ) {<br />// Sprawdź plik nagłówkowy, by odblokowac porty.<br /><br />#ifdef RTC_PORTA_ENABLED<br />RCC-&gt;AHB1ENR |= RCC_AHB1ENR_GPIOAEN;<br />#endif<br />#ifdef RTC_PORTB_ENABLED<br />RCC-&gt;AHB1ENR |= RCC_AHB1ENR_GPIOBEN;<br />#endif<br />#ifdef RTC_PORTC_ENABLED<br />RCC-&gt;AHB1ENR |= RCC_AHB1ENR_GPIOCEN;<br />#endif<br />#ifdef RTC_PORTD_ENABLED<br />RCC-&gt;AHB1ENR |= RCC_AHB1ENR_GPIODEN;<br />#endif<br />#ifdef RTC_PORTE_ENABLED<br />RCC-&gt;AHB1ENR |= RCC_AHB1ENR_GPIOEEN;<br />#endif<br />#ifdef RTC_PORTF_ENABLED<br />RCC-&gt;AHB1ENR |= RCC_AHB1ENR_GPIOFEN;<br />#endif<br />#ifdef RTC_PORTG_ENABLED<br />RCC-&gt;AHB1ENR |= RCC_AHB1ENR_GPIOGEN;<br />#endif<br />#ifdef RTC_PORTH_ENABLED<br />RCC-&gt;AHB1ENR |= RCC_AHB1ENR_GPIOHEN;<br />#endif<br />}<br />inline void gpio_pin_LO( GPIO_TypeDef * const port, T_GPIO_PIN pin ) {<br />port-&gt;BSRR = pin&lt;&lt;16;<br />}<br />#endif<br /><br />#ifdef STM32F103C8Tx_mini<br /><br />void RCC_gpio_init(void) {<br />#ifdef RTC_PORTA_ENABLED<br />RCC-&gt;APB2ENR |= RCC_APB2ENR_IOPAEN;<br />#endif<br />#ifdef RTC_PORTB_ENABLED<br />RCC-&gt;APB2ENR |= RCC_APB2ENR_IOPBEN;<br />#endif<br />#ifdef RTC_PORTC_ENABLED<br />RCC-&gt;APB2ENR |= RCC_APB2ENR_IOPCEN;<br />#endif<br />}<br /><br />#endif<br /><br /><br />inline void gpio_pin_HI(GPIO_TypeDef * const port, T_GPIO_PIN pin) {<br />port-&gt;BSRR = pin;<br />}<br />inline void gpio_pin_XOR(GPIO_TypeDef * const port, T_GPIO_PIN pin) {<br />port-&gt;ODR ^= pin;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 3 kwi 2018, o 08:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas12]]></name></author>
<updated>2018-04-02T15:49:26+01:00</updated>
<published>2018-04-02T15:49:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206406#p206406</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206406#p206406"/>
<title type="html"><![CDATA[Re: STM32 WS2812 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206406#p206406"><![CDATA[
Dzięki za poradę niestety nic nie pomogło, czy dam przykładowo:<br />GPIOC-&gt;MODER |=  (1 &lt;&lt; 8*2);<br />czy GPIOC-&gt;MODER |= 1 &lt;&lt; (8 &lt;&lt; 1);<br />efekt jest dalej ten sam. Z Reference Manual korzystam.<br />Zmieniłem kod konfiguracji GPIO na twój niestety dalej brak sygnałów na SCK <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=513">lukas12</a> — 2 kwi 2018, o 15:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ps19]]></name></author>
<updated>2018-04-02T12:29:00+01:00</updated>
<published>2018-04-02T12:29:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206398#p206398</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206398#p206398"/>
<title type="html"><![CDATA[Re: STM32 WS2812 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206398#p206398"><![CDATA[
Tutaj miałeś namiesane, dalej jeszcze nie sprawdzałem. Dodałem kilka przydatnych definicji.<br />Przeczytaj str 158 <!-- m --><a class="postlink" href="http://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf" >http://www.st.com/content/ccc/resource/ ... 031936.pdf</a><!-- m --><br /><br />To masz napisane dlaczego dla m.in MODER masz numer portu*2 (Bits 2y+1:2y)<br /><br />[syntax=c]//http://www.st.com/content/ccc/resource/technical/document/reference_manual/c2/f8/8a/f2/18/e6/43/96/DM00031936.pdf/files/DM00031936.pdf/jcr:content/translations/en.DM00031936.pdf<br />#define GPIO_MODER_INPUT 0 //str 158 reference manual<br />#define GPIO_MODER_OUTPUT 1 //<br />#define GPIO_MODER_ALTERNATE 2<br />#define GPIO_MODER_ANALOG 3<br /><br />#define GPIO_TYPER_PUSHPULL 0 //Nie mnożyć razy 2 !!!<br />#define GPIO_TYPER_OPEN_DRAIN 1<br /><br />#define GPIO_OSPEEDR_LOW 0<br />#define GPIO_OSPEEDR_MEDIUM 1<br />#define GPIO_OSPEEDR_HIGH 3<br /><br />#define GPIO_PIN_PULLUP 1// (binarnie (01) ;)<br />#define GPIO_PIN_PULLDOWN 2 //(binarnie 10)<br /><br />  GPIOC-&gt;MODER |=  (1 &lt;&lt; 8*2);          //pin 8 wyjscie<br /> <br />        //pin wejścia timera(PA6 ??) podciąganie do dołu<br />        GPIOA-&gt;ODR &amp;= ~(1&lt;&lt;6);<br />        GPIOA-&gt;PUPDR |= (GPIO_PIN_PULLDOWN &lt;&lt; 6*2);<br /> <br />        //PB1 wyjscie(Timer3_CH4)<br />        GPIOB-&gt;MODER |= (1 &lt;&lt; 1*2);<br /> <br />        //PA3 wyjscie(Timer2_CH4)<br />        GPIOA-&gt;MODER |= (1 &lt;&lt; 3*2);<br /> <br />        //PB13 wyjscie(SPI2_SCK)<br />        GPIOB-&gt;MODER |=  (1 &lt;&lt; 13*2);<br /> <br />        //PB14 wyjscie(SPI2_MISO)<br />        GPIOB-&gt;MODER |= (1 &lt;&lt; 14*2);<br />        GPIOB-&gt;PUPDR |= (GPIO_PIN_PULLDOWN &lt;&lt; 14*2);<br />        GPIOB-&gt;ODR &amp;= ~(1&lt;&lt;14);<br /> <br />        //PB15 wyjscie(SPI2_MOSI)<br />        GPIOB-&gt;MODER |= (1 &lt;&lt; 15*2);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=230">ps19</a> — 2 kwi 2018, o 12:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas12]]></name></author>
<updated>2018-04-01T22:26:53+01:00</updated>
<published>2018-04-01T22:26:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206383#p206383</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206383#p206383"/>
<title type="html"><![CDATA[Re: STM32 WS2812 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206383#p206383"><![CDATA[
Postanowiłem wykorzystać STM32F072 oraz dopasować kod odpowiednio z elektrody, niestety na żadnym z wyjść nic się nie generuje <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />[syntax=c]#include &quot;stm32f0xx.h&quot;<br />#include &quot;stm32f0xx_nucleo.h&quot;<br /><br />#define LED_NO 10<br />#define SHIFT_SPEED200<br /><br />const uint8_t led_buffer&#91;LED_NO * 3 * 2&#93; = {<br /><br />0x00, 0x20, 0x00, 0x20, 0x0, 0x0, 0x0, 0x0, 0x20, 0x20, 0x05, 0x05, 0x05, 0x20,<br />0x05, 0x05, 0x05, 0x20, 0x08, 0x05, 0x01, 0x05, 0x08, 0x01, 0x01, 0x0c,<br />0x06, 0x02, 0x0b, 0x07,<br /><br />0x03, 0x0a, 0x08, 0x04, 0x09, 0x09, 0x05, 0x08, 0x0a, 0x06, 0x07, 0x0b,<br />0x07, 0x06, 0x0c, 0x08, 0x05, 0x01, 0x09, 0x01, 0x02, 0x0a, 0x03, 0x03,<br />0x0b, 0x02, 0x04, 0x0c, 0x04, 0x05 };<br /><br />int main(void) {<br /><br />uint16_t counter = SHIFT_SPEED;<br />uint8_t index = 0;//indeks pierwszego elementu do przetransferowania<br /><br />RCC-&gt;AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOCEN;//wlaczenie zegara portu A B C<br /><br />RCC-&gt;APB1ENR |= RCC_APB1ENR_TIM3EN | RCC_APB1ENR_TIM2EN;//wlaczenie zegara dla timera 3 i 2<br /><br />GPIOC-&gt;MODER |= 1 &lt;&lt; (8 &lt;&lt; 1);//pin 8 wyjscie<br /><br />//pin wejścia timera(PA6 ??) podciąganie do dołu<br />GPIOA-&gt;ODR &amp;= ~GPIO_ODR_6;<br /><br />//PB1 wyjscie(Timer3_CH4)<br />GPIOB-&gt;MODER |= 1 &lt;&lt; (1 &lt;&lt; 1);<br /><br />//PA3 wyjscie(Timer2_CH4)<br />GPIOA-&gt;MODER |= 1 &lt;&lt; (3 &lt;&lt; 1);<br /><br />//PB13 wyjscie(SPI2_SCK)<br />GPIOB-&gt;MODER |= 1 &lt;&lt; (13 &lt;&lt; 1);<br /><br />//PB14 wyjscie(SPI2_MISO)<br />GPIOB-&gt;MODER |= 1 &lt;&lt; (14 &lt;&lt; 1);<br />GPIOB-&gt;ODR &amp;= ~GPIO_ODR_14;<br /><br />//PB15 wyjscie(SPI2_MOSI)<br />GPIOB-&gt;MODER |= 1 &lt;&lt; (15 &lt;&lt; 1);<br /><br />// TIM3 jest masterem dla TIM2<br />TIM3-&gt;CR1 = 0;<br />//CNT_EN jako TRGO<br />TIM3-&gt;CR2 = TIM_CR2_MMS_0;<br />//Trigger mode, wyzwalanie przez T1FP1<br />TIM3-&gt;SMCR =<br />TIM_SMCR_TS_0 | TIM_SMCR_TS_2 | TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1;<br />//Włączenie synchronizacji z timerem podległym<br />TIM3-&gt;SMCR |= TIM_SMCR_MSM;<br />TIM3-&gt;PSC = 17;//jeden tick==375ns<br />TIM3-&gt;ARR = 1;<br />TIM3-&gt;CCR4 = 0;<br />//Kanał 1 jest wejściem<br />TIM3-&gt;CCMR1 = TIM_CCMR1_CC1S_0;<br />//PWM 1 na kanale 4<br />TIM3-&gt;CCMR2 = TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4M_1;<br />//Aktywowanie wejścia (kanał 1) i wyjścia (kanał 4)<br />TIM3-&gt;CCER = TIM_CCER_CC1E | TIM_CCER_CC4E;<br />//One pulse mode, downcounting<br />TIM3-&gt;CR1 = TIM_CR1_OPM | TIM_CR1_DIR;<br /><br />//timer 2<br />TIM2-&gt;CR1 = 0;<br />//Trigger mode z wyzwalaniem przez ITR2 (TIM3)<br />TIM2-&gt;SMCR = TIM_SMCR_TS_1;<br />TIM2-&gt;SMCR |= TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1;<br />//jeden tick timera 375ns<br />TIM2-&gt;PSC = 17;<br />TIM2-&gt;ARR = 2;<br />TIM2-&gt;CCR4 = 1;<br />//PWM 1 na kanale 4<br />TIM2-&gt;CCMR2 = TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4M_1;<br />//Aktywowanie wyjścia kanału 4<br />TIM2-&gt;CCER = TIM_CCER_CC4E;<br />//One pulse mode, downcounting<br />TIM2-&gt;CR1 = TIM_CR1_OPM | TIM_CR1_DIR;<br /><br />//DMA dla TX SPI2<br />RCC-&gt;AHBENR |= RCC_AHBENR_DMA1EN;<br />DMA1_Channel5-&gt;CCR = 0;<br />DMA1_Channel5-&gt;CNDTR = LED_NO * 3;<br />DMA1_Channel5-&gt;CPAR = (uint32_t) &amp;SPI2-&gt;DR;<br />DMA1_Channel5-&gt;CMAR = (uint32_t) led_buffer;<br />DMA1_Channel5-&gt;CCR = DMA_CCR_DIR | DMA_CCR_MINC | DMA_CCR_EN;<br />//skasowanie flagi transmision complete<br />DMA1-&gt;IFCR = DMA_IFCR_CTCIF5;<br /><br />RCC-&gt;APB1ENR |= RCC_APB1ENR_SPI2EN;<br />//preskaler 32: 812.5kHz, próbkowanie na drugim zboczu<br />SPI2-&gt;CR1 = SPI_CR1_MSTR | SPI_CR1_BR_2 | SPI_CR1_CPHA;<br />SPI2-&gt;CR2 = SPI_CR2_SSOE;<br />SPI2-&gt;CR1 |= SPI_CR1_SPE;<br /><br />volatile uint32_t delay;<br /><br />while (1) {<br />SPI2-&gt;CR2 |= SPI_CR2_TXDMAEN;<br /><br />//czekaj na przetransferowanie wszystkich danych...<br />while (!(DMA1-&gt;ISR &amp; DMA_ISR_TCIF5))<br />;<br />//...skasuj flagę transmision complete...<br />DMA1-&gt;IFCR = DMA_IFCR_CTCIF5;<br />//...i wyłącz generowanie żądań DMA od SPI<br />SPI2-&gt;CR2 &amp;= ~SPI_CR2_TXDMAEN;<br /><br />//przygotuj DMA do następnej transmisji<br />DMA1_Channel5-&gt;CCR &amp;= ~DMA_CCR_EN;<br />DMA1_Channel5-&gt;CNDTR = LED_NO * 3;<br />DMA1_Channel5-&gt;CMAR = (uint32_t) &amp;led_buffer&#91;index&#93;;<br />DMA1_Channel5-&gt;CCR |= DMA_CCR_EN;<br /><br />//czekaj na opróżnienie rejestru DR<br />while (!(SPI2-&gt;SR &amp; SPI_SR_TXE))<br />;<br />//czekaj na zakończenie transmisji przez SPI<br />while ((SPI2-&gt;SR &amp; SPI_SR_BSY))<br />;<br /><br />//poczekaj na reset ledów ws2812<br />//DWT_Delay_us(50);<br />for (delay = 34; delay; delay--) {<br />};<br /><br />//prostacka animacja<br />if (!--counter) {<br />if (index &lt; ((LED_NO - 1) * 3))<br />index += 3;<br />else<br />index = 0;<br /><br />counter = SHIFT_SPEED;<br />}<br />//GPIOC-&gt;ODR |= GPIO_ODR_8;<br />//for(delay = 100000; delay; delay--){};<br />//GPIOC-&gt;ODR &amp;= ~GPIO_ODR_8;<br />//for(delay = 100000; delay; delay--){};<br />} /* while(1) */<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=513">lukas12</a> — 1 kwi 2018, o 22:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dario]]></name></author>
<updated>2018-03-31T20:43:24+01:00</updated>
<published>2018-03-31T20:43:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206362#p206362</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206362#p206362"/>
<title type="html"><![CDATA[Re: STM32 WS2812 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206362#p206362"><![CDATA[
<!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic18998.html#p193413" >topic18998.html#p193413</a><!-- l --><br />W tym miejscu znajdziesz dokumentację którą ściąga STM32Cube w czasie kompilacji Może w niej znajdziesz to czego szukasz. Polecam jeszcze kurs na FORBOT odnośnie STM32.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5438">dario</a> — 31 mar 2018, o 20:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-03-31T20:01:09+01:00</updated>
<published>2018-03-31T20:01:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206359#p206359</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206359#p206359"/>
<title type="html"><![CDATA[Re: STM32 WS2812 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206359#p206359"><![CDATA[
<!-- m --><a class="postlink" href="https://www.elektroda.pl/rtvforum/viewtopic.php?t=3427667&amp;highlight=" >https://www.elektroda.pl/rtvforum/viewt ... highlight=</a><!-- m --><br />Znajdziesz kompletne, nieblokujące sterowanie wykorzystujące SPI DMA oraz  zewnętrzne bramki nand, które będą służyły m.in. jako dopasowanie poziomu napięć.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 31 mar 2018, o 20:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krish]]></name></author>
<updated>2018-03-31T17:24:58+01:00</updated>
<published>2018-03-31T17:24:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206348#p206348</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206348#p206348"/>
<title type="html"><![CDATA[Re: STM32 WS2812 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206348#p206348"><![CDATA[
W EP może coś znajdziesz:<br /><a href="https://ep.com.pl/artykuly/9736-_bity_jak_najprosciej_cz_STMF_plytka_eksperymentalna_z_mikrokontrolerem_STMFF.html"  class="postlink">https://ep.com.pl/artykuly/9736-_bity_jak_najprosciej_cz_STMF_plytka_eksperymentalna_z_mikrokontrolerem_STMFF.html</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2273">krish</a> — 31 mar 2018, o 17:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[lukas12]]></name></author>
<updated>2018-03-31T16:58:15+01:00</updated>
<published>2018-03-31T16:58:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206345#p206345</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206345#p206345"/>
<title type="html"><![CDATA[STM32 WS2812 Pomoc]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20533&amp;p=206345#p206345"><![CDATA[
Witam, od dłuższego czasu próbuje bezskutecznie sterować diodami WS2812, przykłady na AVR zawszę sięgają ze wstawek Asemblera.<br />Posiadam STM32F070, moim problemem jest to że potrzebuję pomocy jak za pośrednictwem DMA sterować wyjściem na pinie. Przy pomiarze ADC użycie DMA jest proste, jednak jak to zrobić żebym miał na wyjściu przebiegi o długości 400 ns i 800 ns ?<br />Po skorzystaniu z biblioteki z <!-- m --><a class="postlink" href="http://www.martinhubacek.cz/arm/improved-stm32-ws2812b-library" >http://www.martinhubacek.cz/arm/improve ... 2b-library</a><!-- m --> udało mi się na taśmie zapalić jedną diodę. Jednak implementacja do zapalenia całości jest zbyt trudna.<br />Znalazłem jeszcze sposób z <!-- m --><a class="postlink" href="https://www.bitcraze.io/2014/04/neopixel-driver-for-the-crazyflies-stm32/" >https://www.bitcraze.io/2014/04/neopixe ... ies-stm32/</a><!-- m --> - jednak bardzo trudno jest zaimplementować do aktualnej biblioteki HAL.<br /><br />Czy ktoś może przerabiał temat i byłby w stanie mi w jakikolwiek sposób pomóc ?<br />Z góry dziękuję.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=513">lukas12</a> — 31 mar 2018, o 16:58</p><hr />
]]></content>
</entry>
</feed>