Hi all,
I got back to the Oshonsoft version of Tait parallel programmer that I slaughtered, and implemented the following suggestions I got here: I returned the Vdd switching transistor, and made sure pin 36 is connected to ground (just soldered it to the wronlgy connected 37, I hope that won't be a source of trouble) and I did the measurements as suggested by eblc1388 - here is what I measured (Note that I've used a 7407 in these measurements instead of a 7406):
No PIC, no LPT connected, no resistor | ||
Confirm +5V | 4.95 V | |
Confirm +13V | 13.37 V | |
No PIC, no LPT connected, resistor to +5V (H) | ||
R touch LPT pin | Corresponding PIC pin voltage | |
D0 | 4.95 V (H) | |
D1 | 4.95 V (H) | |
D2 | 0 (L) | |
D3 | 4.51 V (L) | |
No PIC, no LPT connected, resistor to GND | ||
R touch LPT pin | Corresponding PIC pin voltage | |
D0 | 2.55 V (L) | |
D1 | 2.59 V (L) | |
D2 | 4.94 V (H) | |
D3 | 13.35 V (H) |
Well, they seem to be switching OK like this, although I am not too happy about a 2.55 V low level, but well. Now the trouble comes with the LPT connected and driving the pins from a program.
No PIC, LPT connected | ||
LPT pin | Corresponding PIC pin voltage for all D0-D4 high (from software) |
Corresponding PIC pin voltage for all D0-D4 low (from software) |
D0 (-> data, pin 40) | 4.26 V (H) | 1.22 V (L) |
D1 (-> clock, pin 39) | 4.26 V (H) | 1.21 V (L) |
D2 (-> Vdd, pin 11+32) | 0 V (L) | 4.94 V (H) |
D3 (-> Vpp, pin 1) | 13.34 V (H) | 13.34 V (H) |
And here is where the problem is, I guess - when we want to set the high voltages to all the LPT pins involved, Vpp switching transistor does not invert as it should ?! The interesting thing is, as soon as D0 or D1 go low, either of them, Vpp shows about 1.52 as it should for a high state of its LPT pin (again, just biffer from a 7407 and the transistor inverts once).
I mostly suspected the switching transistors, so I did some more measurements around them. Here is an image that I modified from the Oshonsoft schematic:
It is the same (apart from the base resistor) schematic for both Vpp and Vdd switches, I had removed the LED branch from both. The results are still with a 7407 (so just a buffer instead of invertor buffer):
No PIC, LPT connected | ||||
D0-D1 low (from software) | ||||
Potential for branch | Vlpt [V] (D2/D3) | Vbuf [V] | Vb [V] | Vc [V] (Vdd/Vpp) |
Q(Vdd) branch | 0.16 (L) | 1.14 (L) | 4.23 (L) | 4.95 (H) |
Q(Vpp) branch | 0.15 (L) | 1.15 (L) | 12.62 (L) | 13.34 (H) |
Q(Vdd) branch | 3.32 (H) | 4.95 (H) | 4.95 (H) | 0 (L) |
Q(Vpp) branch | 0.2 (L) | 1.22 (L) | 12.62 (L) | 13.34 (H) |
Q(Vdd) branch | 0.18 (L) | 1.2 (L) | 4.23 (L) | 4.95 (H) |
Q(Vpp) branch | 3.33 (H) | 13.33 (H) | 13.34 (H) | 1.10 (L) |
Q(Vdd) branch | 3.33 (H) | 4.95 (H) | 4.95 (H) | 0 (L) |
Q(Vpp) branch | 3.33 (H) | 13.33 (H) | 13.34 (H) | 1.24 (L) |
Up to now, all looks fine - the numbers stay pretty much the same if either data or clock is turned on high. But, if *both* data and clock are turned on high, the last sitation where both Q(Vdd) and Q(Vpp) branch are driven by high LPT pins, now looks like this:
No PIC, LPT connected | ||||
D0-D1 high (from software) | ||||
Potential for branch | Vlpt [V] (D2/D3) | Vbuf [V] | Vb [V] | Vc [V] (Vdd/Vpp) |
Q(Vdd) branch | 3.35 (H) | 4.26 (H) | 4.48 (H) | 0 (L) |
Q(Vpp) branch | 3.35 (H) | 4.33 (L?) | 12.63 (L) | 13.34 (H) |
Again, it is the transistor Q in the Vpp branch that cannot stay turned off, as dictated by a high LPT pin in this case. Instead it turns on and saturates ? Also, notice that in this case Vbuf(Vdd) is 4.26 - smaller than the corresponding 4.95 when Vdd was off - but still enough to keep Q(Vdd) off. That is why the only logical thing I can think of as a reason for this, is that when all buffers try to provide a high level on their outputs, they increase the demand of the IC, and their output voltages drop slightly - which in the case of Q switching transistor for Vpp is enough to drive it into saturation (due to the higher power supply voltage). Maybe that means I have a bad IC ??? But then again, this only means that when Vdd and Vpp are low (out of programming mode) and if we set clock and data to 1, then Vpp will automatically turn on and drive the PIC into programming mode ??
So, I thought I could stabilise this by putting a bigger base resistor for Vpp, and it worked ... until I placed the PIC. Well, something most be horribly wrong here, but I simply have no idea what.. Hope some of you can give some suggestions..
Thanks for the advice so far
Cheers