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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-07-24T21:20:27+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=15803&amp;mode</id>
<entry>
<author><name><![CDATA[ShutDownSystem]]></name></author>
<updated>2016-07-24T21:20:27+01:00</updated>
<published>2016-07-24T21:20:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164676#p164676</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164676#p164676"/>
<title type="html"><![CDATA[Re: I2C, czujnik HTU21D i pewien kod.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164676#p164676"><![CDATA[
Witam!<br /><br />Szczerze mówiąc nie wiem co oznacza ten wzór na CRC, ale posłużyć się można biblioteką na arduino, z której wyciągnąłem funkcję do sprawdzania CRC: <br />[syntax=cpp]byte HTU21D::check_crc(uint16_t message_from_sensor, uint8_t check_value_from_sensor)<br />{<br />  //Test cases from datasheet:<br />  //message = 0xDC, checkvalue is 0x79<br />  //message = 0x683A, checkvalue is 0x7C<br />  //message = 0x4E85, checkvalue is 0x6B<br /><br />  uint32_t remainder = (uint32_t)message_from_sensor &lt;&lt; 8; //Pad with 8 bits because we have to add in the check value<br />  remainder |= check_value_from_sensor; //Add on the check value<br /><br />  uint32_t divsor = (uint32_t)SHIFTED_DIVISOR;<br /><br />  for (int i = 0 ; i &lt; 16 ; i++) //Operate on only 16 positions of max 24. The remaining 8 are our remainder and should be zero when we're done.<br />  {<br />    //Serial.print(&quot;remainder: &quot;);<br />    //Serial.println(remainder, BIN);<br />    //Serial.print(&quot;divsor:    &quot;);<br />    //Serial.println(divsor, BIN);<br />    //Serial.println();<br /><br />    if( remainder &amp; (uint32_t)1&lt;&lt;(23 - i) ) //Check if there is a one in the left position<br />      remainder ^= divsor;<br /><br />    divsor &gt;&gt;= 1; //Rotate the divsor max 16 times so that we have 8 bits left of a remainder<br />  }<br /><br />  return (byte)remainder;<br />}[/syntax]<br /><br />Co do adresu scalaczka: <div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />After sending the start condition, the subsequent I²C header consist of a 7-bit I²C device address 0x40<br /></div>, ale ten adres musisz mieć już gdzieś zdefiniowany, skoro udało Ci się dokonać transmisji.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4804">ShutDownSystem</a> — 24 lip 2016, o 21:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dawid75_75]]></name></author>
<updated>2016-07-24T21:05:42+01:00</updated>
<published>2016-07-24T21:05:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164674#p164674</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164674#p164674"/>
<title type="html"><![CDATA[Re: I2C, czujnik HTU21D i pewien kod.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164674#p164674"><![CDATA[
Mam jeszcze pytanie odnośnie CRC. Czytam:<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />HTU21D(F) sensor provides a CRC-8 checksum for error detection. The polynomial used is X8 + X5 + X4 + 1.<br /></div><br />Czym jest 'X'?<br />Odnośnie adresu - mówisz o tym: &quot;I²C communication reading and writing the user register example&quot; w tym schemacie, co oznaczają poszczególne bity na stronie 12?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11277">dawid75_75</a> — 24 lip 2016, o 21:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ShutDownSystem]]></name></author>
<updated>2016-07-24T20:58:08+01:00</updated>
<published>2016-07-24T20:58:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164673#p164673</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164673#p164673"/>
<title type="html"><![CDATA[Re: I2C, czujnik HTU21D i pewien kod.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164673#p164673"><![CDATA[
Witaj!<br /><br />Każde takie urządzenie podpięte do magistrali i2c ma swój adres (informacje na temat adresu są w nocie). Są urządzenia, których nie da się podpiąć w większej ilości do magistrali, z tego co pamiętam EEPROM 24c16 może być tylko jedna.<br />Z tego co widzę ten czujnik może być również tylko jeden. Co do ustawienia rozdzielczości zapoznaj się ze stroną 13 noty katalogowej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4804">ShutDownSystem</a> — 24 lip 2016, o 20:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dawid75_75]]></name></author>
<updated>2016-07-24T20:48:04+01:00</updated>
<published>2016-07-24T20:48:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164670#p164670</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164670#p164670"/>
<title type="html"><![CDATA[Re: I2C, czujnik HTU21D i pewien kod.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164670#p164670"><![CDATA[
Ano widzisz - teraz wszystko jasne <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Mam teraz inne pytanie - jak wiadomo, na I2C mogę podpiąć więcej niż jedno urządzenie. Muszę tylko w jakiś sposób rozróżnić jakoś te urządzenia wiszące na magistrali - pytanie: jak to zrobić mając np. 3 takie czujniki wiszące na jednej linii?<br />I jeszcze jedno: z tego, co widzę w dokumentacji mogę mieć rozdzielczość między 8-12 bitów dla wilgotności i 11-14 bitów dla temperatury, przy czym domyślnie mam 12 i 14 bitów.  Pytanie: jak wybrać rozdzielczość pomiaru?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11277">dawid75_75</a> — 24 lip 2016, o 20:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ShutDownSystem]]></name></author>
<updated>2016-07-24T20:36:14+01:00</updated>
<published>2016-07-24T20:36:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164669#p164669</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164669#p164669"/>
<title type="html"><![CDATA[Re: I2C, czujnik HTU21D i pewien kod.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164669#p164669"><![CDATA[
Witam!<br /><br />Popatrzmy na budowę na przykład liczby 10 = 0b1010<br />Każdemy bitowi przypisana jest jakaś waga. <br />2^3, 2^2, 2^1, 2^0, czyli 8,4,2,1.<br /><br />Stosując wagi można 0b1010 rozpisać jako 1*8+0*4+1*2+0*1 = 10<br />Trzeba zauważyć, że waga 2^0 jest skrajna. Od niej zaczynamy nadawać wagi kolejnych miejsc. Nie można zrobić wagi 2^-1, bo taka nie istnieje. Dlatego przesuwanie bitowe w prawo wyrzuca bity poza bajt. Możesz zobaczyć, że 0b1010 można zapisać jako 0b00001010 i to da nasze 10, ale zapisanie zera po prawej stronie tj. 0b10100 zmienia całkowicie wartość liczbową, bo to 10 już nie jest.<br /><br />Zauważ, że wyniki wszystkich operacji będą zapisane do zmiennej 2bajtowej tj. uint16_t , więc tak jak jest granica przed wagą 2^0 (bo nie ma wagi 2^-1 ), tak będzie granica po wadze 2^15.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4804">ShutDownSystem</a> — 24 lip 2016, o 20:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dawid75_75]]></name></author>
<updated>2016-07-24T19:35:00+01:00</updated>
<published>2016-07-24T19:35:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164666#p164666</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164666#p164666"/>
<title type="html"><![CDATA[Re: I2C, czujnik HTU21D i pewien kod.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164666#p164666"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Gdy przesuniemy w lewo bajt test[0] o osiem miejsc dostaniemy 0b0111110000000000<br /></div> - a czy robiąc to nie traktujemy 'test[0]' jak liczby 16-bitowej? Chodzi mi o to, że wyczytałem wcześniej, że przesuwając bity w lewo, tracimy bit najbardziej znaczący, a w miejsce najmniej znaczącego wchodzi zero, stąd moja uwaga, że dostaniemy same zera. Tutaj przesuwając bity w lewo z liczby 8-bitowej zrobiliśmy 16-bitową i to jest dla mnie najbardziej zagadkowe <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Dlaczego tak się stało, skoro mam:<br />[syntax=c]&#93;(uint8_t)test[/syntax], czyli traktuję to w dalszym ciągu jako zmienną 8-bitową? Przynajmniej tak rozumiem zapis <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Oczywiście jestem w stanie sobie wyobrazić, że zapis, np.:<br />[syntax=c]0b11001011&lt;&lt;4[/syntax] da w efekcie:<br />[syntax=c]0b110010110000[/syntax], a nie:<br />[syntax=c]0b10110000[/syntax], co wydawałoby się poprawne względem tego, co wyczytałem wcześniej w Internecie.<br />Nie neguję oczywiście poprawności Twojej odpowiedzi, ja po prostu jeszcze nie rozumiem dlaczego raz potraktowałeś liczbę dodając jej kolejne bity, że zrobiła się z 8-bitowej 16-bitowa, a 'test[1]' zgubiła swoje dwa bity <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=11277">dawid75_75</a> — 24 lip 2016, o 19:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ShutDownSystem]]></name></author>
<updated>2016-07-24T17:11:58+01:00</updated>
<published>2016-07-24T17:11:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164659#p164659</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164659#p164659"/>
<title type="html"><![CDATA[Re: I2C, czujnik HTU21D i pewien kod.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164659#p164659"><![CDATA[
Witam!<br /><br />[syntax=c]HTU21_read_temp(3,test);[/syntax]<br />Ta funkcja odczytuje z czujnika 3 bajty i zapisuje je do tablicy 'test'.<br /><br /><br />[syntax=c]temp = ((uint8_t)test&#91;0&#93;&lt;&lt;8)|((uint8_t)test&#91;1&#93;&gt;&gt;2);[/syntax]<br />Pokażę to na przykładzie. Powiedzmy, że test[0] = 0b01111100 i test[1]=0b10000010<br />Gdy przesuniemy w lewo bajt test[0] o osiem miejsc dostaniemy 0b0111110000000000<br />Bajt test[1] ma w sobie dwa bity Statusu, musimy je wyrzucić, dlatego przesuwamy o 2 miejsca w prawo. Teraz mamy 0b00100000.<br /><br />Po operacji OR 0b0111110000000000 i 0b00100000 otrzymamy 0b0111110000100000<br />[ 0 OR 0 -&gt; 0 ]<br />[ 0 OR 1 -&gt; 1 ]<br />[ 1 OR 0 -&gt; 1 ]<br />[ 1 OR 1 -&gt; 1 ]<br /><br />Zauważ, że rzutowanie:<br />[syntax=c]temp = ((uint8_t)test&#91;0&#93;&lt;&lt;8)|((uint8_t)test&#91;1&#93;&gt;&gt;2);[/syntax]<br />zachodzi tylko na test[0]. Gdyby było tak jak mówisz:<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Mam przesunięcie bitowe 'test[0]' o 8 miejsc w lewo - czego nie za bardzo rozumiem, bo przecież wtedy z liczby 8-bitowej robią się same zera?<br /></div><br />To wtedy zapis wyglądałby tak:<br />[syntax=c]((uint8_t)(test&#91;0&#93;&lt;&lt;8))[/syntax]<br /><br />Gdy zajrzysz na 12 stronę <a href="https://botland.com.pl/index.php?controller=attachment&amp;id_attachment=637"  class="postlink">PDF'a</a> zobaczysz, że ostatni element tablicy to 'Checksum'<br />Dalej w nocie jest napisane:<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />HTU21D(F) sensor provides a CRC-8 checksum for error detection. The polynomial used is X^8 + X^5 + X^4 +1<br /></div><br /><br />[syntax=c](uint32_t)temp[/syntax]<br />A ten zapis to rzutowanie zmiennych. Mówi prockowi, że chcesz, aby traktować zmienną temp jako 32bitową.<br /><br />Jeśli gdzieś jest błąd, proszę o poprawienie, jesteśmy ludźmi, a ja też jestem początkujący <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4804">ShutDownSystem</a> — 24 lip 2016, o 17:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dawid75_75]]></name></author>
<updated>2016-07-23T21:07:35+01:00</updated>
<published>2016-07-23T21:07:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164625#p164625</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164625#p164625"/>
<title type="html"><![CDATA[Re: I2C, czujnik HTU21D i pewien kod.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164625#p164625"><![CDATA[
Aa, teraz rozumiem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Zacząłem się zastanawiać nad inną rzeczą - na podstawie kodu z postu, do którego dałem linka wyżej, mam taki kod:<br />[syntax=c]uint16_t temp = 0;<br />uint8_t test&#91;3&#93;;<br />int32_t t;<br /><br />    while (1) <br />    {<br />uart_puts(&quot;\n\rTEST - pomiar temperatury&quot;);<br />HTU21_read_temp(3,test);<br /><br />temp = ((uint8_t)test&#91;0&#93;&lt;&lt;8)|((uint8_t)test&#91;1&#93;&gt;&gt;2);<br />//uart_puts(&quot;                 &quot;);<br />uart_puts(&quot;\n\rtemp:&quot;);[/syntax]<br />'3' odpowiada zmiennej 'len'. Znaczy to, że będę miał wykonane 3 pomiary? I nie do końca rozumiem też tę linijkę:<br />[syntax=c]temp = ((uint8_t)test&#91;0&#93;&lt;&lt;8)|((uint8_t)test&#91;1&#93;&gt;&gt;2);[/syntax]<br />Mam tutaj rozbicie 16-bitowego wyniku pomiaru na dwie 8-bitowe części?<br /><br />Przede wszystkim nie rozumiem, co oznacza ten zapis: [syntax=c](uint32_t)temp[/syntax]<br /><br />PS: Dodam, że zajrzałem do tego, co jest w tablicy &quot;test&quot;. I po wykonaniu funkcji &quot;HTU21_read_temp(3, test)&quot; mam takie liczby w tablicy:<br />test[0]: 107                                                    <br />test[1]: 172<br />test[2]: 206,<br />po czym &quot;temp&quot; ma wartość: temp = 27435. Szukam tutaj może jakiegoś dodawania bitowego, żeby skleić z tego zmienną &quot;temp&quot;. Po prostu muszę wiedzieć jak to działa linijka po linijce bo inaczej będę chory <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />PSs: Widać, że pies jest pogrzebany tutaj:<br />[syntax=c]temp = ((uint8_t)test&#91;0&#93;&lt;&lt;8)|((uint8_t)test&#91;1&#93;&gt;&gt;2);[/syntax]<br />Mam przesunięcie bitowe 'test[0]' o 8 miejsc w lewo - czego nie za bardzo rozumiem, bo przecież wtedy z liczby 8-bitowej robią się same zera?<br />Mam przesunięcie bitowe 'test[1]' o 2 miejsca z prawo, co wydaje się mniej dziwne, bo nie tracę całej liczby. <br />Tak  czy siak, nie rozumiem skąd się wzięła cała powyższa jedynka. Bardzo proszę o dalsze wskazówki <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Biorę też dokumentację czujnika i czytam, co następuje:<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />CONVERSION OF SIGNAL OUTPUTS<br />Default resolution is set to 12-bit relative humidity and 14-bit temperature readings. Measured data are<br />transferred in two byte packages, i.e. in frames of 8-bit length where the most significant bit (MSB) is transferred<br />first (left aligned). Each byte is followed by an acknowledge bit. The two status bits, the last bits of LSB, must be<br />set to ‘0’ before calculating physical values.<br /></div><br /><br />Rozumiem stąd, że dane pomiarowe idą w dwóch paczkach po 8 bitów, najbardziej znaczący bit jest wysyłany jako pierwszy i że mam dwa bity stanu, które muszę zrobić zerami, stąd przesunięcie o dwa w prawo? Ale pytanie dalej, po co bufor 3-elementowy? Chodzi o CRC?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11277">dawid75_75</a> — 23 lip 2016, o 21:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ShutDownSystem]]></name></author>
<updated>2016-07-23T20:46:35+01:00</updated>
<published>2016-07-23T20:46:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164618#p164618</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164618#p164618"/>
<title type="html"><![CDATA[Re: I2C, czujnik HTU21D i pewien kod.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164618#p164618"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />I²C jest magistralą zorientowaną bajtowo, a więc bity grupowane są po 8[7]. Dane są wysyłane w kolejności od najbardziej znaczącego bitu do najmniej znaczącego[8]. Po przesłaniu 8 bitów w jednym kierunku, przesyłany jest dodatkowy bit potwierdzenia odebrania danych ACK (lub NACK w przypadku braku potwierdzenia) w kierunku przeciwnym[7].<br /></div><br /><br />Skoro ACK i NACK są wysyłane magistralą i2c, to albo są reprezentowane jako GND albo Vcc , czyli logicznie 0 lub 1 <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4804">ShutDownSystem</a> — 23 lip 2016, o 20:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dawid75_75]]></name></author>
<updated>2016-07-23T16:50:21+01:00</updated>
<published>2016-07-23T16:50:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164606#p164606</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164606#p164606"/>
<title type="html"><![CDATA[Re: I2C, czujnik HTU21D i pewien kod.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164606#p164606"><![CDATA[
Ano widzisz <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> Powiedz mi proszę - jak mogłem się tego dowiedzieć, że to 0 i 1 ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11277">dawid75_75</a> — 23 lip 2016, o 16:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ShutDownSystem]]></name></author>
<updated>2016-07-23T10:42:12+01:00</updated>
<published>2016-07-23T10:42:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164592#p164592</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164592#p164592"/>
<title type="html"><![CDATA[Re: I2C, czujnik HTU21D i pewien kod.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164592#p164592"><![CDATA[
Pod ACK po prostu kryje się 1, a pod NACK 0. Możesz sobie zrobić na przykład tak:<br />[syntax=c]#define KOCHAM_AVR_ACK 1<br />#define NIE_KOCHAM_AVR_NACK 0[/syntax]<br /><br />Też będzie działać <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4804">ShutDownSystem</a> — 23 lip 2016, o 10:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dawid75_75]]></name></author>
<updated>2016-07-23T04:58:37+01:00</updated>
<published>2016-07-23T04:58:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164585#p164585</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164585#p164585"/>
<title type="html"><![CDATA[Re: I2C, czujnik HTU21D i pewien kod.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164585#p164585"><![CDATA[
Dziękuję bardzo za odpowiedź, teraz samą składnię rozumiem. Problem pojawił się z czym innym - otóż kompilator wyrzuca błąd, że nie wie co to ACK i NACK. Domyślam się, że są to definicje z pliku nagłówkowego &quot;i2c.h&quot; z postu, do którego się odniosłem w swojej wcześniejszej wypowiedzi, ale nie ma tam pokazanego tego pliku. Zakładam, że są to skrócone nazwy makr z pliku &quot;twi.h&quot;. Zamieniłem je na: TW_MT_DATA_ACK : TW_MT_DATA_NACK, skompilowałem program i się uruchomił, temperaturę pokazuje prawidłowo. Czy to co zrobiłem jest poprawne? Chodzi mi o to, czy dobrze podmieniłem te makra.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11277">dawid75_75</a> — 23 lip 2016, o 04:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ShutDownSystem]]></name></author>
<updated>2016-07-17T22:25:37+01:00</updated>
<published>2016-07-17T22:25:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164199#p164199</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164199#p164199"/>
<title type="html"><![CDATA[Re: I2C, czujnik HTU21D i pewien kod.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164199#p164199"><![CDATA[
While (len--) -&gt; Dopóki zmienna len, od której z każdym obiegiem jest odejmowane jeden wykonuj<br />*buf++ -&gt; Wskaźnik na kolejny element bufora jest przypisywany do wyniku<br />TWI_read( len ? ACK : NACK ) -&gt; Funkcja odczytująca dane. W jej argumencie podajemy ACK ( potwierdzenie ) lub NACK ( brak potwierdzenia ). Tutaj wyrażenie warunkowe sprawi, że wysyłane będzie ACK dopóki zmienna len będzie różne od zera. (Strona 105 BB)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4804">ShutDownSystem</a> — 17 lip 2016, o 22:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[dawid75_75]]></name></author>
<updated>2016-07-17T19:31:34+01:00</updated>
<published>2016-07-17T19:31:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164184#p164184</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164184#p164184"/>
<title type="html"><![CDATA[I2C, czujnik HTU21D i pewien kod.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15803&amp;p=164184#p164184"><![CDATA[
Szanowni Forumowicze,<br />zabrałem się za poznawanie standardu TWI i do tego celu mam czujnik temperatury i wilgotności HTU21D w module od Sparkfun. Szukałem rozwiązania na Forum i znalazłem temat poświęcony zagadnieniu:<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic11029.html" >topic11029.html</a><!-- l --><br />Nie rozumiem jednak 9. linijki kodu w tym poście:<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic11029.html#p123238" >topic11029.html#p123238</a><!-- l --><br /><br />Oto ta linijka:<br />[syntax=c]while (len--) *buf++ = TWI_read( len ? ACK : NACK );[/syntax]<br /><br />Bardzo proszę o wskazówki jak prawidłowo przeczytać tę linijkę kodu i pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11277">dawid75_75</a> — 17 lip 2016, o 19:31</p><hr />
]]></content>
</entry>
</feed>