Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: elegante EEPROM-Adressierung oberhalb 32KByte? Kategorie: C-Control I V1.2/2.0 (von André H. - 6.09.2004 13:13)
 Als Antwort auf elegante EPROM-Adressierung oberhalb 32KByte? von Carsten - 6.09.2004 10:41
Hallo Carsten,

> Meine Frage: Ich hab ein 64KB Speichermodul. Die Adressierung ist im unteren Bereich (bis 32 KB) recht einfach, indem man die gewünschte Adresse in ein Word schreibt und dann aus 2 Bytes auf der gleichen Speicheradresse wie das Word (Hi/Lo) die Werte zum Adressieren nimmt (wie im Beispielprogramm gezeigt). Leider funktioniert das aber nur bis 32KByte, dann hört der Wertebereich des Words auf, oder?
>

Bei der C-Control I ist der größte Bereich Integer(bzw. Word) dieser geht von -32768 bis +32767.
Einen größeren Bereich kann man direkt nicht verwenden.
Als HEX-Zahl sieht dies folgendermaßen aus:
0 bis 32768 = &h0000 bis &h7FFF
-32768 bis -1 = &h8000 bis &hFFFF
Du benötigst für das EEProm aber Adresswerte von 32768 bis 65535.
Dieser ist allerdings als HEX geschrieben ebenfalls &h8000 bis &hFFFF.
Kurz: Du kannst für die Oberen 32kB einfach -32768 bis -1 schreiben.
Ich würde aber die HEX-Schreibweise vorziehen, damit es übersichtlich bleibt.

Im Prinzip sieht es dann einfach so aus:
z.B. ansprechen von Byte 40000 (=&h9C40)

Define Adresse Word[1]
Define HiByte[1]
Define LoByte[2]

Adresse = &h9C40


Obwohl hier eigentlich nach Word-Spezifikation negative Zahl steht (&h9C40 = -25536),
wäre das für die Adressierung egal. ;-)
Selbst in einer For-Schleife sollte es keine Rolle spielen,
Wenn Du z.B.
for i = &h7F00 to &h9000

schreibst, da hier die Forschleife erst abgebrochen wird, sobald der Endwert erreicht wurde.
Ob der aktuelle Wert nun drüber oder drunter liegt, ist egal.
Statt dieser Zeile könnte man auch folgendes schreiben:
for i = 32512 to 36864
oder
for i = 32512 to -28672
Dies bedeutet alles dasselbe.


> Man kann also den halben EPROM nutzen (der für meine Anwendung beispielhaft per 1000 Byte organisiert sein soll) indem man schreibt
>
> for i = 0 to 32 Step 1000
>   'bilde Adresse aus word "i"
>   'lese / schreibe EPROM-Speichermodul
> next i
 
Ähh, das wird nicht ganz gehen, da hier die For-Schleife erst nach grob geschätzt
65 x 13 = 845 durchläufen für i die 32 erreicht.

Du meintest Wohl eher for i = 0 to 32000 Step 1000 ?
Allerdings würde ich hier wiederum lieber in 1024-Blöcke aufteilen, da Du sonst
früher oder später Probleme mit den Pagegrenzen bekommst.

MfG André H.

 Antwort schreiben

Bisherige Antworten:

Re: elegante EEPROM-Adressierung oberhalb 32KByte? (von Achim - 6.09.2004 13:46)
    Re: elegante EEPROM-Adressierung oberhalb 32KByte? (von André H. - 6.09.2004 14:53)
        Re: elegante EEPROM-Adressierung oberhalb 32KByte? (von Achim - 6.09.2004 15:37)
            Re: elegante EEPROM-Adressierung oberhalb 32KByte? (von André H. - 6.09.2004 20:23)
                Re: elegante EEPROM-Adressierung oberhalb 32KByte? (von Achim - 7.09.2004 0:24)
                    Re: elegante EEPROM-Adressierung oberhalb 32KByte? (von Carsten - 7.09.2004 11:17)
                       Re: elegante EEPROM-Adressierung oberhalb 32KByte? (von Achim - 7.09.2004 14:44)