??? 06/15/09 13:32 Read: times |
#166089 - Memmory mapping question/ Bord fixed Responding to: ???'s previous message |
I've done some testing on te PCB and discovered that there was a fault in the powersupply, changed the dc-dc converter and now everything is running as it should.
A lesson in not to forget the basics of electronics 8-)... Now i've been doing some tests concerning the external memmory features and i am able to get the signals in and out (ALE, /RD, /WR, P0AD & P2A) But now comes the part of the memory mapping: Let me re sketch the situation since I do not yet have al the hardware required to fully test. I've made some assumptions (this is theoretical) on XDATA and memory mapping: Hardware: I'm thinking on making a bus system where there are 4 identical PCB's linked together trough the AD lines. (P0 & P2) On each PCB there are 4 identical components which each have 28 registers that can be programmed. (thus using 6 address lines) i am using the upper 2 latched address lines to select which of the 4 devices to program. P2.0 and P2.1 are used to enable communication with each individual PCB board. Code: Since the devices are similar I would like to memory map the struct specified in the external.h file 16 times to the corresponding addressed device. * Can i just do so by assigning an address to it as done in the parameter.c file? * What memory model should I choose best, do i really need the large memory specifier since, according to the data sheet enabling and disabling EXTRAM bit in the AUXR register should activate switching between internal and external memory access. I ask this question cause I would also like to keep use of the internal XRAM of the chip. * Can it be done by using the #pragma large in the parameter.c file? *aside of setting the size and start address of the XRAM do there need to be made any other alterations to the linker? Kind regards Rob main.c #include "at89c51cc03.h" #include "compiler.h" #include "hardware.h" #include "External/parameters.h" main (void) { unsigned long xdata x=0; AUXR=0x15; //Disabling external RAM while (1) { x=0; while(x<150000) { x++; } AUXR=0x17; //enabling external RAM d11.par1=0xXX; //Programming all devices ... d11.par27=0xXX; d12.par1=0xXX; ... d12.par27=0xXX; ... d44.par1=0xXX; ... d44.par27=0xXX; AUXR=0x15; //Disabling external RAM } pârameter.c #include "at89c51cc03.h" #include "System/compiler.h" #include "System/hardware.h" #include "parameters.h" xdata device d11 _at_ 0x0000; xdata device d12 _at_ 0x0040; xdata device d13 _at_ 0x0080; xdata device d14 _at_ 0x00C0; xdata device d21 _at_ 0x0100; xdata device d22 _at_ 0x0140; xdata device d23 _at_ 0x0180; xdata device d24 _at_ 0x01C0; xdata device d31 _at_ 0x0200; xdata device d32 _at_ 0x0240; xdata device d33 _at_ 0x0280; xdata device d34 _at_ 0x02C0; xdata device d41 _at_ 0x0300; xdata device d42 _at_ 0x0340; xdata device d43 _at_ 0x0380; xdata device d44 _at_ 0x03C0; parameter.h #include "at89c51cc03.h" #include "System/compiler.h" #include "System/hardware.h" #ifndef _PARAMETERS_H #define _PARAMETERS_H typedef struct { unsigned char par0; ... unsigned char par27; } device; #ifdef _PARAMETERS_C xdata device ; #else extern xdata device ; #endif #endif |
Topic | Author | Date |
AT89c51cc01 and External memory (keil/C51) | 01/01/70 00:00 | |
Cross posted | 01/01/70 00:00 | |
Is your problem with FLIP ? | 01/01/70 00:00 | |
No, think it's keil compiler | 01/01/70 00:00 | |
Sounds like an error in the data sheet | 01/01/70 00:00 | |
bible time | 01/01/70 00:00 | |
Itterations | 01/01/70 00:00 | |
just won't get flashed into the µc?? | 01/01/70 00:00 | |
The compile will compile what you tell it | 01/01/70 00:00 | |
RE: your example does not access any xdata at all | 01/01/70 00:00 | |
RE: Rob Stoffels said:I think there is something that needs | 01/01/70 00:00 | |
Going to try something different | 01/01/70 00:00 | |
Broken Boards? | 01/01/70 00:00 | |
Memmory mapping question/ Bord fixed | 01/01/70 00:00 | |
If I read this correctly | 01/01/70 00:00 | |
Missunderstanding | 01/01/70 00:00 | |
xdata will just be whatever EXTRAM says | 01/01/70 00:00 | |
do you have any external RAM?![]() | 01/01/70 00:00 | |
CC03 is working | 01/01/70 00:00 |