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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-08-09T22:20:45+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=12587&amp;mode</id>
<entry>
<author><name><![CDATA[ShutDownSystem]]></name></author>
<updated>2015-08-09T22:20:45+01:00</updated>
<published>2015-08-09T22:20:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12587&amp;p=136903#p136903</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12587&amp;p=136903#p136903"/>
<title type="html"><![CDATA[Re: 24c16 - odczyt]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12587&amp;p=136903#p136903"><![CDATA[
Tak, działa. Już tłumaczę panie kolego. Otóż jak wiadomo układ 24c16 to tak naprawdę kilka kości EEP w jednym scalaku. Gdybyśmy chcieli się odwołać do adresu komórki pamięci dec 340, czyli binarnie 101010100 przekroczymy 8bitowy adres o 1 bit. Dlatego aby odwołać się do tego adresu komórki musimy zapisać te 'wystające' bity do adresu scalaka ( 1010xxx0 ) , w miejsce x. W tej części (subAddr&gt;&gt;8), 101010100  przesuniemy o 8 , czyli zostanie nam 000000001. Teraz wystarczy przesunąć to znów o 1, do 000000010. Teraz gdy wykonamy operacje OR - 1010xxx0 |  000000010 = 10100010 otrzymamy adres jednej z wielu kości w tym scalaku. Jak wiadomo z noty, bit R w adresie scalaczka 1010xxxR oznacza tryb READ lub WRITE. W późniejszej linijce dodajemy do adresu 1, aby ustawić ten bit na 1, by dać wygnał kości, że będzie odczyt.<br /><br />Mam nadzieję, że jest to choć trochę zrozumiałe. Polecam wziąć kawałek kartki i sobie po kolei rozrysować wszystkie operacje. Szybciej się da zrozumieć.<br /><br />Polecam do lektury: <a href="http://radzio.dxp.pl/eeprom/24c01-24c16.htm"  class="postlink">Klik</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4804">ShutDownSystem</a> — 9 sie 2015, o 22:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daniel880]]></name></author>
<updated>2015-08-09T20:41:36+01:00</updated>
<published>2015-08-09T20:41:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12587&amp;p=136895#p136895</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12587&amp;p=136895#p136895"/>
<title type="html"><![CDATA[Re: 24c16 - odczyt]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12587&amp;p=136895#p136895"><![CDATA[
Działa czy nie działa?? <br /><br />Bardzo dziwnie wysyłasz adres?<br />Możesz wytłumaczyć o co dokładnie chodzi w tej lini?<br /><div class="quotetitle">ShutDownSystem napisał(a):</div><div class="quotecontent"><br />TWI_write( device | ((subAddr&gt;&gt;8)&lt;&lt;1) );<br /></div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2328">Daniel880</a> — 9 sie 2015, o 20:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ShutDownSystem]]></name></author>
<updated>2015-08-09T15:26:58+01:00</updated>
<published>2015-08-09T15:26:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12587&amp;p=136864#p136864</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12587&amp;p=136864#p136864"/>
<title type="html"><![CDATA[Re: 24c16 - odczyt]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12587&amp;p=136864#p136864"><![CDATA[
Nigdy nie można się poddawać i przejrzeć wszystko jeszcze od nowa <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />[syntax=c]void EI2C_read_buf(u08 device, u16 subAddr, u16 len, u08 *buf) {<br /><br />while (len--) {<br />TWI_start();<br />TWI_write( device | ((subAddr&gt;&gt;8)&lt;&lt;1) );<br />TWI_write(subAddr);<br />TWI_start();<br />TWI_write( (device | ((subAddr&gt;&gt;8)&lt;&lt;1)) + 1);<br />*buf++ = TWI_read( NACK );<br />TWI_stop();<br />subAddr++;<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4804">ShutDownSystem</a> — 9 sie 2015, o 15:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ciamciak]]></name></author>
<updated>2015-08-09T13:28:06+01:00</updated>
<published>2015-08-09T13:28:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12587&amp;p=136859#p136859</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12587&amp;p=136859#p136859"/>
<title type="html"><![CDATA[Re: 24c16 - odczyt]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12587&amp;p=136859#p136859"><![CDATA[
Gdzieś ucina pierwszy bajt adresu i z 272, robi się 10, albo powyżej 256 trzeba jakoś inaczej adresować.<br />Nie bawiłem się tym.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1254">ciamciak</a> — 9 sie 2015, o 13:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ShutDownSystem]]></name></author>
<updated>2015-08-09T14:42:04+01:00</updated>
<published>2015-08-09T12:49:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12587&amp;p=136855#p136855</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12587&amp;p=136855#p136855"/>
<title type="html"><![CDATA[24c16 - odczyt]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12587&amp;p=136855#p136855"><![CDATA[
Witam serdecznie!<br />Bawię się z kością EEpromu 24c16 Atmela. Załadowałem do kości trochę danych (wycinek):<br /><a href="https://obrazkiforum.atnel.pl/4804/db84e637b92cb925f9b9746dfaebad56.PNG"  class="postlink">https://obrazkiforum.atnel.pl/4804/db84e637b92cb925f9b9746dfaebad56.PNG</a><br /><br />Gdy próbuje odczytać dane z adresu 16 i długości 7 dostaję &quot;KWIATEK&quot;, adres 32 i długość 7 dostaję &quot;PUDELKO&quot;. Idąc tym tropem, gdy próbuję odczytać z adresu 272 i długości 9 powinienem dostać &quot;TROLOLOLO&quot;, ale dostaje &quot;KWIATEK&quot; i dwa puste znaki. Kiedy poproszę o dane z adresu 256 dostaje swoje imię.<br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 04-04-2015<br /> *      Author: x<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;ctype.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />#include &quot;I2C_TWI/i2c_twi.h&quot;<br />#include &quot;MK_USART/mkuart.h&quot;<br /><br />#define LED2_PIN (1&lt;&lt;PD7)<br />#define LED2_ON PORTD |= LED2_PIN<br />#define LED2_OFF PORTD &amp;= ~LED2_PIN<br />#define LED2_TOG PORTD ^= LED2_PIN<br /><br />#define E24C16_ADDR 0xA0<br /><br />typedef unsigned char  u08;<br />typedef unsigned short u16;<br /><br />void EI2C_read_buf(u08 device, u16 subAddr, u16 len, u08 *buf);<br />void EI2C_write_buf(u08 device, u16 subAddr, u16 len, u08 *buf);<br /><br />uint8_t bo&#91;17&#93;;<br /><br />uint8_t bufx&#91;50&#93; = &quot;nop&quot;;<br /><br />int main()<br />{<br /><br />DDRD |= LED2_PIN;<br /><br />USART_Init( __UBRR );<br />i2cSetBitrate( 100 );<br /><br />sei();<br />LED2_ON;<br />uart_puts((char*)bufx);<br /><br />while(1)<br />{<br />EI2C_read_buf(E24C16_ADDR, 272, 16, bo );<br />uart_puts( (char*)bo );<br />_delay_ms(1000);<br />}<br />}<br /><br /><br />void EI2C_read_buf(u08 device, u16 subAddr, u16 len, u08 *buf) {<br /><br />while (len--) {<br />TWI_start();<br />TWI_write(device | ((subAddr&gt;&gt;8)&lt;&lt;1) );<br />TWI_write(subAddr);<br />TWI_start();<br />TWI_write(device + 1);<br />*buf++ = TWI_read( NACK );<br />TWI_stop();<br />subAddr++;<br />}<br />}<br /><br />void EI2C_write_buf(u08 device, u16 subAddr, u16 len, u08 *buf) {<br /><br />while (len--) {<br />TWI_start();<br />TWI_write( device | ((subAddr&gt;&gt;8)&lt;&lt;1) );<br />TWI_write(subAddr);<br />TWI_write(*buf++);<br />TWI_stop();<br />_delay_ms(10);<br />subAddr++;<br />}<br />}[/syntax]<br /><br />Cóż na to poradzić? Z góry dziękuję wszystkim za pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4804">ShutDownSystem</a> — 9 sie 2015, o 12:49</p><hr />
]]></content>
</entry>
</feed>