Gast
#645781
So. Und nun hab ICH ein SRAM-Problem: ATMEGA128, 128kB externes SRAM angeschlossen wie im Datenblatt beschrieben, AVRStudio4.12 mit GCC..... Problem: 1. Das externe Ram ist nicht ansprechbar, seltsamerweise sind die #WR und #RD-Leitungen tot (=immer high). 2. Im ExRAM angesprochene Speicherzellen liefern immer das LSB der ADRESSE, nicht den Inhalt. Das Posting Beitrag "Externes Speicherinterface Hintergrundwissen" habe ich genau studiert. Eigentlich steht alles drin.... istz eigentlich genau mein Fall. Nur funktionierts bei mir nicht. Hier der Code in Auszügen: Linker options: -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff -> Dynamische Variable/Heap im ExRAM Header: #include <stdlib.h> // malloc()&co. In main() wird IOInit() aufgerufen. Dort steht: ////////////////////////////////////////////////////////// // Init externes Ram 4k..64K: // ohne Waitstates: // MCUCR |= _BV(SRE); // Bit 7: SRE SRAM Enable =1 // XMCRA = 0x00; // // XMCRB = _BV(XMBK); // // mit Waitstates: MCUCR |= (1<<SRE)|(1<<SRW10); XMCRA |= (1<<SRW11); // the number of wait-states XMCRB |= (1<<XMBK); So. sollte eigenlich laufen. Folgende Testroutine: unsigned char *pExRam; . . . case 29: // EXTRAM check for (pExRam = __malloc_heap_start;pExRam < __malloc_heap_end;pExRam++) { printf ("\n\rXR Adr: %04Xh",pExRam); *pExRam=0x55; // Speicherzelle auf'01010101' if (*pExRam!=0x55) printf (" %04Xh != 55h; ",*pExRam); else printf (" - OK"); *pExRam=0xAA; // Speicherzelle auf'10101010' if (*pExRam!=0xAA) printf (" %04Xh != AAh; ",*pExRam); else printf (" - OK"); } break; Es funktioniert aber nicht. Auf RS232 kommt folgende Ausgabe: " ExRAM-Check. HeapStart: 0x1100, heap end:0xffff XR Adr: 1100h 0000h != 55h; 0000h != AAh; XR Adr: 1101h 0001h != 55h; 0001h != AAh; XR Adr: 1102h 0002h != 55h; 0002h != AAh; . . . " Und hier nochmal das Problem: 1. Das externe Ram ist nicht ansprechbar, seltsamerweise sind die #WR und #RD-Leitungen tot (=immer high). 2. Im ExRAM angesprochene Speicherzellen liefern immer das LSB der ADRESSE, nicht den Inhalt. Hat jemand eine Idee?