The AT89S52’s are in now. 3 of the 5 parts suffered bent pins, which was not due to shipping. The pins can ONLY be due to improper handling because the pins were bent before being placed on the conductive foam for shipping. A little careful re-bending and all looked well.
In a previous post, I mentioned that I had originally ordered AT89S52’s but the eBay vendor never shipped them so I ordered AT89C52’s from another eBay vendor, not realizing that there was a difference in the way each was “ISP” programmed.
With the arrival of the AT89S52’s, I set out to see if my TL-866A would “ICSP” program them. One might recall that I am feeding the ICSP reset signal into the GAL22V10 to be or-ed with the manual reset switch. At first, I was met with a “no joy” situation but after thinking about it for a moment I decided to look at the GAL22V10’s logic equation because I had intended to us a different programmer and invert the reset signal in the GAL22V10. Upon reviewing the CUPL code, I saw that I needed to fix that equation so as not to invert the reset signal from the ICSP connector. Once a newly programmed GAL22V10 was installed, I still had a problem as BASIC-52 would not initialize. Upon some investigation with my oscilloscope, I could see that the ICSP reset line was floating, which caused the reset output of the GAL22V10 to stay active high keeping the AT89S52 in a reset condition. I pulled the TL-866A’s ICSP connector of the board and still no joy. I could see that the ICPS reset pin was still floating as I did not use a pull-down resistor on it. For the time being, the reset pin and ground pin on the ISP connector are shorted and that brought the AT89S52 to life and I was please to see the BASIC-52 prompt looking back at me.
So to sum it up, the TL-866A does properly support the AT89S52 in ICSP mode.
On a related subject, I have not been successful in getting any programs to run out of EEPROM. Not the BASIC-52 nor the Paulmon2 programs. In order to use any programs from external program memory, the EA pin of of the AT89S52 must be held low. At that time, the PSEN signal of the AT89S52 is used as the OE of the EEPROM. The PSEN signal signifies that the read is from program space as opposed to from data space. I have programmed equations into the GAL22V10 to select the appropriate address space for the EEPROM and RAM depending on the state of the EA pin. The resulting CUPL equations LOOK correct and the simulations confirm that. However, nothing seems to run out of the external program memory contained within the EEPROM. It is possble that the read access time of the EEPROM with the AT89S52 running at 20 MHz is the culprit. For now, the program stored in the internal FLASH memory of the AT89S52 is working. I plan to investigate this issue further in the very near future.
Peace and blessings and thanks for following along.