We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I had successfuly use FM0 - Flash memory user spaces to start an application that can read the external ROM, read/write external RAM and control and T6963 based LCD display. But I can not make the same program run inside the external ROM - even the program is just few instructions to toggle an LED. Even an P87C591 with internal flash, it is just simply tie EA to 0V and program must fetch from external memory. The external flash is AT29C010A-90, crystal is 20MHz.
I checked: - PSEN and ALE signal correct. AT29C010A OE is connected to PSEN and RD through HC08. - Same problems when X2 set or clear by FLIP2.4. - HC139 and HC573 are used as address decoding and chip selection (Program running in internal flash FM0 do not have problems, is there any chance hardware incorrect?) - Remove the RAM and LCD display, simply blinking and LED connected to P3.4. Program work inside internal flash FM0 but not for external ROM. - Because AT29C010A is 256k, two address line A16 & A17 are connected to two port line P3.2 and P3.3. I know this so I copy the program bin file to address 0x00000, 0x10000, 0x20000 and 0x30000. P3.2 and P3.3 are both high after reset and program must be start at "0x30000".
Anyone know this and fixed?
what is !EA connected to?
Erik
For execution in external code memory, EA tie to 0V before and after power on (reset) with voltage monitor MAX810. According to ATMEL data sheet, even HSB (Hardware security byte) shows security level is 4, it is still not reasonably because it write "external execution is disabled if code roll over beyond 7FFFh".
CSEG AT 0 LJMP PowerON
CSEG AT 0100h PowerON:
Loop_0: MOV R6,#0 Loop_1: MOV R7,#0 Loop_2: DJNZ R7,Loop_2 DJNZ R6,Loop_1
CPL SIG_LED
JMP Loop_0
Above code size large enough to roll over? It work in FM0 but not in external ROM.