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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-07-08T13:42:36+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=3473&amp;mode</id>
<entry>
<author><name><![CDATA[CeBe]]></name></author>
<updated>2013-07-08T13:42:36+01:00</updated>
<published>2013-07-08T13:42:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3473&amp;p=41117#p41117</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3473&amp;p=41117#p41117"/>
<title type="html"><![CDATA[Re: Sprzętowy I2C przykład z książki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3473&amp;p=41117#p41117"><![CDATA[
Właśnie obsługuję DS1307 (RTC) i ma taką przypadłość że jak wyładuje się bateryjka podtrzymująca czas to nie idzie komunikacja z układem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=573">CeBe</a> — 8 lip 2013, o 13:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-07-08T13:28:02+01:00</updated>
<published>2013-07-08T13:28:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3473&amp;p=41115#p41115</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3473&amp;p=41115#p41115"/>
<title type="html"><![CDATA[Re: Sprzętowy I2C przykład z książki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3473&amp;p=41115#p41115"><![CDATA[
U mnie to koncepcja wygląda z zgłaszaniem następująco, jest sobie coś na zasadzie flag, systemowych czyli wiem, co zgłasza błąd, program podejmuje za mnie decyzje, czyli albo powtarza transmisje do skutku, albo resetuje cały system <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />.<br />W końcu to tylko rozwinięcie koncepcji eventów <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />, bo obsługa błędów to po prostu kolejny krok.<br />Chociażby zapalenie diodki error <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />.<p>Statystyki: Napisane przez Gość — 8 lip 2013, o 13:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-07-08T13:14:51+01:00</updated>
<published>2013-07-08T13:14:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3473&amp;p=41113#p41113</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3473&amp;p=41113#p41113"/>
<title type="html"><![CDATA[Re: Sprzętowy I2C przykład z książki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3473&amp;p=41113#p41113"><![CDATA[
W każdej pętli oczekującej na akcję zastosować prostego timeouta, nawet bez żadnego timera, żeby nie tracić zasobów .... i to wystarczy.<br /><br />Jak będzie coś nie tak to zgłaszasz komunikat ..... ale<br /><br />...ale jest jedno małe ale<br /><br />Przede wszystkim to nie komputer PC więc gdzie zgłosić ten komunikat ? do czego ? do kogo ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />w zdecydowanej większości wypadków jest to po prostu bezcelowe ..... bo skoro nie działa transmisja I2C a zwykle nie jest ona dla zabawy tylko pełni istotną rolę w układzie wbudowanym, na tyle że bez niej zwykle działanie całego urządzenia staje się nonsensem ...<br /><br />dlatego jak nie działa to przynajmniej szybko wiadomo co <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i można to naprawić<br /><br />a takie pomysły na timeouty w prostej komunikacji I2C przychodzą do głowy, gdy ktoś ma poważne kłopoty ze zrobieniem elektroniki do tego - co w zdecydowanej większości wypadków jeśli chodzi o początkujących sprowadza się np do tego że nie dają rezystorów podciągających linie SDA i SCL do VCC i potem mają takie kwiatki. Tzn raz im to działa a raz nie - i wtedy zaczyna się poszukiwanie przyczyn że niby w programie, że się niby przydałyby timeouty <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> itp .... a po co ? jak się poprawnie zrobi I2C to śmiga aż miło ...<br /><br />oczywiście ten wywód nie obejmuje wszystkich przypadków na świecie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ale opowiadam to na podstawie BARDZO CZĘSTO zadawanych pytań i poszukiwań takiego rozwiązania kłopotu z jakim się kolega zwrócił w tym wątku.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 8 lip 2013, o 13:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-07-08T12:58:54+01:00</updated>
<published>2013-07-08T12:58:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3473&amp;p=41112#p41112</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3473&amp;p=41112#p41112"/>
<title type="html"><![CDATA[Re: Sprzętowy I2C przykład z książki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3473&amp;p=41112#p41112"><![CDATA[
Możesz zastosować softwerowy timer. Np, sprawdzać co 10ms czy flaga ACK została zmieniona, jeżeli nie to reset transmisji, albo error, czy co tam sobie ustawisz.<p>Statystyki: Napisane przez Gość — 8 lip 2013, o 12:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[CeBe]]></name></author>
<updated>2013-07-08T12:42:38+01:00</updated>
<published>2013-07-08T12:42:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3473&amp;p=41110#p41110</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3473&amp;p=41110#p41110"/>
<title type="html"><![CDATA[Sprzętowy I2C przykład z książki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3473&amp;p=41110#p41110"><![CDATA[
Witam,<br />jak można w prosty sposób wykrywać błąd transmisji I2C na przykładzie(RTC) z książki. Przy zastosowaniu tego programu i w przypadku braku transmisji układ cały czas czeka na sygnał ACK. Czy trzeba np w przerwaniu ustawiać jakąś flagę i pilnować prawidłowej transmisji?<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br />#include &quot;i2c_twi.h&quot;<br /><br />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 />}<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 />}<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 />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 />}<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 />return TWDR;<br />}<br /><br /><br /><br />void TWI_write_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 />while (len--) TWI_write(*buf++);<br />TWI_stop();<br />}<br /><br />void TWI_write_bajt( uint8_t SLA, uint8_t adr, uint8_t bajt ) {<br /><br />TWI_start();<br />TWI_write(SLA);<br />TWI_write(adr);<br />TWI_write(bajt);<br />TWI_stop();<br />}<br /><br /><br />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 /><span style="color: #FF0000">Kody wklejamy przy pomocy syntax=c - Zielony J.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=573">CeBe</a> — 8 lip 2013, o 12:42</p><hr />
]]></content>
</entry>
</feed>