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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-08-17T10:31:02+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=12532&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-08-17T10:31:02+01:00</updated>
<published>2015-08-17T10:31:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=137589#p137589</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=137589#p137589"/>
<title type="html"><![CDATA[Re: I2C pewna linijka kodu - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=137589#p137589"><![CDATA[
<div class="quotetitle">moscow18-1990 napisał(a):</div><div class="quotecontent"><br />Nie rozumiem tego zapisu i przez to nie rozumiem tego jak to działa.<br /></div><br />Ja nie pamiętam szczegółów o co chodziło z adresowaniem akurat tych pamięci - ale pewnie, że warto to zrozumieć, bo stosując różne układy I2C będziesz się spotykał z różnymi sposobami zapisu do nich i odczytem. A jak nie zrozumiesz to później będziesz robił tak jak inni, że np ktoś wziął sobie obsługę I2C układu RTC PCF8583 z książki i wymyślił sam sobie że w ten sposób będzie rozmawiał później z przetwornikiem ADC podłączanym zewnętrznie przez I2C i nagle zdziwienie, że to mu nie działa. No nie działa - bo każdy układ I2C ma często własną specyfikę działania i jest ona opisana DOKŁADNIE ZAWSZE w nocie PDF. Nie mogłoby być inaczej<br /><br />a tu z tego kodu widać co jest robione <br /><br />TWI_write( jakiś_adres_urządzenia |  ( (jakiś_adres_w_pamięci &gt;&gt; 8 ) &lt;&lt; 1) );<br /><br />ten jakiś_adres_w_pamięci przesuwamy w prawo o 8 bitów<br /><br />a później przesuwamy go w lewo o jeden bit bo najmłodszy bit oznacza zapis lub odczyta<br /><br />i dopiero teraz robimy operację OR z jakimś_adresem_urządzenia<br /><br />więc tu poćwicz sobie ew działanie na operacjach bitowych i sam sobie raz rozrysuj na kartce co wyjdzie z wartości podanych na początku<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 sie 2015, o 10:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[moscow18-1990]]></name></author>
<updated>2015-08-17T09:59:20+01:00</updated>
<published>2015-08-17T09:59:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=137586#p137586</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=137586#p137586"/>
<title type="html"><![CDATA[Re: I2C pewna linijka kodu - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=137586#p137586"><![CDATA[
1.No ok... ale bez tego + 1 też normalnie się wyświetla napis na analizatorze sprawdziłem i NULL normalnie się zapisuje bez tego +1. <br /><br /><br />2.Chciałem jeszcze zapytać o tą linijkę kodu:<br />[syntax=c]TWI_write( device | ((subAddr&gt;&gt;8)&lt;&lt;1) );[/syntax]<br /><br />Nie rozumiem tego zapisu i przez to nie rozumiem tego jak to działa. W dokumentacji przeczytałem że są rzeczywiście są dwa banki pamięci 000 - 0FF i  100 - 1FF i że za przełączanie odpowiada bit A0. Na analizatorze rzeczywiście widać widać że w momencie kiedy jestem w drugim banku pamięci bo podałem zamiast 64 np. 505 to adres slave się zmienia o 2, ponieważ A0 jest w stanie wysokim... no ale jak to się dzieje że ta linijka kodu to powoduje, jest to dość skomplikowany zapis byłbym wdzięczny za jakieś wyjaśnienie.<br /><br />3. Czy ta tematyka związana z zewnętrzną pamięcią eeprom jest aż tak istotna? Może nie potrzebnie aż tak się w to zagłębiam? Z jednej strony chciałbym to dobrze pojąć a z drugiej nie wiem czy może przydać mi się to w praktyce? Atmega 32 posiada chyba wewnętrzną pamięć eeprom.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5472">moscow18-1990</a> — 17 sie 2015, o 09:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-08-14T11:14:23+01:00</updated>
<published>2015-08-14T11:14:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=137253#p137253</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=137253#p137253"/>
<title type="html"><![CDATA[Re: I2C pewna linijka kodu - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=137253#p137253"><![CDATA[
Panie w pamięciach EEPROM, gdy nie są zapisane - w każdej komórce jest wartość 0xFF a nie 0x00 - musisz to sobie zapamiętać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Dlatego to +1 zrobiłem sobie tak sztucznie żeby się jeszcze znak NULL (zero) wkopiowało do EEPROM'a żeby później móc to odczytać metodą jak zwykły string <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> czyli szukając na końcu znaku NULL bo inaczej by się nie udało ... wciąż byłoby 0xFF, 0xFF ... <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=54">mirekk36</a> — 14 sie 2015, o 11:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[moscow18-1990]]></name></author>
<updated>2015-08-14T11:03:13+01:00</updated>
<published>2015-08-14T11:03:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=137251#p137251</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=137251#p137251"/>
<title type="html"><![CDATA[Re: I2C pewna linijka kodu - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=137251#p137251"><![CDATA[
To jeszcze pytanko odnośnie pamięci EEPROM, ponieważ znowu problemy są ze zrozumieniem pewnych niuansów a mianowicie:<br /><br />1. Ta linijka kodu mnie nurtuje:<br /><br />[syntax=c]uint8_t bo&#91; sizeof(tekst)+1 &#93;;[/syntax]<br /><br />a mianowiciet to &quot;+1&quot; , sizeof (tekst) odnosi się do zmiennej char i łańcucha:[syntax=c]uint8_t tekst&#91;&#93; = &quot;EEPROM&quot;;[/syntax] który docelowo jest zakończony znakiem NULL i w moim odczuciu sam sizeof(tekst) daję liczbę 6 i tworzy tablicę 6-ścio elementową ale po co to  &quot;+1&quot; na końcu jeszcze do tego?<br /><br /><br />2. Nie rozumiem totalnie tego jak ta pamięć EEPROM 24C04 jest zorganizowana(patrzyłem do dokumentacji ale tam nie żadnego rysunku a nic w ten deseń) jest tylko napisane na stronie nr.9 jest napisane że układ 24C04A ma dwa bloki po 256 bajtów każdy. Przeczytałem w niebieskiej książce że jest też 9-bitowy adres który jest potrzebny do zaadresowania każdego bajtu z osobna co jest powiązane z kolejną linijką kodu której także nie rozumiem:<br /><br />[syntax=c]TWI_write(device | ((subAddr&gt;&gt;8)&lt;&lt;1) );[/syntax]<br /><br />Jest to dość skomplikowane mógłby mi ktoś wytłumaczyć tą linię tak trochę bardziej wnikliwie?<br /><br />3.Chodzi o adres w pamięci:<br />[syntax=c]// zapis tekstu do pamięci EEPROM od adresu 253, dlatego aby tekst<br />// został zapisany w jednym i drugim banku pamięci<br />EI2C_write_buf( _24C04_ADDR, 64, sizeof(tekst), tekst );[/syntax]<br /><br />a mianowicie:<br />[syntax=c]// zapis tekstu do pamięci EEPROM od adresu 253[/syntax]<br /><br />nie wiem jak to się dzieje że w wywołaniu funkcji podaję liczbę 64 jako subbAddr i odwołuję się tak jak jest to napisane w komentarzu do adresu 253.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5472">moscow18-1990</a> — 14 sie 2015, o 11:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jerrylu]]></name></author>
<updated>2015-08-10T16:18:43+01:00</updated>
<published>2015-08-10T16:18:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136942#p136942</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136942#p136942"/>
<title type="html"><![CDATA[Re: I2C pewna linijka kodu - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136942#p136942"><![CDATA[
W filmikach Mirka o dawcy czasu znajdziesz dużo informacji o konfiguracji PCF8583 i komunikacji z tym układem.<br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2015/05/rtc-synchronizacja-czasu-wieczny.html" >http://mirekk36.blogspot.com/2015/05/rt ... eczny.html</a><!-- m --><br /><br />Nie musisz koniecznie oglądać wszystkiego od razu. <br />Już w pierwszej części jest sporo o PCF8583.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8719">jerrylu</a> — 10 sie 2015, o 16:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-08-10T15:38:27+01:00</updated>
<published>2015-08-10T15:38:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136938#p136938</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136938#p136938"/>
<title type="html"><![CDATA[Re: I2C pewna linijka kodu - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136938#p136938"><![CDATA[
1. no dobrze<br />2. zgadza się więc z czym masz problem ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />3. <br /><div class="quotetitle">moscow18-1990 napisał(a):</div><div class="quotecontent"><br />nie mógłbym zacząć od adresu 0x02 i zmniejszyć bufor do 3 elementów?<br /></div><br />Panie a kto ci zabroni ? możesz od czego chcesz ... ja podałem akurat taki przykład bo setne sekund mnie nie interesowały skoro odczytuję dane z zegarka co sekundę <br /><br />a czytanie rejestru kontrolnego ? co za problem ?<br /><br />uint8_t ctrl_reg;<br />TWI_read_buf( PCF8583_ADDR, 0x01, 1, &amp;ctrl_reg );<br /><br />i masz odczytany ten rejestr <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />4. poczytaj dokumentację RTC - bo tam pisze wyraźnie, że podajesz adres pierwszej komórki która cię interesuje do odczytu a jak ją odczytasz to RTC sam sobie w środku zrobi inkrementację adresu na kolejną komórkę, więc wystarczy już tylko czytać z układu a on ciurkiem poda. Taka metoda jest stosowana w wielu układach I2C to nic dziwnego <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=54">mirekk36</a> — 10 sie 2015, o 15:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[moscow18-1990]]></name></author>
<updated>2015-08-10T15:04:32+01:00</updated>
<published>2015-08-10T15:04:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136935#p136935</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136935#p136935"/>
<title type="html"><![CDATA[Re: I2C pewna linijka kodu - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136935#p136935"><![CDATA[
Dalej nurtuje mnie ta linijka kodu.Chciałbym poprosić o wyjaśnienie tej linii kodu bo ze względu na pojawienie się wskaźnika nie do końca ją rozumiem:<br /><br />[syntax=c]while (len--) *buf++ = TWI_read( len ? ACK : NACK );[/syntax]<br /><br />Sprawdzałem jak ta transmisja przebiega wczoraj na analizatorze i wiem jak to wygląda ale chodzi o to jaką rolę tutaj wskaźnik odgrywa. Uczę się cały czas tych wskaźników jest to dość ciężki temat dla mnie dlatego zwracam się z prośbą o wyjaśnienie.<br />Wiem tylko tyle że pętla działa do momentu wyzerowania zmiennej len i wiem także że funkcja która jest wywołana w ten sposób:<br />[syntax=c]TWI_read_buf( PCF8583_ADDR, 0x01, 4, bufor );[/syntax]<br /><br />powoduje że mam pewne spostrzeżenia, chciałbym zapytać o ich słuszność:<br /><br />1. argument len ma wartość 4 czyli tyle ile danych w buforze<br /><br />2. zapis *buf++ wskazuje najpierw na pierwszy element tablicy bufor i przy kolejnych postdekrementacjach zmiennej len, postinkrementacji  podlega wskaźnik i wskazuje na kolejny element tablicy? Po prostu jest tak że zmniejszam len, zwiększam indeks tablicy poprzez wskaźnik?<br /><br />3. Zastanawia mnie jeszcze to co z zerowym elementem tego bufora się dzieje... Na analizatorze było widać przekazanie  sekund,minut,godzin czyli tak jakby trzech elementów tablicy. Widzę że tam są setne części sekundy a tak w ogóle to w dokumentacji tego układu scalonego jest napisane odnośnie tej komórki pamięci że jest tam jakiś CONTROL/STATUS 2... też to mnie nurtuje... nie mógłbym zacząć od adresu 0x02 i zmniejszyć bufor do 3 elementów?<br /><br />4. I na razie ostatnia sprawa też związana z tymi adresami w układzie scalonym a mianowicie pod 0x02 są 0x03 są minuty a pod 0x04 są godziny i zastanawia mnie jak ten adres się zmienia w tym programie, ponieważ w wywołaniu funkcji jest 0x01 i nie jest dla mnie do końca zrozumiałe to w jaki sposób odnoszę do kolejnych adresów.<br /><br />Jeżeli ktoś mógłby mi wyjaśnić co nieco będę wdzięczny, ponieważ jestem bliski zrozumienia w pełni tego programu jak i samej transmisji I2C....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5472">moscow18-1990</a> — 10 sie 2015, o 15:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[moscow18-1990]]></name></author>
<updated>2015-08-07T10:48:22+01:00</updated>
<published>2015-08-07T10:48:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136680#p136680</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136680#p136680"/>
<title type="html"><![CDATA[Re: I2C pewna linijka kodu - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136680#p136680"><![CDATA[
A no działa... Czyli ta funkcja można powiedzieć jest uniwersalna bo wylicza ona za każdym razem odpowiednią wartość która zostanie wpisana do rejestru TWBR?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5472">moscow18-1990</a> — 7 sie 2015, o 10:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-08-06T23:17:55+01:00</updated>
<published>2015-08-06T23:17:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136653#p136653</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136653#p136653"/>
<title type="html"><![CDATA[Re: I2C pewna linijka kodu - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136653#p136653"><![CDATA[
coś słabo zaglądałeś - jeszcze raz na ten post zobacz<br /><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/post21755.html#p21755" >post21755.html#p21755</a><!-- l --><br /><br />i zamiast 16 MHz podstaw sobie 11,0592 MHz i przelicz w dwie strony<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 sie 2015, o 23:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[moscow18-1990]]></name></author>
<updated>2015-08-06T22:54:19+01:00</updated>
<published>2015-08-06T22:54:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136644#p136644</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136644#p136644"/>
<title type="html"><![CDATA[Re: I2C pewna linijka kodu - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136644#p136644"><![CDATA[
No sprawdziłem ten wzór i to co jest tam napisane i sprawdziłem też inny wątek <a href="http://forum.atnel.pl/topic1669.html"  class="postlink">http://forum.atnel.pl/topic1669.html</a> <br />i jest takie założenie że TWPS = 0 a TWBR jest wyliczany z tych wzorów tylko to działa dla F_CPU 16MHz a jak sprawdzam u siebie jaka jest wartość F_CPU to wynosi ona tyle ile wynosi częstotliwość rezonatora kwarcowego czyli 11059200Hz  i nie bardzo rozumiem jak działa ta funkcja i jak jest wyliczana wartość 100khz dla wartości innej niż te 16MHz. Mógłby ktoś pomóc w ostatecznym zrozumieniu tej funkcji i tego jak ustawia się tą częstotliwość...? Muszę to pojąć...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5472">moscow18-1990</a> — 6 sie 2015, o 22:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[luki]]></name></author>
<updated>2015-08-05T19:18:27+01:00</updated>
<published>2015-08-05T19:18:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136508#p136508</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136508#p136508"/>
<title type="html"><![CDATA[Re: I2C pewna linijka kodu - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136508#p136508"><![CDATA[
Wszystko masz ładnie opisane w dataschecie w sekcji Two-wire Serial (Amtega32 str 175 na samym dole jest wzór)<br />Interface<br /><br />SCL frequency =CPU Clock frequency/(16+ 2(TWBR) 4^TWPS)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=273">luki</a> — 5 sie 2015, o 19:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[moscow18-1990]]></name></author>
<updated>2015-08-05T19:02:15+01:00</updated>
<published>2015-08-05T19:02:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136507#p136507</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136507#p136507"/>
<title type="html"><![CDATA[Re: I2C pewna linijka kodu - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136507#p136507"><![CDATA[
To może zadam jeszcze pytanko odnośnie jednej funkcji a mianowicie:<br /><br />[syntax=c]void i2cSetBitrate(uint16_t bitrateKHz) {<br />uint8_t bitrate_div;<br /><br />bitrate_div = ((F_CPU/1000l)/bitrateKHz);<br />if(bitrate_div &gt;= 16)<br />bitrate_div = (bitrate_div-16)/2;<br /><br />TWBR = bitrate_div;<br />}[/syntax] <br /><br />Chciałem zapytać z czego ona wynika i czy jest jakieś miejsce w datasheet gdzie jest coś napisane na temat tego jak zaimplementować taką funkcję. Pytam, ponieważ dość wnikliwie analizuję kody zawarte w niebieskiej książce i zacząłem nanosić komentarze w datasheet dlatego jakaś wskazówka byłaby cenna...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5472">moscow18-1990</a> — 5 sie 2015, o 19:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-08-04T18:27:08+01:00</updated>
<published>2015-08-04T18:27:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136364#p136364</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136364#p136364"/>
<title type="html"><![CDATA[Re: I2C pewna linijka kodu - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136364#p136364"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />warunek jest spełniony do momentu wyzerowania zmiennej &quot;len&quot;?<br /></div><br />Dokładnie <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=54">mirekk36</a> — 4 sie 2015, o 18:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[moscow18-1990]]></name></author>
<updated>2015-08-04T18:07:58+01:00</updated>
<published>2015-08-04T18:07:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136360#p136360</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136360#p136360"/>
<title type="html"><![CDATA[Re: I2C pewna linijka kodu - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136360#p136360"><![CDATA[
Aaaaaahaa czyli to jest po prostu coś takiego<br /><br />[syntax=c]zmienna = warunek ? wyrażenie1 : wyrażenie2;[/syntax]<br /><br />co daje po prostu zwykłą instrukcję warunkową <br /><br />[syntax=c]if (warunek)<br />    zmienna = wyrażenie1;<br />else<br />    zmienna = wyrażenie2;[/syntax]<br /><br />Już drugi raz spotkałem się z takim zapisem i nie miałem zielonego pojęcia o co chodzi.... czyli tutaj w wyniku postdekrementacji warunek w pętli jest spełniony i tak samo w tym wyrażeniu:<br /><br />[syntax=c]( len ? ACK : NACK )[/syntax]<br /><br />warunek jest spełniony do momentu wyzerowania zmiennej &quot;len&quot;?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5472">moscow18-1990</a> — 4 sie 2015, o 18:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-08-04T17:23:30+01:00</updated>
<published>2015-08-04T17:23:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136358#p136358</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136358#p136358"/>
<title type="html"><![CDATA[Re: I2C pewna linijka kodu - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136358#p136358"><![CDATA[
<div class="quotetitle">moscow18-1990 napisał(a):</div><div class="quotecontent"><br />Chodzi mi generalnie o tą pętlę a mianowicie o to co ona dokładnie robi ale także o ten dość ciekawy zapis:<br /></div><br />Panie kochany wyjaśnienie to masz księdze tajemnic Hogwartu czyli Bluebooku - to się nazywa wyrażenie warunkowe<br /><br />[syntax=c]? :[/syntax]<br /><br />w języku C <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><br /><br />[syntax=c](wyrażenie) ? wartość1 : wartość2 ;[/syntax]<br /><br />teraz zajrzyj do przepisu w księdze i wszystko stanie się jasne <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=54">mirekk36</a> — 4 sie 2015, o 17:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[moscow18-1990]]></name></author>
<updated>2015-08-04T16:57:19+01:00</updated>
<published>2015-08-04T16:57:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136353#p136353</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136353#p136353"/>
<title type="html"><![CDATA[I2C pewna linijka kodu - pytanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12532&amp;p=136353#p136353"><![CDATA[
Dzień Dobry<br /><br />Chciałem poprosić o wyjaśnienie pewnego fragmentu kodu z niebieskiej książki a mianowicie:<br />[syntax=c]void TWI_read_buf(uint8_t SLA, uint8_t adr, uint8_t len, uint8_t *buf) {<br /> <br />        TWI_start();<br />        TWI_write(SLA);<br />        TWI_write(adr);<br />        TWI_start();<br />        TWI_write(SLA + 1);<br />        while (len--) *buf++ = TWI_read( len ? ACK : NACK );<br />        TWI_stop();<br />}[/syntax]<br /><br /><br />A dokładniej<br />[syntax=c]while (len--) *buf++ = TWI_read( len ? ACK : NACK );[/syntax]<br /><br /><br />Chodzi mi generalnie o tą pętlę a mianowicie o to co ona dokładnie robi ale także o ten dość ciekawy zapis:<br />[syntax=c]( len ? ACK : NACK )[/syntax]<br /><br /><br />Jeżeli mógłby ktoś mi to gruntowniej objaśnić to będę wdzięczny, ponieważ nie wszystko jest dla mnie jasne do końca...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5472">moscow18-1990</a> — 4 sie 2015, o 16:57</p><hr />
]]></content>
</entry>
</feed>