Das 32-K-EEPROM 24C256

(siehe auch hier)


Seit kurzer Zeit stellt ATMEL mit dem 24C256 ein 32-K-EEPROM her, das sich direkt in den Speichersockel der Control-Unit einsetzen läßt. Das Betriebssystem erkennt den Chip an und verwaltet nun problemlos 32 K.

Datenblatt des 24C256 lesen (direktes Lesen mit dem Akrobat Reader auf der CD)

Der originale 24C65 verwendet intern nur einen 13-Bit-Adresszeiger zur Verwaltung von 8 Kilobyte. Ein Blick in die Quelltexte des Betriebssystems zeigt, dass dort ein 16-Bit-Adresszeiger verwendet wird, so dass theoretisch mit bis zu 64 K gearbeitet werden kann. Ein weiteres Indiz dafür ist der beobachtete Speicherüberlauf bei zu langen Datenfiles. Das System scheint keine Obergrenze für den Speicher zu überwachen, so dass bei einem Überschreiten der Obergrenze das BASIC-Programm ab Adresse 0000 überschrieben wird, weil dann der interne 13-Bit-Zeiger des 24C65 überläuft. Diese Tatsache hat schon so manchen Absturz und schmerzliche Datenverluste verursacht. Für den Speicheraustausch erweist sie sich jedoch als Vorteil. Alle Tests haben gezeigt: Es klappt, man kann die Control-Unit mit dem 24C256 ausrüsten. Das folgende Testprogramm schreibt 30000 Bytes in das EEPROM.

EEPROM32.BAS starten

Es werden 1500 Words geschrieben, aber weit mehr zurückgelesen. Man kann dabei beobachten, dass ein Adressüberlauf eintritt und man am Ende Daten liest, die zum Basic-Programm ab Adresse 0000 gehören. Falls Sie übrigens dieses Programm mit einem normalen 8-K-EEPROM starten, wird es nie zum Auslesen kommen, weil das Basic-Programm schon vorher überschrieben wird.

Unter ganz bestimmten Voraussetzungen kann es zu Problemen mit dem EEPROM 24C256 kommen: Beim Ablegen von Daten mit print# verwendet der Basic-Interpreter in der CC-Unit den Block-Schreibmodus, bei dem beide Bytes eines Word nacheinander geschrieben und erst mit der I²C-Stoppbedingung programmiert werden. Laut Datenblatt dürfen bis zu 64 Bytes in einem Block geschrieben werden. Anders als beim 24C65 muss man dabei jedoch in einer 64-Byte-Reihe des Speicher-Arrays bleiben. Bei einem Übertrag wird die Reihenadresse nicht automatisch inkrementiert. Wenn also Words auf ungerade Adressen geschrieben werden, kommt es nach jeweils 32 Schreibzugriffen zu einem Schreibfehler. Dieser tritt also nur dann ein, wenn das Basic-Programm eine ungrade Anzahl von Bytes enthält. Die neueste Version des CC-Basic-Compilers erzeugt automatisch gerade Bytelängen. Wenn Sie eine ältere Version verwenden, sollten Sie ein Programm zur Probe einmal compilieren und dann bei Bedarf ein zusätzliches END anfügen, um auf eine gerade Programmlänge zu kommen.