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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-07-18T09:35:21+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1179&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-07-18T09:35:21+01:00</updated>
<published>2012-07-18T09:35:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1179&amp;p=10110#p10110</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1179&amp;p=10110#p10110"/>
<title type="html"><![CDATA[Re: Biblioteka TWI, zapis EEPROM blokowo]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1179&amp;p=10110#p10110"><![CDATA[
No i o to chodziło, Brawo! <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> — 18 lip 2012, o 09:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[DC2002]]></name></author>
<updated>2012-07-18T09:29:45+01:00</updated>
<published>2012-07-18T09:29:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1179&amp;p=10107#p10107</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1179&amp;p=10107#p10107"/>
<title type="html"><![CDATA[Re: Biblioteka TWI, zapis EEPROM blokowo]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1179&amp;p=10107#p10107"><![CDATA[
Witajcie!<br />Brak czasu przesunął wszystko ale w końcu chciałbym pochwalić się tym co udało mi się osiągnąć. Zamieszczam działający kod dla pamięci 24c128.<br />[syntax=c]<br /><br />void TWI_read_buf_block (uint8_t SLA, uint16_t adr, uint16_t len, uint8_t *buf)<br />{<br /><br />unsigned char adresH;<br />unsigned char adresL;<br /><br /><br />TWI_start();<br />TWI_write(SLA);//dummy write<br />adresL=adr;<br />adresH=adr&gt;&gt;8;<br /><br />TWI_write(adresH);<br />TWI_write(adresL);<br />TWI_start();<br />TWI_write(SLA + 1);<br />do<br />{<br />*buf++ = TWI_read( len ? ACK : NACK );<br />}while (len--);<br />TWI_stop();<br />}<br />void TWI_write_buf_block( uint8_t SLA, uint16_t adr, uint16_t len, uint8_t *buf )<br />{<br />unsigned char adresH;<br />unsigned char adresL;<br /><br />do<br />{<br />TWI_start();<br />TWI_write(SLA);<br />adresL=adr;<br />adresH=adr&gt;&gt;8;<br />TWI_write(adresH);<br />TWI_write(adresL);<br />do<br />{<br />TWI_write(*buf++);<br />adr++;<br />len--;<br />if (len==0)break;<br />}while(adr%64);<br />TWI_stop();<br />_delay_ms(5);<br /><br />}while(len);<br />}<br /><br /><br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=286">DC2002</a> — 18 lip 2012, o 09:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-06-16T16:10:34+01:00</updated>
<published>2012-06-16T16:10:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1179&amp;p=8088#p8088</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1179&amp;p=8088#p8088"/>
<title type="html"><![CDATA[Re: Biblioteka TWI, zapis EEPROM blokowo]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1179&amp;p=8088#p8088"><![CDATA[
Ale co to znaczy zwisa na odczycie ? W ogóle nic nie odczytuje ? odczytuje ale tylko krótkie fragmenty a długich nie? czy jak ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 cze 2012, o 16:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[DC2002]]></name></author>
<updated>2012-06-17T13:14:07+01:00</updated>
<published>2012-06-16T15:47:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1179&amp;p=8086#p8086</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1179&amp;p=8086#p8086"/>
<title type="html"><![CDATA[Biblioteka TWI, zapis EEPROM blokowo]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1179&amp;p=8086#p8086"><![CDATA[
Witajcie!<br />Stanąłem przed problemem stworzenia obsługi dla pamięci EEPROM 24C128. Nie chodzi mi tutaj o zapis i odczyt jednej komórki pamięci. Problem tkwi w tym, że potrzebuje zapisać przykładowo tablicę 2000 bajtów. Wiem, że zapis blokowy w tych pamięciach możliwy jest dzięki buforowi 64bajtowemu i na takie paczki należy podzielić wysyłane dane. Napisałem to co zamieszczam poniżej ale zawisało na odczycie. Więc wróciłam do podstaw i używam czystych bibliotek z naszej ulubionej książki. Niestety program zawisa na odczycie. (źródeł nie podaje bo to biblioteka z książki).<br />Proszę o jakieś ciekawe sugestie, bo czuje, że pomijam jakiś szczegół..<br /><br /><br />[syntax=c]<br />void TWI_CONFIG (void)<br />{<br />TWBR=(16000000/100000-16)/2;//((8MHz/100kHz)-16)/2=32<br />TWCR|=_BV(TWEN);<br /><br />}<br />void TWI_write_buf_block( uint8_t SLA, uint16_t adr, uint16_t len, uint8_t *buf )<br />{<br />unsigned char adresH;<br />unsigned char adresL;<br />unsigned char a;<br />do<br />{<br />TWI_start();<br />TWI_write(SLA);<br />adresL=adr;<br />adresH=adr&gt;&gt;8;<br />TWI_write(adresH);<br />TWI_write(adresL);<br />if (len&gt;64)//SPRAWDZIC<br />{<br /><br />for (a=0;a&lt;64;a++)<br />{<br />TWI_write(*buf++);<br />}<br />TWI_stop();<br />adr+=64;<br />len-=64;<br />_delay_ms(7);<br />}<br />else<br />{<br />for (a=0;a&lt;len;a++)<br />{<br />TWI_write(*buf++);<br />}<br />TWI_stop();<br />adr+=len;<br />len=0;<br />_delay_ms(5);<br />}<br />//while (len--) TWI_write(*buf++);<br /><br />}while (len&gt;0);<br /><br />}<br /><br />void TWI_read_buf_block (uint8_t SLA, uint16_t adr, uint16_t len, uint8_t *buf)<br />{<br /><br />unsigned char adresH;<br />unsigned char adresL;<br /><br /><br />TWI_start();<br />TWI_write(SLA);//dummy write<br />adresL=adr;<br />adresH=adr&gt;&gt;8;<br /><br />TWI_write(adresH);<br />TWI_write(adresL);<br />TWI_start();<br />TWI_write(SLA + 1);<br />do<br />{<br />*buf++ = TWI_read( len ? ACK : NACK );<br />}while (len--);<br />TWI_stop();<br />}[/syntax]<br /><br /><span style="color: #FF0000">Ok, ale kody źródłowe dajemy w znacznikach [ syntax = c ] tak na przyszłość ok? (na górze można wybrać format z pola &quot;Listing kodu&quot;</span><br /><br />Za kod przepraszam, mój pierwszy taki post.<br />Już tłumaczę moje roztargnienie. Kod zamieszczony wyżej zawisał na oczekiwaniu w TWI_read na spełnienie while ( !(TWCR &amp; (1&lt;&lt;TWINT)));. To samo działo się w bibliotece  z książki ale to już moje wina <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />, bo dla ułatwienia wsadziłem pamięć 24C02 i nie poprawiłem właściwie adresu scalaka.<br /><br />Szanowni koledzy, sprawa rozwiązana. Wszystko działa. Ale postaram się opisać dlaczego nie działało.<br />Związane jest to z tym co widzicie na zdjęciu poniżej.<br /><a href="http://forum.atnel.pl/_obrazki/o/286_cab126b874bd65cf4dbe90d2d2feca51.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/286_cab126b874bd65cf4dbe90d2d2feca51.jpg" alt="Obrazek" /></a><br /><br />Jak widać urywek noty katalogowej 24C128. Jakbym nie liczył to wychodził mi adres mojego układu równy 164 (A1=1,A0=0). Niestety okazało się, że adres układu to 172 czyli policzony zgodnie z notą aplikacyjną układu 24C02 (A2=1,A1=1,A0=0); W sumie nie wiem jak to wyjaśnić ale aplikacja działa.<br />POZDRAWIAM<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=286">DC2002</a> — 16 cze 2012, o 15:47</p><hr />
]]></content>
</entry>
</feed>