McNugget
20.12.2005, 18:51
Hallo da,
ich habe schon zum Thema gesucht, aber das einzige was ich finden konnte, waren Informationen diesbezüglich das MakeFile betreffend.
Es geht darum, dass ich gerne die GameBoyCamera auslesen möchte und die Daten nicht direkt per RS232 übertragen werden sollen.
Deswegen habe ich eine Platine mit einem 74LS573 und einem 32KB SRAM von Cypress gebaut, dass ich an meine Mega128 Platine anstecken kann.
Soweit so gut.
Jetzt das Problem: Da die Camera ein Format von 128*123 hat, wollte ich ein 8-Bit Array initialisieren, dass entweder
bild[128][123] oder
bild[16380] groß ist.
Das geht natürlich nur, wenn der externe Speicher auch läuft.
Dazu habe ich also folgende Zeile im Makefile freigeschaltet:
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
# used for variables (.data/.bss) and heap (malloc()).
EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
Weil das warscheinlich nicht reicht, habe ich in meiner Initialisierung noch das folgende programmiert:
MCUCR &= (1 << SRE);
XMCRA &= (~1 << XMBK);
XMCRB &= ~(1 << XMM2);
XMCRB &= (1 << XMM1);
XMCRB &= ~(1 << XMM0);
printf("MCUCR has the following value: %d\n", MCUCR);
printf("XMCRA has the following value: %d\n", XMCRA);
printf("XMCRB has the following value: %d\n", XMCRB);
Die printf-Befehle senden an meinen PC. Es kommt überall "0" heraus. Es gibt jetzt drei Möglichkeiten:
- man kann die Register so garnicht setzen und seswegen kommt null raus,
- man kann die Register so nicht auslesen
- oder beides... :P
Wie habt ihr externen Speicher initialisiert? Habt ihr vielleicht beispielcode für mich?
Muss ich was bei der Variablendeklaration beachten?
Gruß und danke,
Timo
ich habe schon zum Thema gesucht, aber das einzige was ich finden konnte, waren Informationen diesbezüglich das MakeFile betreffend.
Es geht darum, dass ich gerne die GameBoyCamera auslesen möchte und die Daten nicht direkt per RS232 übertragen werden sollen.
Deswegen habe ich eine Platine mit einem 74LS573 und einem 32KB SRAM von Cypress gebaut, dass ich an meine Mega128 Platine anstecken kann.
Soweit so gut.
Jetzt das Problem: Da die Camera ein Format von 128*123 hat, wollte ich ein 8-Bit Array initialisieren, dass entweder
bild[128][123] oder
bild[16380] groß ist.
Das geht natürlich nur, wenn der externe Speicher auch läuft.
Dazu habe ich also folgende Zeile im Makefile freigeschaltet:
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
# used for variables (.data/.bss) and heap (malloc()).
EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
Weil das warscheinlich nicht reicht, habe ich in meiner Initialisierung noch das folgende programmiert:
MCUCR &= (1 << SRE);
XMCRA &= (~1 << XMBK);
XMCRB &= ~(1 << XMM2);
XMCRB &= (1 << XMM1);
XMCRB &= ~(1 << XMM0);
printf("MCUCR has the following value: %d\n", MCUCR);
printf("XMCRA has the following value: %d\n", XMCRA);
printf("XMCRB has the following value: %d\n", XMCRB);
Die printf-Befehle senden an meinen PC. Es kommt überall "0" heraus. Es gibt jetzt drei Möglichkeiten:
- man kann die Register so garnicht setzen und seswegen kommt null raus,
- man kann die Register so nicht auslesen
- oder beides... :P
Wie habt ihr externen Speicher initialisiert? Habt ihr vielleicht beispielcode für mich?
Muss ich was bei der Variablendeklaration beachten?
Gruß und danke,
Timo