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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-05-22T17:59:55+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=20759&amp;mode</id>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2018-05-22T17:59:55+01:00</updated>
<published>2018-05-22T17:59:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208121#p208121</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208121#p208121"/>
<title type="html"><![CDATA[Re: TWI MR-ST problem z odczytem bufora danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208121#p208121"><![CDATA[
<div class="quotetitle">igsor96 napisał(a):</div><div class="quotecontent"><br />Po dodaniu delaya do funkcji write_slave problem zniknął<br /></div>Powiem tak - jeśli dodałeś tego delaya i problem zniknął to masz coś nie tak (przypuszczam że z warunkiem w while).<br />Sekcję<br />[syntax=c]_delay_ms(100);<br />uart_putint(TW_STATUS,16);[/syntax]<br />dodałem tylko po to by podejrzeć jakie wartości status code zwraca TWI SLAVE-a, delay był tu konieczny i oszacowany na &quot;bezpieczne oko&quot; tak by operacja wysyłki tego kodu po UART była już na pewno po operacji wysłania bajtu po TWI.<br />W czasie normalnej pracy modułu TWI właściwy czas oczekiwania załatwia właśnie pętla while która zatrzymuje działanie programu do czasu pojawienia się właściwego status code co jest równoznaczne z zakończeniem operacji wysyłania bajtu przez moduł TWI.<br />U mnie program działa również po usunięciu delaya i funkcji uart_putint.<br /><br />A tak wogule to nie wiem czy twoje podejście do TWI SLAVE jest właściwe. Widzisz moduł SLAVE powinien wykonywać polecenia MASTER-a. Więc budowanie funkcji która wysyła zdefiniowaną ilość bajtów nie do końca jest trafione.<br />Funkcja powinna cały czas wysyłać kolejne dane jeśli MASTER po odbiorze bajtu wystawia ACK, informując SLAVE że chce odczytywać kolejne bajty; a przerwać funkcję w momencie wysłania przez MASTER NACK. Przynajmniej tak to robią wszelakie moduły pracujące na magistrali TWI w roli SLAVE-a. Takie jest moje zdanie - choć niekoniecznie musi być słuszne  <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=6265">xentis</a> — 22 maja 2018, o 17:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[igsor96]]></name></author>
<updated>2018-05-21T18:39:50+01:00</updated>
<published>2018-05-21T18:39:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208061#p208061</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208061#p208061"/>
<title type="html"><![CDATA[Re: TWI MR-ST problem z odczytem bufora danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208061#p208061"><![CDATA[
Po dodaniu delaya do funkcji write_slave problem zniknął <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Bardzo dziękuje 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=19370">igsor96</a> — 21 maja 2018, o 18:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2018-05-21T17:39:11+01:00</updated>
<published>2018-05-21T17:39:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208056#p208056</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208056#p208056"/>
<title type="html"><![CDATA[Re: TWI MR-ST problem z odczytem bufora danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208056#p208056"><![CDATA[
Hym... na to pytanie to chyba będzie mi ciężko odpowiedzieć bo u mnie po modyfikacji funkcji TWI_write_slave(uint8_t data) do postaci:<br />[syntax=c]void TWI_write_slave(uint8_t data) // Function to write data<br />{<br />TWDR= data;           // Fill TWDR register whith the data to be sent<br />TWCR= (1&lt;&lt;TWEA)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWINT);   // Enable TWI, Clear TWI interrupt flag<br />_delay_ms(100);<br />uart_putint(TW_STATUS,16);<br />while((TW_STATUS != TW_ST_DATA_ACK)&amp;&amp;(TW_STATUS != TW_ST_DATA_NACK)); // Wait for the acknowledgement<br />LED_TOG;<br />}[/syntax]<br />cały bufor leci do mastera we właściwej formie czyli w terminalu master cyklicznie wypluwa ciąg 12345678.<br />Nie wiem, może masz coś nie tak w samej bibliotece UART-a, bo tej nie wrzuciłeś więc nie jestem w stanie powiedzieć dla czego u mnie to działa a u Ciebie nie. Ja podłączyłem bibliotekę do UARTA mirkową z BB. Wprowadziłem kilka koniecznych zmian tak by owa biblioteka działała poprawnie, reszta kodu jest żywcem przerzucona ze źródeł które wrzuciłeś, z modyfikacją  jedynie funkcji TWI_write_slave.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 21 maja 2018, o 17:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[igsor96]]></name></author>
<updated>2018-05-20T22:19:23+01:00</updated>
<published>2018-05-20T22:19:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208027#p208027</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208027#p208027"/>
<title type="html"><![CDATA[Re: TWI MR-ST problem z odczytem bufora danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208027#p208027"><![CDATA[
Tak, to było to! Ogromnie dziękuję za pomoc! <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Jeszcze dopytam przy okazji. Slave się 'odblokował' i wysyła bufor tylko, że z niewiadomych przyczyn ciągle jego pierwszy indeks. Zamieniłem funkcję TWI_write_slave_buf na tą analogiczną do poradnika p.Mirka ale dalej to samo. Co może być tego przyczyną?<br />[syntax=c]void TWI_write_slave_buf(uint8_t *buf, uint8_t len)<br />{<br /> for(int i=0;i&lt;len;i++)<br /> {<br /><br /> uint8_t b=*buf++;<br /> TWI_write_slave(b);<br /><br /> }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19370">igsor96</a> — 20 maja 2018, o 22:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2018-05-20T21:26:20+01:00</updated>
<published>2018-05-20T21:26:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208023#p208023</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208023#p208023"/>
<title type="html"><![CDATA[Re: TWI MR-ST problem z odczytem bufora danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208023#p208023"><![CDATA[
Problem masz w tej funkcji:<br />[syntax=c]void TWI_write_slave(uint8_t data) // Function to write data<br />{<br />TWDR= data;           // Fill TWDR register whith the data to be sent<br />TWCR= (1&lt;&lt;TWEN)|(1&lt;&lt;TWINT);   // Enable TWI, Clear TWI interrupt flag<br />while((TW_STATUS) != TW_ST_DATA_ACK); // Wait for the acknowledgement<br />}[/syntax]<br />Ponieważ w rejestrze TWCR nie ustawiasz bitu TWEA, slave zwraca status code=0xC8, a twoja pętla while czeka cały czas na kod 0xB8 (ukryty pod makrem TW_ST_DATA_ACK), tak więc jak zmodyfikujesz funkcję do takiej postaci:<br />[syntax=c]void TWI_write_slave(uint8_t data) // Function to write data<br />{<br />TWDR= data;           // Fill TWDR register whith the data to be sent<br />TWCR= (1&lt;&lt;TWEA)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWINT);   // Enable TWI, Clear TWI interrupt flag<br />while((TW_STATUS) != TW_ST_DATA_ACK); // Wait for the acknowledgement<br />}[/syntax]<br />Slave wyśle wszystkie 8 bajtów z bufora. Niestety na tym zakończy i już więcej nic nie wyśle bo znów ugrzęźnie w tej samej pętli while która nadal czeka na status code=0xB8, a przecież gdy master odbierze ósmy bajt wysyła NACK czyli moduł TWI slave zwróci status code=0xC0.<br />Musiałbyś do warunku pętli while dodać drugi jako sumę logiczną z drugim status codem, lub też wogule zrezygnować ze sprawdzania tych kodów, a jako koniec operacji wysyłania sprawdzać czy bit TWINT został ustawiony na 1.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 20 maja 2018, o 21:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[igsor96]]></name></author>
<updated>2018-05-20T17:03:19+01:00</updated>
<published>2018-05-20T17:03:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208011#p208011</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208011#p208011"/>
<title type="html"><![CDATA[Re: TWI MR-ST problem z odczytem bufora danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208011#p208011"><![CDATA[
Faktycznie, zapomniałem ją tam wrzucić. Problem jednak dalej aktualny.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19370">igsor96</a> — 20 maja 2018, o 17:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2018-05-20T16:58:29+01:00</updated>
<published>2018-05-20T16:58:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208009#p208009</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208009#p208009"/>
<title type="html"><![CDATA[Re: TWI MR-ST problem z odczytem bufora danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208009#p208009"><![CDATA[
W kodzie dla slave-a jest funkcja której wogule nie ma w plikach:<br />[syntax=c]TWI_write_slave_buf(buf,8);[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />a ok zapomniałeś ją wrzucić do pliku  h biblioteki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 20 maja 2018, o 16:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[igsor96]]></name></author>
<updated>2018-05-20T13:18:09+01:00</updated>
<published>2018-05-20T13:18:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208000#p208000</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208000#p208000"/>
<title type="html"><![CDATA[TWI MR-ST problem z odczytem bufora danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20759&amp;p=208000#p208000"><![CDATA[
Dzień dobry,<br />Od dłuższego czasu walczę z magistralą TWI na Atmedze8. Odbieranie/wysyłanie bajtu między dwoma uC działa poprawnie, jednak problemy zaczynają się kiedy próbuję odebrać bufor ze slave'a. Cały program zawiesza się w momencie kiedy master oczekuje odebrania danych ze slave'a w funkcji TWI_read_buf. Dokładnie w tej linijce:<br />[syntax=c]while (len--) *buf++ = TWI_read( len ? ACK : NACK );[/syntax]<br /><br />Próbowałem temat ugryźć na wiele sposobów ale bez rezultatu. Nie mam już pomysłu gdzie robię błąd, dlatego proszę Was o pomoc w rozwiązaniu problemu.<br /><br />Biblioteka.h:<br />[syntax=c]/*<br /> * i2c_twi.h<br /> *<br /> *  Created on: 2010-09-07<br /> *       Autor:<br /> */<br /> <br />#ifndef I2C_TWI_H_<br />#define I2C_TWI_H_<br /> <br /> <br />#define ACK 1<br />#define NACK 0<br /> <br />#define TWI_SLAError 6<br />#define TWI_WriteError 5<br />#define TWI_STARTError 1<br />#define TWI_NoNACK 3<br />#define TWI_NoACK 4<br />extern uint8_t TWI_Error;<br />// funkcje<br />inline void TWI_SetError(uint8_t err)<br />{<br />    TWI_Error=err;<br />}<br /> <br />void TWISetBitrate(void);<br />void TWI_start(void);<br />void TWI_stop(void);<br />void TWI_write(uint8_t bajt);<br />uint8_t TWI_read(uint8_t ack);<br />void TWI_slave_init(uint8_t SLA);<br />void TWI_write_buf( uint8_t SLA,uint8_t len, uint8_t *buf );<br />void TWI_read_buf(uint8_t SLA, uint8_t len, uint8_t *buf);<br />uint8_t TWI_read_slave(void);<br />void TWI_match_read_slave(void);<br />void TWI_match_write_slave(void);<br />void TWI_write_slave(uint8_t data);<br />#endif /* I2C_TWI_H_ */[/syntax]<br /><br /><br />Biblioteka.c:<br />[syntax=c]/*<br /> * i2c_twi.c<br /> *<br /> *  Created on: 2010-09-07<br /> *       Autor:<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/twi.h&gt;<br />#include &quot;i2c_twi.h&quot;<br /> <br /> <br /> <br /> <br /> <br />void TWISetBitrate(void) {<br />    TWBR=0x01; // Bit rate<br />    TWSR=(0&lt;&lt;TWPS1)|(0&lt;&lt;TWPS0); // Setting prescalar bits<br />    // SCL freq= F_CPU/(16+2(TWBR).4^TWPS)<br />}<br /> <br />void TWI_start(void) {<br />    TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWSTA);<br />    while (!(TWCR&amp;(1&lt;&lt;TWINT)));<br />    if(TW_STATUS!=TW_MT_DATA_ACK) TWI_SetError(TWI_STARTError);<br />}<br /> <br />void TWI_stop(void) {<br />    TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWSTO);<br />    while ( (TWCR&amp;(1&lt;&lt;TWSTO)) );<br /> <br />}<br /> <br />void TWI_write(uint8_t bajt) {<br />    TWDR = bajt;<br />    TWCR = (1&lt;&lt;TWINT)|(1&lt;&lt;TWEN);<br />    while ( !(TWCR&amp;(1&lt;&lt;TWINT)));<br />    if(TW_STATUS!=TW_MT_DATA_ACK) TWI_SetError(TWI_WriteError);<br />}<br /> <br />uint8_t TWI_read(uint8_t ack) {<br />    TWCR = (1&lt;&lt;TWINT)|(ack&lt;&lt;TWEA)|(1&lt;&lt;TWEN);<br />    while ( !(TWCR &amp; (1&lt;&lt;TWINT)));<br />    if(TW_STATUS!=TW_MR_DATA_ACK) TWI_SetError(TWI_NoACK);<br />    return TWDR;<br />}<br /> <br /> <br /> <br />void TWI_write_buf( uint8_t SLA, uint8_t len, uint8_t *buf )<br />{<br /> <br />    TWI_start();<br />    TWI_write(SLA);<br />    while (len--) TWI_write(*buf++);<br />    TWI_stop();<br />}<br /> <br /> <br /> <br />void TWI_read_buf(uint8_t SLA, uint8_t len, uint8_t *buf) {<br /> <br />    TWI_start();<br />    TWI_write(SLA + 1);<br />    if((TW_STATUS)!=0x40) TWI_SetError(8);<br />    while (len--) *buf++ = TWI_read( len ? ACK : NACK );<br />    TWI_stop();<br />}<br /> <br />void TWI_slave_init(uint8_t SLA)<br />{<br />    TWAR=SLA; // adres slave (unikac zapisu do LSB&lt;-TWGCE )<br />    TWCR=(1&lt;&lt;TWEN)|(1&lt;&lt;TWEA)|(1&lt;&lt;TWINT);<br />}<br /> <br />uint8_t TWI_read_slave(void)<br />{<br />// Clear TWI interrupt flag,Get acknowlegement, Enable TWI<br />TWCR= (1&lt;&lt;TWINT)|(1&lt;&lt;TWEA)|(1&lt;&lt;TWEN);<br />while (!(TWCR &amp; (1&lt;&lt;TWINT))); // Wait for TWINT flag<br />while((TW_STATUS)!=TW_SR_DATA_ACK); // Wait for acknowledgement<br />return TWDR; // Get value from TWDR<br />}<br /> <br />void TWI_match_read_slave(void) //Function to match the slave address and slave dirction bit(read)<br />{<br />while((TW_STATUS)!= TW_SR_SLA_ACK)  // Loop till correct acknoledgement have been received<br />{<br />// Get acknowlegement, Enable TWI, Clear TWI interrupt flag<br />TWCR=(1&lt;&lt;TWEA)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWINT);<br />while (!(TWCR &amp; (1&lt;&lt;TWINT)));  // Wait for TWINT flag<br />}<br />}<br /> <br />void TWI_match_write_slave(void) //Function to match the slave address and slave dirction bit(write)<br />{<br />while((TW_STATUS)!= TW_ST_SLA_ACK) // Loop till correct acknoledgement have been received<br />{<br />// Get acknowlegement, Enable TWI, Clear TWI interrupt flag<br />TWCR=(1&lt;&lt;TWEA)|(1&lt;&lt;TWEN)|(1&lt;&lt;TWINT);<br />while (!(TWCR &amp; (1&lt;&lt;TWINT)));  // Wait for TWINT flag<br />}<br />}<br /> <br />void TWI_write_slave(uint8_t data) // Function to write data<br />{<br />TWDR= data;           // Fill TWDR register whith the data to be sent<br />TWCR= (1&lt;&lt;TWEN)|(1&lt;&lt;TWINT);   // Enable TWI, Clear TWI interrupt flag<br />while((TW_STATUS) != TW_ST_DATA_ACK); // Wait for the acknowledgement<br />}<br /> <br /> <br />void TWI_write_slave_buf(uint8_t *buf, uint8_t len)<br />{<br /> <br />    while (len--) TWI_write_slave(*buf++);<br /> <br />}[/syntax]<br /><br />Dla mastera:<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 5 maj 2018<br /> *      Author:<br /> */<br /> <br />// Program for Master Mode<br /> <br /> <br />#include &lt;avr/io.h&gt;<br />#include &quot;MYUART/myuart.h&quot;<br />#include &quot;TWI/i2c_twi.h&quot;<br />#include &lt;util/delay.h&gt;<br /> <br /> <br />uint8_t TWI_Error;<br /> <br />#define LED 1&lt;&lt;PB0<br />#define LED_ON PORTB|=LED<br />#define LED_OFF PORTB&amp;=~LED<br />#define LED_TOG PORTB^=LED;<br /> <br /> <br /> <br />int main(void)<br />{<br />DDRB=LED;<br />TWISetBitrate();<br />uart_init(__UBRR);  //inicjalizacja UART<br /> <br /> <br />uint8_t buf&#91;8&#93;;<br /> <br /> <br />inline void TWI_SetError(uint8_t err)<br />    {<br />        TWI_Error=err;<br />    }<br /> <br />unsigned char write=0;<br />uint8_t len =8;<br />uint8_t data=1;<br />uint8_t SLA=0x20;<br /> <br />while(1)<br />{<br />    _delay_ms(500);<br />    TWI_start();<br />    TWI_write(SLA+write);<br />    TWI_write(data);<br />    TWI_stop();<br /> <br /> <br />    _delay_ms(500);<br />    TWI_read_buf(SLA,len,buf); // Odczyt bufora ze slave<br />    LED_TOG; //zmien stan diody na przeciwny<br /> <br />    //wyswietlanie tablicy<br />    for(int i=0;i&lt;8;i++)<br />    {<br />        uart_putlong(buf&#91;i&#93;,10);<br />        uart_puts(&quot;  &quot;);<br />    }<br /> <br /> <br /> <br /> <br />}<br /> <br /> <br />}<br /><br />}[/syntax]<br /><br />Dla slave'a:<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 5 maj 2018<br /> *      Author:<br /> */<br /> <br /> <br />// Program for Slave mode<br />#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br />#include &quot;TWI/i2c_twi.h&quot;<br /> <br /> <br />uint8_t TWI_Error;<br /> <br /> <br /> <br /> <br />#define LED 1&lt;&lt;PD4<br />#define LED_ON PORTD|=LED<br />#define LED_OFF PORTD&amp;=~LED<br />#define LED_TOG PORTD^=LED;<br /> <br /> <br />int main(void)<br />{<br /> <br />    inline void TWI_SetError(uint8_t err)<br />    {<br />        TWI_Error=err;<br />    }<br /> <br /> <br />//LED<br />    DDRD|=LED;<br /> <br /> <br /> <br />//Zmienne<br />    uint8_t addr=0x20;<br />    uint8_t stan=0;<br />    uint8_t buf&#91;8&#93;={1,2,3,4,5,6,7,8};<br /> <br /> <br />//inicjalizacje<br />    TWI_slave_init(addr);<br /> <br /> <br />while(1)<br />{<br /> <br /> <br /> <br />    TWI_match_read_slave();<br />    stan = TWI_read_slave();<br />    if(stan==1) LED_TOG;<br />    _delay_ms(50);<br /> <br /> <br /> <br />    TWI_match_write_slave();<br />    TWI_write_slave_buf(buf,8);<br /> <br /> <br /> <br /> <br /> <br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=19370">igsor96</a> — 20 maja 2018, o 13:18</p><hr />
]]></content>
</entry>
</feed>