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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-08-07T15:43:44+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=18947&amp;mode</id>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2017-08-07T15:43:44+01:00</updated>
<published>2017-08-07T15:43:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18947&amp;p=193169#p193169</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18947&amp;p=193169#p193169"/>
<title type="html"><![CDATA[Re: [STM32F1]Pobieranie danych z żyroskopu L3GD20 używając F]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18947&amp;p=193169#p193169"><![CDATA[
nie do końca magia <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  układ po zasileniu pobiera automatycznie dane kalibracyjne - ale wypada zrobić recalibrating żeby ustabilizować <br />odczyty w miejsc uzytkowania  (choć mozna to olac i tyle)  i  usredniać wyniki pomiaru ,  wpoisanie danych odbywa się poprzez użycie odpowiedniego rejestru ,  niemniej odchylenia (piki) zawsze jakieś będą występować  -- wiec w twoim wypadku wystarczy <br />podanie wartości min i max dla której masz położenie 0,00 dla każdej osi  i odpowiednio dokonać kalibracji programu <br /><br />to wszystko <br /><br />wzór kalibracji jest w którymś dokumencie ST<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 7 sie 2017, o 15:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zynx]]></name></author>
<updated>2017-08-07T07:25:12+01:00</updated>
<published>2017-08-07T07:25:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18947&amp;p=193141#p193141</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18947&amp;p=193141#p193141"/>
<title type="html"><![CDATA[Re: [STM32F1]Pobieranie danych z żyroskopu L3GD20 używając F]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18947&amp;p=193141#p193141"><![CDATA[
Aha dzięki wielkie za informację, pierwszy raz korzystam z tego typu czujników  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Hmmm z tym wzorem i kalibracją to jakaś magia chyba jest, wszyscy go szukają a znaleźdz nie można  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" />  <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=14625">zynx</a> — 7 sie 2017, o 07:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2017-08-05T19:36:07+01:00</updated>
<published>2017-08-05T19:36:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18947&amp;p=193101#p193101</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18947&amp;p=193101#p193101"/>
<title type="html"><![CDATA[Re: [STM32F1]Pobieranie danych z żyroskopu L3GD20 używając F]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18947&amp;p=193101#p193101"><![CDATA[
wiec tak ...  <br />podczas bezruchu żyra  to normalne że otrzymujesz jakby przypadkowe wartości <br />spowodowane jest to tym ze ziemia nie pozostaje w bezruchu i zachodzące w niej  zmiany i ruchy wpływają na drobne szpilki w polu magnetycznym <br />które jest jednym z czynników potrzebnych do działania żyro , magnetometrów , i wielu innych czujników położenia ....,<br />musiałbyś sprawdzić w jakim miejscu na ziemi był układ kalibrowany i tam pojechać to uzyskasz w bezruchu  0.0.0 <br /><br />a tak trzeba zrobić kalibrację (uśrednienie parametrów położenia zerowego ) <br /><br />no ale skoro kolega robił wszystko zgodnie z notą , toteż pewnie znalazł wzór i procedurę kalibracji <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />wiec zasadniczo nic tu nie wniosłem .... <br /><br />bo bez kalibracji to ci fifo też nie pomoże<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 5 sie 2017, o 19:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zynx]]></name></author>
<updated>2017-08-05T06:27:49+01:00</updated>
<published>2017-08-05T06:27:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18947&amp;p=193066#p193066</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18947&amp;p=193066#p193066"/>
<title type="html"><![CDATA[Re: [STM32F1]Pobieranie danych z żyroskopu L3GD20 używając F]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18947&amp;p=193066#p193066"><![CDATA[
Jakieś pomysły na rozwiązanie problemu?  <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=14625">zynx</a> — 5 sie 2017, o 06:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zynx]]></name></author>
<updated>2017-08-04T11:43:46+01:00</updated>
<published>2017-08-04T11:43:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18947&amp;p=193041#p193041</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18947&amp;p=193041#p193041"/>
<title type="html"><![CDATA[[STM32F1]Pobieranie danych z żyroskopu L3GD20 używając FIFO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18947&amp;p=193041#p193041"><![CDATA[
Hej wszystkim,<br /><br />Chciałbym wyciągać dane z żyroskopu po SPI z wykorzystaniem bufora FIFO. Komunikacja z żyroskopem jest, odczytuje poszczególne osie i poprawną wartość ID żyroskopu. Przy odczytywaniu danych bez używania bufora otrzymuje co pewien moment wartości z poza zakresu zmiennej. Po niżej zobrazowanie problemu. Ponadto kiedy żyroskop jest w bezruchu, też otrzymuje zmiany wartości poszczególnych osi. Umieszczam poniżej całą konfiguracje układu i program. Może znajdziecie babola który popełniam.  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" />  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br /><a href="https://obrazkiforum.atnel.pl/14625/ac5409b288fbd6e3666d8c3f6c0a328b.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/14625/ac5409b288fbd6e3666d8c3f6c0a328b.jpg" alt="Obrazek" /></a><br /><br />Konfiguracja SPI:<br />[syntax=c]gpio_pin_cfg(GPIOB,13,GPIO_CRx_MODE_CNF_ALT_PP_50M_value);//SCK - do L3GD20<br />gpio_pin_cfg(GPIOB,14,GPIO_CRx_MODE_CNF_IN_FLOATING_value);//MISO - z L3GD20<br />gpio_pin_cfg(GPIOB,15,GPIO_CRx_MODE_CNF_ALT_PP_50M_value);//MOSI - do L3GD20<br />gpio_pin_cfg(GPIOB,2,GPIO_CRx_MODE_CNF_OUT_PP_50M_value);//NSS programowe<br />GPIOB-&gt;ODR |= GPIO_ODR_ODR2; // wylaczeni linii CSS po inicjalizacji<br /><br />//Software slave management enabled, Internal slave select) - NSS programowe<br />//16-bit data frame format is selected for transmission/reception, Baud rate control 010: fPCLK/8 72MHz/8=8MHz,  SPI enable<br />// Master configuration, RXONLY: Receive only - full duplex (0)<br />SPI2-&gt;CR1 = SPI_CR1_SSM | SPI_CR1_SSI /*| SPI_CR1_DFF*/ | SPI_CR1_BR_2 | SPI_CR1_SPE | SPI_CR1_MSTR;[/syntax]<br /><br />Inicjalizacja żyroskopu:<br />[syntax=c]SPI_L3GD20_config();<br />dane.ID = TM_L3GD20_INT_ReadSPI(L3GD20_REG_WHO_AM_I);<br />/* Enable L3GD20 Power bit */<br />TM_L3GD20_INT_WriteSPI(L3GD20_REG_CTRL_REG1, 0xFF);<br />//TM_L3GD20_INT_WriteSPI(L3GD20_REG_CTRL_REG4, 0x10);//czulosc 500<br /><br />// FIFO Overrun interrupt on DRDY/INT2 Default value: 0. (0: Disable; 1: Enable)<br />TM_L3GD20_INT_WriteSPI(L3GD20_REG_CTRL_REG3, 0x2);[/syntax]<br /><br />Odczytanie pojedynczej osi:<br />[syntax=c]// FIFO_EN zalaczenie bufora FIFO<br />TM_L3GD20_INT_WriteSPI(L3GD20_REG_CTRL_REG5, 0x40);<br /><br />// tryb bufora FIFO 0x20 FM&#91;2:0&#93; = (0,0,1): FIFO mode<br />TM_L3GD20_INT_WriteSPI(L3GD20_REG_FIFO_CTRL_REG, 0x20);<br /><br />//FIFO Overrun interrupt on DRDY/INT2 Default value: 0. (0: Disable; 1: Enable)<br />while(!(GPIOB-&gt;IDR &amp; GPIO_IDR_IDR8));<br /><br />volatile float temp, s;<br />dane.X = TM_L3GD20_INT_ReadSPI(L3GD20_REG_OUT_X_L);<br />dane.X |= TM_L3GD20_INT_ReadSPI(L3GD20_REG_OUT_X_H) &lt;&lt; 8;<br /><br />//FM&#91;2:0&#93; = (0,0,0): Bypass mode<br />TM_L3GD20_INT_WriteSPI(L3GD20_REG_FIFO_CTRL_REG, 0x00);<br /><br />s = L3GD20_SENSITIVITY_500 * 0.001;<br />temp = (float)dane.X * s;<br />dane.X = (int16_t) temp;[/syntax]<br /><br />Funkcje realizujące wysyłanie i odbieranie danych po SPI:<br />[syntax=c]uint8_t TM_L3GD20_INT_Transfer_Byte(uint8_t val) {<br />while(!(SPI2-&gt;SR &amp; SPI_SR_TXE));<br />SPI2-&gt;DR = val;<br />while (!(SPI2-&gt;SR &amp; SPI_SR_RXNE));<br />return SPI2-&gt;DR;<br />}<br /><br />uint8_t TM_L3GD20_INT_ReadSPI(uint8_t address){<br />uint16_t d;<br />/* Send address with read command */<br />address |= 0x80;<br />/* CS low */<br />select_stateNSS(R);<br />d = TM_L3GD20_INT_Transfer_Byte(address);<br />/* Read data */<br />d = TM_L3GD20_INT_Transfer_Byte(0xff);<br />/* CS high */<br />select_stateNSS(S);<br />/* Return data */<br />return d;<br />}<br /><br />void TM_L3GD20_INT_WriteSPI(uint8_t address, uint8_t data){<br />/* CS low */<br />select_stateNSS(R);<br />/* Send address with write command */<br />TM_L3GD20_INT_Transfer_Byte(address);<br />/* Write data */<br />TM_L3GD20_INT_Transfer_Byte(data);<br />/* CS high */<br />select_stateNSS(S);<br />}[/syntax]<br /><br />I tak nadmienię, bo pewnie padnie pytanie, tak mam włączone taktowania poszczególnych portów, SPI i nie korzystam z gotowego modułu, tylko mam układ zmontowany zgodnie z dtr-ką na robocie <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" />  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />  Odczytywanie danych z żyroskopu na chwile obecną realizuje w głównej pętli programu. <br /><br />Po dodaniu konfiguracji bufora FIFIO dane zmieniają się o parę jednostek, lecz jakby zamarły w miejscu. Jestem pewien, ze coś pomijam w konfiguracji. Po niżej zobrazowanie problemu.<br /><br /><a href="https://obrazkiforum.atnel.pl/14625/57be50a7c5580b21d541a32d889a5c22.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/14625/57be50a7c5580b21d541a32d889a5c22.jpg" alt="Obrazek" /></a><br /><br />Jeżeli potrzeba jeszcze jakiś informacji to piszcie. Dzięki z góry za pomoc.  <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=14625">zynx</a> — 4 sie 2017, o 11:43</p><hr />
]]></content>
</entry>
</feed>