Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

I2C EEPROM Kategorie: Programmierung (von Patrick - 11.04.2005 11:11)
Ich nutze:
C-Control II Unit, CC2-Application-Board, OSOPT V3.0
Hallo,

leider habe ich noch Probleme beim Verständnis der Speicherorganisation der EEPROMs.
Bei dem EEPROM handelt es sich um ein AT24C512.

> byte      config[10], config1[10];
> int       error;
>
> error = eeprom.writebytearray(0,  32, config , 10);
> error = eeprom.readbytearray (0,  32, config1, 10);
>

ich habe mal den Programmcode von Udo nachprogrammiert und um ein paar Anweisungen erweitert.
Leider verstehe ich immer noch nicht, wie die Daten adressiert werden.
Folgenden Programmcode nutze ich mal, um mein problem zu erläutern.


thread main{
  byte      config[10], config1[10];
  int       error, i;
  config[0]=2;
  config[1]=5;
  config[2]=11;
  config[3]=14;
  config[4]=19;
  config[5]=25;
  config[6]=28;
  config[7]=32;
  config[8]=36;
  config[9]=40;
  error = eeprom.writebytearray(0,32, config,10);
  string s;
  s="test2";
  error = eeprom.writestr(0,36,s);
 
  hwcom.setspeed(8);
  hwcom.clr();
  hwcom.print("EEPROM-MAP");
  hwcom.ret();
  hwcom.ret();
  error = eeprom.readbytearray(0,32,config1,10);

  hwcom.print("addr");
  hwcom.tab();
  hwcom.print("value");
  hwcom.ret();
  for i = 0 ... 9{
    hwcom.num(i+32);
    hwcom.tab();
    hwcom.num(config1[i]);
    hwcom.ret();
  }
  s="";
  eeprom.readstr(0,36,s);
  hwcom.print(s);

  quit 1;
}


Der Output bei der Ausführung sieht wie folgt aus:

EEPROM-MAP

addr    value
32      116
33      101
34      115
35      116
36      50
37      0
38      0
39      0
40      0
41      0
test2


Das verstehe ich aber nicht ganz,
das error = eeprom.writebytearray(0,32, config,10);
schreibt doch auf die entsprechenden Adressen das hier(funktioniert auch):


addr    value
32      2
33      5
34      11
35      14
36      19
37      25
38      28
39      32
40      36
41      40


Wenn jetzt error = eeprom.writestr(0,36,s); folgt sollte es doch folgenden Output geben:


addr    value
32      2
33      5
34      11
35      14
36      116
37      101
38      115
39      116
40      50
41      0


32,33,34 und 35 sollten doch eigentlich unberührt bleiben oder?

Eine weitere Frage:
schreibt ein String immer die vollen 30 Byte , auch bei nur einem Buchstaben ? Bin mir nicht mehr
ganz sicher, aber ich meine dem war so ;-)

Vielen Dank im vorraus für eure Hilfe!


    Antwort schreiben


Antworten:

Re: I2C EEPROM (von Udo - 11.04.2005 13:10)
    Re: I2C EEPROM (von Patrick - 18.04.2005 14:14)
        Re: I2C EEPROM (von Udo - 19.04.2005 21:05)
            Re: I2C EEPROM (von Patrick - 22.04.2005 16:07)
                Re: I2C EEPROM (von Udo - 26.04.2005 14:18)