<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Eprom on csegura</title><link>http://blog.romheat.net/tags/eprom/</link><description>Recent content in Eprom on csegura</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 04 Mar 2011 00:00:00 +0100</lastBuildDate><atom:link href="http://blog.romheat.net/tags/eprom/index.xml" rel="self" type="application/rss+xml"/><item><title>Arduino LC24XX EPROM (paginated 2)</title><link>http://blog.romheat.net/posts/2011/11_03_04_arduino_lc24xx_paginated2/</link><pubDate>Fri, 04 Mar 2011 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2011/11_03_04_arduino_lc24xx_paginated2/</guid><description>&lt;p>Finalmente he hecho una biblioteca I2C_eeprom.
Hay una parte que merece una explicación es el hecho de que estas memorias EEPROM tienen un modo de escritura más rápida (Page Write), en este modo podemos escribir 64bytes de golpe con lo que el proceso de escritura es considerablemente más rápido.
Este modo viene explicado en el datasheet de estas eeproms.
La cosa es que cuando he ido a implementarlo he tenido bastantes problemas.
Lo que he estado programando usa la biblioteca Wire, que a su vez usa unas funciones definidas en Wire\Utility\Twi.h (Two Wire Interface??)
Bien, tanto Wire como Twi usan un buffer interno de 32bytes, y el 24lc256 usa páginas internas de 64bytes, de modo que hay que ajustar estas dos bibliotecas para poder usar el método write_bytes_fast otra cosa importante es que este método no es capaz de saltar de dispositivo, así que estamos limitados a 32k, más que suficiente.
La segunda cosa es que los bloques de 64 bytes deben escribirse completamente, es decir que en cada operación no se pueden escribir ni más ni menos y deben escribirse en su sitio. En 32k hay 512 páginas de 64bytes.
Nota: para usar fast hay que modificar el tamaño del buffer en wire.h y twi.h pero en ambas hay que usar un buffer de 66Bytes, esto es debido a que el direccionamiento
previo son dos Bytes.&lt;/p></description></item><item><title>Arduino LC24XX EPROM</title><link>http://blog.romheat.net/posts/2011/11_03_03_arduinolc24xx_eprom/</link><pubDate>Thu, 03 Mar 2011 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2011/11_03_03_arduinolc24xx_eprom/</guid><description>&lt;p>Código&lt;/p>
&lt;p>El código que amplia la biblioteca Wire para usar EEPROMs 24lcXX
&lt;a href="http://www.arduino.cc/playground/Code/I2CEEPROM" target="_blank">http://www.arduino.cc/playground/Code/I2CEEPROM&lt;/a>&lt;/p>
&lt;p>La biblioteca Wire
&lt;a href="http://arduino.cc/en/Reference/Wire" target="_blank">http://arduino.cc/en/Reference/Wire&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;Wire.h&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">I2C_eeprom_write_byte&lt;/span>( &lt;span style="color:#66d9ef">int&lt;/span> deviceAddress, &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">int&lt;/span> address, byte data )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">int&lt;/span> rdata &lt;span style="color:#f92672">=&lt;/span> data;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">beginTransmission&lt;/span>(deviceAddress);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>((&lt;span style="color:#66d9ef">int&lt;/span>)(address &lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#ae81ff">8&lt;/span>)); &lt;span style="color:#75715e">// MSB
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>((&lt;span style="color:#66d9ef">int&lt;/span>)(address &lt;span style="color:#f92672">&amp;amp;&lt;/span> &lt;span style="color:#ae81ff">0xFF&lt;/span>)); &lt;span style="color:#75715e">// LSB
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>(rdata);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">endTransmission&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">delay&lt;/span>(&lt;span style="color:#ae81ff">10&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">I2C_eeprom_write_page&lt;/span>( &lt;span style="color:#66d9ef">int&lt;/span> deviceAddress, &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">int&lt;/span> addressPage, byte&lt;span style="color:#f92672">*&lt;/span> data, byte length )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">beginTransmission&lt;/span>(deviceAddress);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>((&lt;span style="color:#66d9ef">int&lt;/span>)(addressPage &lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#ae81ff">8&lt;/span>)); &lt;span style="color:#75715e">// MSB
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>((&lt;span style="color:#66d9ef">int&lt;/span>)(addressPage &lt;span style="color:#f92672">&amp;amp;&lt;/span> &lt;span style="color:#ae81ff">0xFF&lt;/span>)); &lt;span style="color:#75715e">// LSB
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> byte c;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">for&lt;/span> ( c &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>; c &lt;span style="color:#f92672">&amp;lt;&lt;/span> length; c&lt;span style="color:#f92672">++&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>(data[c]);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">endTransmission&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>byte &lt;span style="color:#a6e22e">I2C_eeprom_read_byte&lt;/span>( &lt;span style="color:#66d9ef">int&lt;/span> deviceAddress, &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">int&lt;/span> address )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> byte rdata &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0xFF&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">beginTransmission&lt;/span>(deviceAddress);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>((&lt;span style="color:#66d9ef">int&lt;/span>)(address &lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#ae81ff">8&lt;/span>)); &lt;span style="color:#75715e">// MSB
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>((&lt;span style="color:#66d9ef">int&lt;/span>)(address &lt;span style="color:#f92672">&amp;amp;&lt;/span> &lt;span style="color:#ae81ff">0xFF&lt;/span>)); &lt;span style="color:#75715e">// LSB
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> Wire.&lt;span style="color:#a6e22e">endTransmission&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">requestFrom&lt;/span>(deviceAddress,&lt;span style="color:#ae81ff">1&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (Wire.&lt;span style="color:#a6e22e">available&lt;/span>()) rdata &lt;span style="color:#f92672">=&lt;/span> Wire.&lt;span style="color:#a6e22e">receive&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">return&lt;/span> rdata;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">I2C_eeprom_read_buffer&lt;/span>( &lt;span style="color:#66d9ef">int&lt;/span> deviceAddress, &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">int&lt;/span> address, byte &lt;span style="color:#f92672">*&lt;/span>buffer, &lt;span style="color:#66d9ef">int&lt;/span> length )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">beginTransmission&lt;/span>(deviceAddress);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>((&lt;span style="color:#66d9ef">int&lt;/span>)(address &lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#ae81ff">8&lt;/span>)); &lt;span style="color:#75715e">// MSB
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>((&lt;span style="color:#66d9ef">int&lt;/span>)(address &lt;span style="color:#f92672">&amp;amp;&lt;/span> &lt;span style="color:#ae81ff">0xFF&lt;/span>)); &lt;span style="color:#75715e">// LSB
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> Wire.&lt;span style="color:#a6e22e">endTransmission&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">requestFrom&lt;/span>(deviceAddress,length);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">int&lt;/span> c &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">for&lt;/span> ( c &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>; c &lt;span style="color:#f92672">&amp;lt;&lt;/span> length; c&lt;span style="color:#f92672">++&lt;/span> )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (Wire.&lt;span style="color:#a6e22e">available&lt;/span>()) buffer[c] &lt;span style="color:#f92672">=&lt;/span> Wire.&lt;span style="color:#a6e22e">receive&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>} 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">//*************************************************************************************************
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#66d9ef">static&lt;/span> &lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">DumpHex&lt;/span>(&lt;span style="color:#66d9ef">int&lt;/span> deviceAddress, &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">long&lt;/span> startAddress, &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">long&lt;/span> endAddress)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">int&lt;/span> value;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">int&lt;/span> lineCounter;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">char&lt;/span> textBuffer[&lt;span style="color:#ae81ff">24&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">long&lt;/span> address;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> lineCounter &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> address &lt;span style="color:#f92672">=&lt;/span> startAddress;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">while&lt;/span> (address &lt;span style="color:#f92672">&amp;lt;&lt;/span> endAddress)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">sprintf&lt;/span>(textBuffer, &lt;span style="color:#e6db74">&amp;#34;0x%05X - &amp;#34;&lt;/span>, address);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(textBuffer);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">sprintf&lt;/span>(textBuffer, &lt;span style="color:#e6db74">&amp;#34;0x%05X - &amp;#34;&lt;/span>, address &lt;span style="color:#f92672">+&lt;/span> (endAddress &lt;span style="color:#f92672">-&lt;/span> startAddress));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(textBuffer);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> textBuffer[&lt;span style="color:#ae81ff">0&lt;/span>] &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">for&lt;/span> (&lt;span style="color:#66d9ef">int&lt;/span> dumpCounter&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">0&lt;/span>; dumpCounter&lt;span style="color:#f92672">&amp;lt;&lt;/span>&lt;span style="color:#ae81ff">16&lt;/span>; dumpCounter&lt;span style="color:#f92672">++&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> value &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#a6e22e">I2C_eeprom_read_byte&lt;/span>(deviceAddress,address);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(value,HEX);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(&lt;span style="color:#e6db74">&amp;#34; &amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> ((value &lt;span style="color:#f92672">&amp;gt;=&lt;/span> &lt;span style="color:#ae81ff">0x20&lt;/span>) &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> (value &lt;span style="color:#f92672">&amp;lt;&lt;/span> &lt;span style="color:#ae81ff">0x7f&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> textBuffer[dumpCounter &lt;span style="color:#f92672">%&lt;/span> &lt;span style="color:#ae81ff">16&lt;/span>] &lt;span style="color:#f92672">=&lt;/span> value;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> textBuffer[dumpCounter &lt;span style="color:#f92672">%&lt;/span> &lt;span style="color:#ae81ff">16&lt;/span>] &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#39;.&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> address&lt;span style="color:#f92672">++&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> textBuffer[&lt;span style="color:#ae81ff">16&lt;/span>] &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>; 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(textBuffer); 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">I2C_eeprom_delete&lt;/span>(&lt;span style="color:#66d9ef">int&lt;/span> deviceAddress, &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">long&lt;/span> startAddress, &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">long&lt;/span> endAddress)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{ 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">for&lt;/span>(&lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">long&lt;/span> address&lt;span style="color:#f92672">=&lt;/span>startAddress; address &lt;span style="color:#f92672">&amp;lt;&lt;/span> endAddress &lt;span style="color:#f92672">+&lt;/span> &lt;span style="color:#ae81ff">1&lt;/span>; address&lt;span style="color:#f92672">++&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (&lt;span style="color:#a6e22e">I2C_eeprom_read_byte&lt;/span>(deviceAddress,address) &lt;span style="color:#f92672">!=&lt;/span> &lt;span style="color:#ae81ff">0xFF&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(address,HEX);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">I2C_eeprom_write_byte&lt;/span>(deviceAddress,address,&lt;span style="color:#ae81ff">0xFF&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#define EEPROM_DEVICE 0x50
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#define EEPROM_INIT 0x00000
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#define EEPROM_END 0x08000
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">setup&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">begin&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">begin&lt;/span>(&lt;span style="color:#ae81ff">9600&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">long&lt;/span> ms;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Deleting..&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ms &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#a6e22e">millis&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">I2C_eeprom_delete&lt;/span>(EEPROM_DEVICE,EEPROM_INIT,EEPROM_END);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(&lt;span style="color:#a6e22e">millis&lt;/span>()&lt;span style="color:#f92672">-&lt;/span>ms);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;ms&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;---- Dump ---&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">DumpHex&lt;/span>(EEPROM_DEVICE,EEPROM_INIT,EEPROM_INIT&lt;span style="color:#f92672">+&lt;/span>&lt;span style="color:#ae81ff">0x0f&lt;/span>); 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">DumpHex&lt;/span>(EEPROM_DEVICE,EEPROM_END&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0x0f&lt;/span>,EEPROM_END); 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;---- Write at begin ---&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">DumpHex&lt;/span>(EEPROM_DEVICE,EEPROM_INIT,EEPROM_INIT&lt;span style="color:#f92672">+&lt;/span>&lt;span style="color:#ae81ff">0x0f&lt;/span>); 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Writing...&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">I2C_eeprom_write_byte&lt;/span>(EEPROM_DEVICE,EEPROM_INIT,&lt;span style="color:#ae81ff">0xCC&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">I2C_eeprom_write_byte&lt;/span>(EEPROM_DEVICE,EEPROM_INIT&lt;span style="color:#f92672">+&lt;/span>&lt;span style="color:#ae81ff">0x0f&lt;/span>,&lt;span style="color:#ae81ff">0xCC&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">DumpHex&lt;/span>(EEPROM_DEVICE,EEPROM_INIT,EEPROM_INIT&lt;span style="color:#f92672">+&lt;/span>&lt;span style="color:#ae81ff">0x0f&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;---- Writte at end ---&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">DumpHex&lt;/span>(EEPROM_DEVICE,EEPROM_END&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0x0F&lt;/span>,EEPROM_END); 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Writing...&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">I2C_eeprom_write_byte&lt;/span>(EEPROM_DEVICE,EEPROM_END,&lt;span style="color:#ae81ff">0xCC&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">I2C_eeprom_write_byte&lt;/span>(EEPROM_DEVICE,EEPROM_END&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0x0f&lt;/span>,&lt;span style="color:#ae81ff">0xCC&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">DumpHex&lt;/span>(EEPROM_DEVICE,EEPROM_END&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0x0f&lt;/span>,EEPROM_END); 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;---- end ---&amp;#34;&lt;/span>); 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">//DumpHex(EEPROM_DEVICE,EEPROM_INIT,EEPROM_INIT+0x0f);
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> &lt;span style="color:#75715e">//DumpHex(EEPROM_DEVICE,EEPROM_END-0x0f,EEPROM_END); 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">loop&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>He añadido l2C_eeprom_delete para borrar la eeprom, . Tambien he añadido un delay(5) tras cada operación de escritura debido a que si no, no me escribia bien.&lt;/p></description></item><item><title>Arduino LC24XX EPROM (paginated)</title><link>http://blog.romheat.net/posts/2011/11_03_03_arduino_lc24xx_paginated/</link><pubDate>Thu, 03 Mar 2011 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2011/11_03_03_arduino_lc24xx_paginated/</guid><description>&lt;p>Habia algunas cosas que no me cuadraban &amp;hellip;&lt;/p>
&lt;p>Lógico.&lt;/p>
&lt;p>Con la biblioteca actual Wire y las funciones I2C_eeprom de (&lt;a href="http://www.arduino.cc/playground/Code/I2CEEPROM" target="_blank">http://www.arduino.cc/playground/Code/I2CEEPROM&lt;/a>) .. me he dado cuenta de que las direciones van en un entero (int) que en arduino, son 2 Bytes (16 bits) y con eso no podemos escribir más alla de los 64k, de modo que he cambiaod el código para usar un sistema de páginación.&lt;/p>
&lt;p>Por ejemplo con 4 24lc256 tendriamos 4 páginas de 32k lo resumo en estas dos funciones&lt;/p></description></item></channel></rss>