Werte im Robo TX EEPROM speichern und lesen
Moderator: fischertechnik Mitarbeiter
Forumsregeln
Bitte beachte die Forumsregeln!
In dieser Unterkategorie können nur fischertechnik-Mitarbeiter und Moderatoren antworten!
Bitte beachte die Forumsregeln!
In dieser Unterkategorie können nur fischertechnik-Mitarbeiter und Moderatoren antworten!
Werte im Robo TX EEPROM speichern und lesen
Hallo,
Laut diesem Thread:
Variable im Flashspeicher speichern (Robo TX)
http://forum.ftcommunity.de/viewtopic.p ... lit=EEProm
scheint es mit dem in der I2C Bibliothek enthaltenen Treiber "EEPROM-TXintern" möglich zu sein, in dem im Robo TX enthaltenen I2C EEprom Werte zu speichern und wieder zu lesen.
Ist dies gefahrlos möglich?
Ist der interne Bereich geschützt, oder kann man da den Robo TX kaputt machen?
Welchen Adressbreich kann und darf man benutzen?
Grüße,
Stefan
Laut diesem Thread:
Variable im Flashspeicher speichern (Robo TX)
http://forum.ftcommunity.de/viewtopic.p ... lit=EEProm
scheint es mit dem in der I2C Bibliothek enthaltenen Treiber "EEPROM-TXintern" möglich zu sein, in dem im Robo TX enthaltenen I2C EEprom Werte zu speichern und wieder zu lesen.
Ist dies gefahrlos möglich?
Ist der interne Bereich geschützt, oder kann man da den Robo TX kaputt machen?
Welchen Adressbreich kann und darf man benutzen?
Grüße,
Stefan
- Dirk Haizmann ft
- fischertechnik Mitarbeiter
- Beiträge: 1126
- Registriert: 09 Nov 2010, 08:48
Re: Werte im Robo TX EEPROM speichern und lesen
Hallo,
es empfiehlt sich in diesem Fall das Studium der bereitgestellten Dokumentation, etwa:
C_Compiler_RoboTXC_V1.2.pdf, Seite 31, Kasten „Wichtige Hinweise“
oder
Windows_Library_ftMscLib_V1.5.11.pdf, Seite 47, ebenfalls Kasten „Wichtige Hinweise“
Wichtige Hinweise:
Die I2C-Geräteadresse (Device Address) ist laut I2C-Spezifikation mit nur 7 Bit anzugeben (Wertebereich: 0 – 127).
Weiterhin sind die I2C-Geräteadressen 80 und 84 (0x50 und 0x54) reserviert für ein internes EEPROM des ROBO TX-Controllers. Der Zugriff auf diese Adressen wird von der API nicht erlaubt. Die I2C-Geräteadressen 81-83 und 85-87 (0x51-0x53 und 0x55-0x57) sind ebenfalls von Speicherbereichen desselben EEPROMs belegt, werden aber von der Firmware nicht verwendet. Hier kann es (muss aber nicht) bei externen I2C-Geräten, die eine dieser Adressen verwenden, zu Buszugriffskonflikten kommen.
Um nun die Frage konkret zu beantworten:
Der Teil des EEPROMs (Adressen 0x50 und 0x54), der von uns verwendet wird, und damit nicht zur Verfügung steht, weder lesend noch schreibend, ist geschützt. Jeder Zugriffsversuch über die I2C-API darauf wird in der Firmware blockiert bzw. gar nicht ausgeführt. Auf die Address-Paare 0x51 und 0x55, 0x52 und 0x56 sowie 0x53 und 0x57 können die anderen 3 „Pages“ des EEPROM beliebig für Schreib- und Lesezugriffe verwendet werden. Das kann auch die Firmware nicht stören, selbst wenn da irgendein Unsinn drinstünde. Paarweise treten die I2C-Adressen für das EEPROM übrigens immer deswegen auf, weil der EEPROM-Speicher nicht alle Adress-Bits ausdekodiert. Zum Beispiel der Zugriff auf Adresse 0x51 landet physisch auf derselben Page im EEPROM wie 0x55. Man kann sich also einfach eine von beiden aussuchen. Jede Page im EEPROM umfasst 256 Bytes. Es gibt 4 Pages, 1 davon ist reserviert und damit 3 zur Ablage von User-Daten nutzbar.
Soviel von mir...
ft
es empfiehlt sich in diesem Fall das Studium der bereitgestellten Dokumentation, etwa:
C_Compiler_RoboTXC_V1.2.pdf, Seite 31, Kasten „Wichtige Hinweise“
oder
Windows_Library_ftMscLib_V1.5.11.pdf, Seite 47, ebenfalls Kasten „Wichtige Hinweise“
Wichtige Hinweise:
Die I2C-Geräteadresse (Device Address) ist laut I2C-Spezifikation mit nur 7 Bit anzugeben (Wertebereich: 0 – 127).
Weiterhin sind die I2C-Geräteadressen 80 und 84 (0x50 und 0x54) reserviert für ein internes EEPROM des ROBO TX-Controllers. Der Zugriff auf diese Adressen wird von der API nicht erlaubt. Die I2C-Geräteadressen 81-83 und 85-87 (0x51-0x53 und 0x55-0x57) sind ebenfalls von Speicherbereichen desselben EEPROMs belegt, werden aber von der Firmware nicht verwendet. Hier kann es (muss aber nicht) bei externen I2C-Geräten, die eine dieser Adressen verwenden, zu Buszugriffskonflikten kommen.
Um nun die Frage konkret zu beantworten:
Der Teil des EEPROMs (Adressen 0x50 und 0x54), der von uns verwendet wird, und damit nicht zur Verfügung steht, weder lesend noch schreibend, ist geschützt. Jeder Zugriffsversuch über die I2C-API darauf wird in der Firmware blockiert bzw. gar nicht ausgeführt. Auf die Address-Paare 0x51 und 0x55, 0x52 und 0x56 sowie 0x53 und 0x57 können die anderen 3 „Pages“ des EEPROM beliebig für Schreib- und Lesezugriffe verwendet werden. Das kann auch die Firmware nicht stören, selbst wenn da irgendein Unsinn drinstünde. Paarweise treten die I2C-Adressen für das EEPROM übrigens immer deswegen auf, weil der EEPROM-Speicher nicht alle Adress-Bits ausdekodiert. Zum Beispiel der Zugriff auf Adresse 0x51 landet physisch auf derselben Page im EEPROM wie 0x55. Man kann sich also einfach eine von beiden aussuchen. Jede Page im EEPROM umfasst 256 Bytes. Es gibt 4 Pages, 1 davon ist reserviert und damit 3 zur Ablage von User-Daten nutzbar.
Soviel von mir...
ft
-
- Beiträge: 116
- Registriert: 01 Nov 2010, 22:39
- Wohnort: Wabern CH-BE
Re: Werte im Robo TX EEPROM speichern und lesen
Hallo,
aber ist es denn dadurch auch nicht möglich ein oder mehrere Programm(e), die sich eventuell in einer dieser Pages befindet zu überschreiben?
aber ist es denn dadurch auch nicht möglich ein oder mehrere Programm(e), die sich eventuell in einer dieser Pages befindet zu überschreiben?
Re: Werte im Robo TX EEPROM speichern und lesen
Hallo FischerPapa,
keine Sorge - Programme werden im EEPROM nicht gespeichert, dazu wäre es viel zu klein. Programme werden entweder im RAM oder im Flash gespeichert.
Der wichtige Systembereich des EEPROM ist - wie oben bereits erwähnt - gegen Überschreiben geschützt. Man kann also nichts falsch machen.
keine Sorge - Programme werden im EEPROM nicht gespeichert, dazu wäre es viel zu klein. Programme werden entweder im RAM oder im Flash gespeichert.
Der wichtige Systembereich des EEPROM ist - wie oben bereits erwähnt - gegen Überschreiben geschützt. Man kann also nichts falsch machen.
Gruß
Thomas
Thomas
-
- Beiträge: 116
- Registriert: 01 Nov 2010, 22:39
- Wohnort: Wabern CH-BE
Re: Werte im Robo TX EEPROM speichern und lesen
Achso ok. Aber auf den Flash kann man keine Daten hinterlegen oder?
Also kann man dann auf den EEPROM in RoboPro mit den I2C-Elementen zugreifen?
Also kann man dann auf den EEPROM in RoboPro mit den I2C-Elementen zugreifen?
- Dirk Haizmann ft
- fischertechnik Mitarbeiter
- Beiträge: 1126
- Registriert: 09 Nov 2010, 08:48
Re: Werte im Robo TX EEPROM speichern und lesen
.. im Rahmen der oben beschriebenen Rahmenbedingungen kann man auf das EEPROM zugreifen.
ft
ft