EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

How to use /EA-Vpp pin?

Started by Srdjan Ridanovic February 8, 2004
Hi, I'm working on a boot loader project with some SRAM, EEPROM and AT89C52 and I want to ask you guys some things that I coudn't find in any tehnical spacifications. For instance, if the /EA-Vpp pin is on "1", procesor will execute program from internal code memory ( in this case 8Kb ) and then countinu using external memory up to 64Kb ! If the /EA-Vpp is on "0" procesor will read program code from external memory only ( 0x0000 - 0xFFFF ). The question is: What will heppn if I change /EA-Vpp pin from "1" to "0" while the program is executing comands from internal code memory? ( If I change it while internal program is running )
My presupposition is that the program will continue executing code from the PC ( program counter ) address of the external memory code and if it's not right sincronized it will gone mad. Or it will countinue doing it's program from internal 8Kb code memory and afther next reset it will start from 0x0000 of external code memory.

If enyone has some experiance with these things I would be more than grateful.
Sincerly Srdjan Ridanovic


Dear Srdjan:
AT89C52 is fully compatible with Intel MCS51. I recomend you to read specficiations for this family from Intel data sheets for critical specifications.

Memory mapping functionality related to EA:
/EA = High
Microcontroller will execute only code from internal Eeprom, unless PC exceeds 0x1FFF (8K) in which case it will continue to fetch external code.

/EA = Low
Microcontroller will execute, unconditionally, code from external memory. No matter PC value.

External CODE execution depends on /EA state.
External DATA access depends on special instructions (MOVX, use of DPTR, etc).

I am not sure but i beleive the /EA pin is a combinational pin. This means it will change mode at the moment you change the pin state. It's simple to test this (Put some program to run with internal code, /EA = High, then pull /EA low, if the program hangs up this means I am probably right, if it continues running it means you are right).

Be aware that when external CODE is accessed the Memory Read signal is performed by /PSEN pin.
When external DATA is accessed /WR and /RD are used.
You can put /PSEN and /RD tied to an AND gate and you will have combined code + data space addressing in one linear space 0 - 64K.

Regards,
Alejandro Deleon
----- Original Message -----
From: Srdjan Ridanovic
To: 8052@8052... ; avrclub@avrc... ; AVR-Chat@AVR-...
Sent: Sunday, February 08, 2004 8:41 PM
Subject: [AVR club] How to use /EA-Vpp pin? Hi, I'm working on a boot loader project with some SRAM, EEPROM and AT89C52 and I want to ask you guys some things that I coudn't find in any tehnical spacifications. For instance, if the /EA-Vpp pin is on "1", procesor will execute program from internal code memory ( in this case 8Kb ) and then countinu using external memory up to 64Kb ! If the /EA-Vpp is on "0" procesor will read program code from external memory only ( 0x0000 - 0xFFFF ). The question is: What will heppn if I change /EA-Vpp pin from "1" to "0" while the program is executing comands from internal code memory? ( If I change it while internal program is running )
My presupposition is that the program will continue executing code from the PC ( program counter ) address of the external memory code and if it's not right sincronized it will gone mad. Or it will countinue doing it's program from internal 8Kb code memory and afther next reset it will start from 0x0000 of external code memory.

If enyone has some experiance with these things I would be more than grateful.
Sincerly Srdjan Ridanovic ------
Yahoo! Groups Links

a.. To



The 2024 Embedded Online Conference