??? 06/15/09 14:49 Read: times |
#166096 - Missunderstanding Responding to: ???'s previous message |
Erik Malund said:
* Can i just do so by assigning an address to it as done in the parameter.c file? If I read this correctly, I read that you want device a to read from device b by mov a,@dptr or var = xxxx; this will not work, device b will not present the data in any 'stable' fashion, it will only be there during a device b read from memory (1us or less). The traditional faulty way to parallel communicate parallel between devices is as follows two registers: address and data bits: read request and data available, both true low this works till you have two simultaneous read requests (may take a second, may take a year) I know of two methods that will work 1) a MASTER controller that, in a round robin fashion interrogates the slaves 2) a (in your case (4-controllers) quad port memory with sentinels (Cypress has those) Erik I think i did not describe well. I want only the µc to communicate with the devices, what i wanted to know is that it is possible to for example assign an address to the struct and that all ellements have the corresponding address to that of the external device... I only have a sketch schematic for now so i cant propperly visualise it :( for example: xdata device d11 _at_ 0x0000; d11.par0 //can be found at 0x0000 external address d11.par1 //can be found at 0x0001 external address But i've tested this and this assumption is correct Erik Malund said:
<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.
wrong again 1) the LARGE memory model does NOT set the AUXR, you need to do that in startup 2) the LARGE memory model will increase your program size dramatically and make it run far slower, use the SMALL model and the xdata qualifier for variables/MMIO you have in xdata Erik I now set and clear AUXR parameter in my program before and after accessing the "real xdata". and using small model. And that seems to be doing the trick... I've seen that they use a separate file in the keil example (3 XData Areas on T89C51RD2) xbanking4xram.A51 where the first parameter is a reference to the AUXR register. Unfortunately i do not completely understand these files, is there any good reference to read that explains the use and different possibilitys? Does this automate the setting and clearing of EXTRAM bit in AUXR when XDATA call? Won't enabling this cause you to loose your on chip XDATA? Thanks for the help so far! |
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 |