DavidGriffith / minipro-import-test

An open source program for controlling the MiniPRO TL866xx series of chip programmers
GNU General Public License v3.0
3 stars 0 forks source link

Support M5M27C202JK@PLCC44 #179

Open DavidGriffith opened 4 years ago

DavidGriffith commented 4 years ago

In GitLab by @eschaton on Jun 29, 2020, 19:53

Looks like minipro doesn’t currently support the Mitsubishi PLCC devices, only the equivalent DIP and/or SOP (K-series) devices.

DavidGriffith commented 4 years ago

In GitLab by @eschaton on Jul 10, 2020, 13:49

At least in theory it looks like the PLCC44 adapter that came with my TL866CS should let me just insert an M5M27C202JK and read it as an M5M27C202K@DIP40; I did some continuity testing and it looks like the pins are set up correctly. However, reading the device just gives 0xFFFF and nothing else. I have to wonder if there’s something more necessary.

DavidGriffith commented 4 years ago

In GitLab by @radiomanV on Aug 24, 2020, 03:41

Unfortunately there's no plcc44 memory profile (variant) support in the firmware. The PLCC44 adapter is only for the C51 series processors. But you can easily fix this issue.

However, reading the device just gives 0xFFFF and nothing else.

That's because the chip is not powered at all. For DIP40 package we have Pin40=VCC and Pin11=GND + Pin30=GND. The address bus, data bus and the other signals (VPP/OE/CS/PGM) are ok. The VCC (pin 40) is also ok but the two GND pins are wrongly routed in our case to the PLCC pins 13 and 33 which according to the datasheet are NC (not connected).
We need the GND to the PLCC pins 12 and 34. So if you put a piece of wire between PLCC12+PLCC13 and PLCC33+PLCC34 should be good.
Deppending on your soldering skils this can be an easy task or a hard one. Soldering should be made to the bottom layer of plcc44 pcb adapter.

Here is the cresponding pinout:

DIP40            PLCC44
*       1=NC    
1=VPP       2=VPP   
2=CE        3=CE   
3=D15       4=D15   
4=D14       5=D14   
5=D13       6=D13   
6=D12       7=D12   
7=D11       8=D11   
8=D10       9=D10   
9=D9        10=D9   
10=D8       11=D8   
*       12=GND ->No GND!   
11=GND       13=NC   
12=D7       14=D7   
13=D6       15=D6   
14=D5       16=D5   
15=D4       17=D4   
16=D3       18=D3   
17=D2       19=D2   
18=D1       20=D1   
19=D0       21=D0   
20=OE       22=OE   
*       23=NC   
21=A0       24=A0   
22=A1       25=A1   
23=A2       26=A2   
24=A3       27=A3   
25=A4       28=A4   
26=A5       29=A5   
27=A6       30=A6   
28=A7       31=A7   
29=A8       32=A8   
30=GND       33=NC   
*       34=GND ->No GND!    
31=A9       35=A9   
32=A10      36=A10   
33=A11      37=A11   
34=A12      38=A12   
35=A13      39=A13   
36=A14      40=A14   
37=A15      41=A15   
38=A16      42=A16   
39=PGM      43=PGM   
40=VCC      44=VCC   
DavidGriffith commented 4 years ago

In GitLab by @eschaton on Aug 24, 2020, 11:57

I actually obtained a new TL866 II+ that included a jumperable 44-pin PLCC adapter, and it works fine with the @DIP40 profile. I’ve been able to both read and write 44-pin PLCC PROMs with it using minipro.

DavidGriffith commented 4 years ago

In GitLab by @radiomanV on Aug 24, 2020, 13:03

Perhaps this is a third-party adapter. Why the manufacturer doesn't implement the full chip support is beyond my understanding. I mean they have the chip DIP40 support and they have a standard PLCC44 adapter, but they don't add support for it.

This is, however a 5 min task. It doesn't require writing another protocol, or else but only adding a new data structure with two swapped pins in the firmware.
That's why there are so many third-party/after market hacked adpters; for ex. issue #167.

The root cause is the bad firmware implementation. They continue to keep the same protocol from the ancient TL866A/minipro software in new programmers design (TL866II+ and T56). There's the protocol_id which selects the protocol (paralel, spi, i2c, etc.) and the variant which selects the pin mapping in firmware. Yeah, they keep all those data structures in firmware!
I would have really liked a more generic approach instead, where the external client software initializes the programmer by sending the required pin map. We already send voltages and timings to the programmer in the init routine.

Perhaps one day the manufacturer will consider my suggestions because i know he is aware of this project and the eevblog forum thread.