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

Re: eeprom über I2C-Bus Kategorie: I²C-Bus (von Patrick - 8.04.2005 8:56)
Als Antwort auf Re: eeprom über I2C-Bus von Udo - 25.03.2005 17:47
Ich nutze:
C164CI-ControllerBoard, CC2-Application-Board, OSOPT V3.0
> byte      config[10], config1[10];
> int       error;
>
> error = eeprom.writebytearray(0,  32, config , 10);
> error = eeprom.readbytearray (0,  32, config1, 10);
>


Hallo Udo,

ich habe deinen Programmcode mal 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: