Note: I am not fluent in English, so that this text it
was translated with my few knowledge of the English language, and using
an electronic translator, don't wait a perfect text, but I believe that
this can be understood perfectly.
Avalie esta página:
If you does not know this programmer and my envolvement with it, the small history. The original project made by Willem Kloosterhuis and its site can be seen here: http://http://www.willem.org/
Later, a more compact version (the PCB3b) and diverse adapters for other devices, had been created by Gitti Ieo, and can be seen here: http://http://se-ed.net/mpu51/eprom/eprom.html
All later versions of software for windows, had been made by Gitti Ieo, and ultimate version is 0.97ja
Then, I started contact with Gitti Ieo, around May/2002, where I sent some suggestions for software and found some bugs. From this date, Gitti included me as beta-test of new versions of the program, and lot of ideas had been sent (as well as bugs) and some effectively had been used. I received versions beta from Gitti until August/2004, how much you receive finishes it version beta, in the case 0.97jc3, which did not work correctly. Before this date I did not have more news of Gitti and any news of updates of software.
Almost one year then, I came to
discover an improved version of the mounted willem and sale in this
http://www.sivava.com and which didn't go my surprise when seeing that the
software was the same, they put with several updates, and with two great
details: It was not more available(*) to the
I public and it was not more compatible with the version PCB3b board,
and only compatible with the new versions (the current version is
Summarizing, own Gitti was involved in the updates. And anything of the available current versions for download, only the old and already known. They put, researching in google, I ended up finding at a Russian forum, a copy of the up-to-date software, in the case the version 0.98D2.
To the you test it logically it didn't work in the old PCB3b, I already eat alerted. Then starting from my "mission", summarized to do reverse engineering through the software for to lift which were the modifications and to turn compatible the old PCB3b, with the new software.
Well, then we are going the modification properly said. Before I will include two modifications done by min, that seek improvements in programmer, which I recommend the everybody do before even of update the board to version PCB4.5
Four improvements will be described, being:
Improving converter DC-DC.
The "heel of Aquiles" of this version of willem is DC-DC converter, that generates the different voltages to Vpp (12.5, 15, 21 and 25V). The main item that cause a series of problems is the coil, which must have mass to not saturate with the drain demanded for eprom in the programming. The biggest problem is in the programming old eproms , which demands much current in the Vpp.
The maximum current supplied by the converter in my original board was of only 35mA approximately, what he is little for some eproms.
To obtain coil of 100uH that it has supported a current up to 100mA without saturating is something complicated, therefore the majority them coil, and XRF found in the commerce has nucleus very small e saturates quickly with currents of this order. Solution?
Make a new coil, using a toroid core. The place to find an ideal nucleus is the box of scraps. Seeking I found toroid cores in old mother-board of PC and in battery charger for cellular phone, for vehicular use. Besides in these last ones, also found the MC34063 or the JRC2360D that it is direct equivalent, done made by Japan Radio Co. LTD. Below see a board of these battery charger.
The coil can be used directly, it is enough remove and to place in the board. In the case of re-taking use core from PC Board, the coil should have been re-wound. See the same core in an old board "PC-chips SiS530":
This is the dimensions of the core for who wants to seek a similar one in another board:
Other modifications that seek a better performance in the DC-DC converter:
The voltage regulator, 7805 more heat a little more than the normal, is convenient to place a small heatsink. It is finally, use a GOOD power supply, I am using one from an old scanner, of 12V x 1200mA.
With these modifications, the current
supplied by the DC-DC converter, up-to 100mA. The block of schematic
below were made the modifications, the components in blue are they
It is the section of the board where all components, except the resistor R9, that is between the 74HC04 and the ZIF socket. The resistor R17, was in below of coil.
Protecting PIC against mistakes in the adjustment of Vpp.
The poor of the pics are the largest ones you slay in case you change the Vpp for 21 or 25V and forget to come back the jumps for the position of 12.5V.
Myself already made twice this mistake and burning two PIC16F877A.
The solution for that is simple, it is enough to add a resistor in series with the line of Vpp, that is going to the ICS connector and for 18 pins socket. And a zener diode to limit the tension in a safe value.
If you already made here this modification, it is necessary to move wire for the other extremity where was the jump, because I marry I thwart in this point the modification it will be tied up to protected Vpp of 12V of pics and not more to direct Vpp after the modification. In the illustration I already placed the resistor (in blue) that will be added in the place of the jump.
The modification in the board is quite simple, it is not necessary to cut any track, it is enough to remove two jumps and to proceed the modification. In the photo below show the position of the jumps, and notice that already installed the resistor 560R in the place of one of jumps, the other jump is empty.
Inside of ellipse 1, a jump was removed and ellipse 2, the jump was removed and installed the resistor of 560R x 1/8W in its place. Now it lacks only a small bridge on the side under the board and to install the zener diode, 13V x 1W, according to the photo below.
The yellow rectangle indicates the socket of 18 pins. The wire that passes on the socket of 18 pins is the bridge that should be added. Already take advantage of and place the resistor of 1K that this in the pin 10 of the socket, linked to GND. This resistor ground the pin Low Voltage Program, of the PIC16F628. The diode zener this with its anode attached to the pins 1 and 2 of the socket of 24Cxx. With this this modification this completes.
Correcting the pull-up of pins SELIN and AUTO.
In the original project it was lacking the pull-up in the pins Select In and Auto. Although this mistake has already been alerted by Gitti and also in the forum of Willem, I solved you place it here. See in the outline this correction. It is not a critical correction, but it is advisable to make.
And see the local to place the resistors in the board. They are tied up to the pin 16 of own U2 IC.
Don't look at for the wire-up confusion and IC in the song right bottom. They are part of the last modification.
Improve to work on LPT port from Notebooks.
It can seem strange, but several notebooks has differences in the
parallel port, they use lower of pull-up, to provide a port with larger
imunit to noises and faster.
Conversion to PCB4.5 or when the hell breaks loose :)
When I intended to discover as converting the old PCB3b to work with the new software, my first providence went make a small giga, to facilitate the debug & test, this way it is much faster to verify changes of the signals in the socket ZIF.
Willeprom uses a cascade of 3 shift double registers (CD4015) and it carries the 24 bits that it composes addresses bus, just as in the illustration below.
That is places one bit per time in data pin of the first 4015 and it is going pulse clock line, it makes this operation 24 times until carrying the whole bus (obs. in the case of a smaller bus, as of a 27C512, for example he carries only the necessary bits, to know, 16 bits), but what matters it is that he carries a bit per time.
When beginning the debug, using the hardware test with my leds giga, I noted that the software carried the bits from A0 to A7, correctly they put above of A7, it didn't carry anything and eventually appeared "junk" in the in the addresses above A7.
A careful observation, allowed to note that when only carrying the bit A0, when selecting the bit A0 for the first time, it was carried correctly, they put when give-selecting, the bit A0 turned off, they put the bit A8 on, and when selecting the bit A0 again, the bit A8 turned off and on bit A0 and A16...
Thinking a little, it is enough to note that 8 bits are only being carried, accompany below:
Now remember that the data are loaded serial, soon the first 8 loaded bits, they should be moved upward, soon the stack in the shift-register is being: 0000000010000000, what corresponds exactly to light the bit A8!
Now, carrying the bit A0 again in 1 a new sequence 00000001 will be a correspondent, soon the 16 bits that are already in the shift-register should be moved above, soon the sequence in the shift register is being: 000000001000000000000001, what will correspond exactly to set the bits A0 and A16!!!
Therefore it is ended that the bus is parted in smaller blocks. Analyzing the schematic of programmer, and the sequences above, it is easy to deduce that the bus went divide in three segments of 8 bits! Just lacked to discover through where the other two groups of 8 bits should come. Researching with the scope, I found these two segments, presents in the pins DO4 and DO5 of the printer port.
Give it was just enough to segment the bus and to tie the pin 15 of U5 to the pin D04 and the pin 15 of U6 to the pin DO5 of the parallel port, and voilá! Therefore the outline was accordingly below:
Now to stop and analyze, will discover the because the programmer is much faster when used in the new bus format. Because now instead of carrying all the necessary bits to the bus of one by one, they are divided in three groups of 8 bits, what means that in any case will just be necessary 8 clock pulses to carry the whole bus, while in the old method it was necessary the same amount of pulses that the amount of bits of the bus of the eprom.
Simple, practical and efficient!
Note that I opted including the jumps for the selection of modes, so that the board it can work on PCB3b mode, an also PCB4.5. The jumps was installed close to the leds Vcc and Vpp, there, underneath of the board is a massive copper area linked to GND, with a small drill I made the 6 pads for installation of jumps.
Even so when doing this modification, I noted that during the reading of
an eprom, the programmer didn't still work correctly, in spite of the
correct address in the bus, they were not read consistent data of eprom.
That is to say, still has more some thing to be altered.
This way notes that the program needs to be change to have written in
the pin clock and reading of the data. To thick way they are necessary
at least 16 operations for the reading of a byte.
This way, note that are loaded 3 bits for pulse with 3 pulses of
simultaneous clock. Making one analyzes as I did previously, they would
be necessary at least 12 operations for the reading of the byte (three
clock pulses, a reading, three clock pulses, a reading and more three
clock pulses and a reading)
And in this last image, as I installed extra CI in bottom of board. The pins 2 and 4 was directly connected to pins of DB25.
After having done the modifications, went be proven there is really an improvement in the programmer's speed. Everybody the tests of speed, I made using a Flash AM29F040B, plcc with adapting PLCC -> DIP.
For the test two different computers were used, to verify to what extent the clock of the processor influences in the time programing.
The file for program in the eprom is a MP3 file, which filled the whole memory flash. It was used a mp3, for the reason that its content is quite aleatory and great sequences of byte 0FFh don't exist, which is not programmed indeed by the software.
The time computes the programming and verification of flash AM29F040B. Consider a variation of 5% in the times measured as acceptable.
Computer 1: Pentium 233MMX
Mode PCB3b : 1079 seconds (17:59 minutes)
Computer 2: Ahtlon XP 2400+
Mode PCB3b : 420 seconds (7:00 minutes)
Then, the following devices were tested in the programmer, to verify the correct compatibility and operation, everybody with result 100%:
A thing that I don't
understand is the reason of so much secret on the part of Gitti and
Sivava for these modifications, because in less than 3 days work
(counting only the time that I dedicated to this) it was possible to
lift all the modifications.
Just to mention the all it can be of great help the software and schematic free, in the time that did tests of versions beta of software, I found two bugs, that were quickly corrected by Gitti, and an improvement suggestion that was added to the software.
I title it of curiosity, the bugs and suggestions was:
Now a small explanation about this last
function, because a lot of people don't understand so that she serves.
It is necessary to just provide isolation for the reset pin, so that the tension of Vpp doesn't enter for the power line and isolation for the lines RB6 and RB7, so that there are not conflicts with the pic and the programmer, or simply not to use the lines RB6 and R7 during the development phase.
Several softwares that can be configured to
work with Willeprom. All they are only for programming of serial
devices, as PIC's and I2C memory.
A comment worthy of note, is on WinPIC By
DL4YHF and its fantastic idea of as to add support new PIC's to
software. All the devices can be described in a text file (devices.ini).
this way it is a lot, but very simple of adding new devices to software.
It is enough to catch everybody the data in the datasheet of wanted PIC
and to create a new entrance in the file.
Última atualização do site em: 03/setembro/2015Todo o conteúdo é © 2003-2016 por PY2BBS, todos os direitos reservados.
Proibida cópia ou reprodução de qualquer texto ou imagem deste site sem a devida autorização por escrito.
Todos os nomes e as imagens utilizadas são marcas registradas de seus respectivos detentores.
PY2BBS não se responsabiliza pelo conteúdo de quaisquer dos sites lincados.