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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2020-10-27T17:32:26+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=23402&amp;mode</id>
<entry>
<author><name><![CDATA[amilo_pa]]></name></author>
<updated>2020-10-27T17:32:26+01:00</updated>
<published>2020-10-27T17:32:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23402&amp;p=229571#p229571</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23402&amp;p=229571#p229571"/>
<title type="html"><![CDATA[Re: Wskaźnikowa incepcja (do kwadratu)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23402&amp;p=229571#p229571"><![CDATA[
Rozwiązaniem problemu okazało się brak kodu odpowiedzialnego za pobranie pierwszego pakietu danych w funkcji<br /><br />[syntax=c]void SPI_ReceiveData (uint8_t address, uint8_t *Data, uint8_t size)             //Receiving a few data from external device<br />{<br />        SELECT();<br /> <br />        while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);<br />        SPI_I2S_SendData(SPI1, address);<br /> <br />        for (uint8_t i = 0; i &lt; size; i++)<br />        {<br />                while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);<br />                SPI_I2S_SendData(SPI1, 0);<br />                while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);<br />                Data&#91;i&#93; = SPI_I2S_ReceiveData(SPI1);<br />        }<br /> <br />        DESELECT();<br />}[/syntax]<br /><br />A tak powinna wyglądać:<br /><br />[syntax=c]void SPI_ReceiveData (uint8_t address, uint8_t *Data, uint8_t size)  //Receiving a few data from external device<br />{<br />SELECT();<br /><br />while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);<br />SPI_I2S_SendData(SPI1, address);<br /><br />/********************************************/<br />/*                     brakujący kod                                   */<br />/********************************************/<br />while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);<br />SPI_I2S_ReceiveData(SPI1);<br />/********************************************/<br /><br />for (uint8_t i = 0; i &lt; size; i++)<br />{<br />while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);<br />SPI_I2S_SendData(SPI1, 0);<br />while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);<br />Data&#91;i&#93; = SPI_I2S_ReceiveData(SPI1);<br />}<br /><br />DESELECT();<br />}[/syntax]<br /><br />czyli funkcja <em>SPI_ReceiveData</em> do pierwszego elementu tablicy były pobierane dane z chwili w której był wysyłany adres od którego chcemy czytać rejestry czujnika<br /><br /><a href="https://obrazkiforum.atnel.pl/3824/ecd19c7726e001fbeee72eeb8696df75.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/3824/ecd19c7726e001fbeee72eeb8696df75.png" alt="Obrazek" /></a><a href="https://obrazkiforum.atnel.pl/3824/6e3beefdea753adaab271e5adbe50e46.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/3824/6e3beefdea753adaab271e5adbe50e46.png" alt="Obrazek" /></a><br /><br />a tak wyglądają dane po dodaniou brakującego kodu:<br /><a href="https://obrazkiforum.atnel.pl/3824/71ee020a74c36a1babd4064cc0d34c02.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/3824/71ee020a74c36a1babd4064cc0d34c02.png" alt="Obrazek" /></a><a href="https://obrazkiforum.atnel.pl/3824/6f9aeb76dda75168ca262fa36ccaf09f.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/3824/6f9aeb76dda75168ca262fa36ccaf09f.png" alt="Obrazek" /></a><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br /><div class="quotetitle">fofex napisał(a):</div><div class="quotecontent"><br />Zdefiniuj słowo &quot;incepcja&quot;.<br /></div><br /><br /><br />Polecam film o tym samym tytule, dokładnie wyjaśni na czym rzecz polega <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=3824">amilo_pa</a> — 27 paź 2020, o 17:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fofex]]></name></author>
<updated>2020-10-26T08:09:25+01:00</updated>
<published>2020-10-26T08:09:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23402&amp;p=229557#p229557</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23402&amp;p=229557#p229557"/>
<title type="html"><![CDATA[Re: Wskaźnikowa incepcja (do kwadratu)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23402&amp;p=229557#p229557"><![CDATA[
Zdefiniuj słowo &quot;incepcja&quot;.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21072">fofex</a> — 26 paź 2020, o 08:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2020-10-26T07:52:38+01:00</updated>
<published>2020-10-26T07:52:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23402&amp;p=229555#p229555</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23402&amp;p=229555#p229555"/>
<title type="html"><![CDATA[Re: Wskaźnikowa incepcja (do kwadratu)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23402&amp;p=229555#p229555"><![CDATA[
To napisz w jaki sposób to rozwiązałeś, wszyscy jesteśmy ciekawi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 26 paź 2020, o 07:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[amilo_pa]]></name></author>
<updated>2020-10-26T01:22:17+01:00</updated>
<published>2020-10-26T01:22:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23402&amp;p=229554#p229554</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23402&amp;p=229554#p229554"/>
<title type="html"><![CDATA[Re: Wskaźnikowa incepcja (do kwadratu)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23402&amp;p=229554#p229554"><![CDATA[
Problem rozwiazany <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=3824">amilo_pa</a> — 26 paź 2020, o 01:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[amilo_pa]]></name></author>
<updated>2020-10-26T00:15:09+01:00</updated>
<published>2020-10-26T00:15:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=23402&amp;p=229552#p229552</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=23402&amp;p=229552#p229552"/>
<title type="html"><![CDATA[Wskaźnikowa incepcja (do kwadratu)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=23402&amp;p=229552#p229552"><![CDATA[
Cześć wszystkim:) <br /><br />Mam taki problem, bawię się czujnikem BMP280 i piszę do niego swoją własną bibliotekę.<br />Czujnik ten może rozmawiać z uP przez dwa protokoły I2C oraz SPI. Bibliotekę chcę tak przygotować, aby wystarczyło zmienić dwa parametry i na ich podstawie automatycznie kompilował się kod z obsługą SPI lub I2C. <br />Tyle wstępu teraz czas na opis problemu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Mamy fragment  funkcji, za pomcą któej konfiguruję parametry pracy czujnika. Po zapisaniu parametrów (wywołąnie funkcji <em>BMP280_write_data</em>) chcę je odczytać (wywołanie funkcji <em>BMP280_read_data</em>) z czujnika i sprawdzić czy poprawnie się zapisały:<br /><br />[syntax=c]uint8_t BMP280_Conf (CONF *sensor, TBMP *bmp)<br />{<br />uint8_t buf&#91;2&#93;;<br />sensor-&gt;mode = BMP280_FORCEDMODE;<br />sensor-&gt;osrs_p = BMP280_ULTRAHIGHRES;<br />sensor-&gt;osrs_t= BMP280_TEMPERATURE_20BIT;<br />sensor-&gt;spi3w_en= 0;<br />sensor-&gt;reserved= 0;<br />sensor-&gt;filter= BMP280_FILTER_OFF;<br />sensor-&gt;t_sb= BMP280_STANDBY_MS_0_5;<br /><br />BMP280_write_data(BMP280_ADDR, 0xF4, 2, sensor-&gt;bt);// write configurations bytes<br />BMP280_read_data(BMP280_ADDR, 0xF4, 2, buf);// read set register<br />BMP280_read_data(BMP280_ADDR, 0x88, 24, bmp-&gt;coef.bt);// read compensation parameters<br />}[/syntax]<br /><br />Funkcja <em>BMP280_read_data</em> jest sparametryzowana i w zalożności od stanu zmiennych <em>BMP280_I2C</em> oraz <em>BMP280_SPI</em> kompilowana jest odpowiednia funkcja do obsługi magistra<br /><br />[syntax=c]void BMP280_read_data(uint8_t SLA, uint8_t register_addr, uint8_t size, uint8_t *Data)<br />{<br />#if BMP280_I2C<br />I2C_READ(SLA, register_addr, size, Data);<br />#endif<br /><br />#if BMP280_SPI<br />SPI_ReceiveData(register_addr, Data, size );<br />#endif<br />}[/syntax]<br /><br />A tak wygląda funkcja odczytująca odebrane dane po SPI<br /><br />[syntax=c]void SPI_ReceiveData (uint8_t address, uint8_t *Data, uint8_t size)  //Receiving a few data from external device<br />{<br />SELECT();<br /><br />while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);<br />SPI_I2S_SendData(SPI1, address);<br /><br />for (uint8_t i = 0; i &lt; size; i++)<br />{<br />while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);<br />SPI_I2S_SendData(SPI1, 0);<br />while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);<br />Data&#91;i&#93; = SPI_I2S_ReceiveData(SPI1);<br />}<br /><br />DESELECT();<br />}[/syntax]<br /><br />I teraz tak, w funkcji <em>BMP280_Conf </em> (pierwsza u samej góry) w linijce trzynastej przekazuje adres pierwszego elementu tablicy <em>buf</em> do funkcji <em>BMP280_read_data</em> - i moim życzeniem jest, aby do tej tablicy trafiły odczytane wartości z magistrali SPI.<br />Funkcja <em>BMP280_read_data</em> przekazuje ten nr rejestru (adres pierwszego elementu tablicy <em>buf</em>) do funkcji <em>SPI_ReceiveData</em>, a w niej dane otrzymane po SPI zapisuję do wskaźnika <em>Dane</em> - linijka 13. <br />Niestety, w efekcie takiej incepscji wskaźnikó moja tablica <em>buf</em> ma wartości &quot;0&quot;.<br /><a href="https://obrazkiforum.atnel.pl/3824/06701c3fcd58dbcb48de43f534ea7dbe.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/3824/06701c3fcd58dbcb48de43f534ea7dbe.png" alt="Obrazek" /></a><br />Co ciekawe, incepcja wskaźnikowa działa poprawnie w przypadku podania adresu uni (patrz linijka 14 w funkcji <em>BMP280_Conf </em>). W uni poprawnie lądują wszystkie wartości odczytane z SPI.<br /><a href="https://obrazkiforum.atnel.pl/3824/2c016718e02f34bbd461d3622764fa5c.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/3824/2c016718e02f34bbd461d3622764fa5c.png" alt="Obrazek" /></a><br /><br />Może mi ktoś podpowie gdzie robię błąd ? <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=3824">amilo_pa</a> — 26 paź 2020, o 00:15</p><hr />
]]></content>
</entry>
</feed>