

<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://proghq.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pdietl</id>
	<title>Proghq - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://proghq.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pdietl"/>
	<link rel="alternate" type="text/html" href="https://proghq.org/wiki/Special:Contributions/Pdietl"/>
	<updated>2026-04-15T01:58:49Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://proghq.org/w/index.php?title=TL866&amp;diff=907</id>
		<title>TL866</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=TL866&amp;diff=907"/>
		<updated>2022-11-06T02:37:05Z</updated>

		<summary type="html">&lt;p&gt;Pdietl: /* Schematic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:TL866]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Programmer]]&lt;br /&gt;
&lt;br /&gt;
NOTE: these pages were imported from [https://minipro.txt.si/index.php?title=Main_Page minipro wiki]&lt;br /&gt;
&lt;br /&gt;
This wiki is dedicated to gathering information about the [http://www.autoelectric.cn AutoElectric] MiniPro TL866 programmer.&lt;br /&gt;
&lt;br /&gt;
The TL866 is a universal EEPROM, FLASH, 8051, AVR, MCU, GAL, PIC, SPI chip programmer supporting around 13,000 chips.&lt;br /&gt;
&lt;br /&gt;
= Pages =&lt;br /&gt;
&lt;br /&gt;
[[:Category:TL866]]&lt;br /&gt;
&lt;br /&gt;
* [[Tl866 supported chips]]&lt;br /&gt;
* [[Tl866 sellers]]&lt;br /&gt;
* Hardware&lt;br /&gt;
** [[Tl866 design]]&lt;br /&gt;
** [[Tl866 TSOP48 adapter]]&lt;br /&gt;
** [[TL866 PLCC44 adapter]]&lt;br /&gt;
* Software&lt;br /&gt;
** [[Autoelectric Minipro]] : vendor provided Windows client&lt;br /&gt;
** [[Vdudouyt Minipro]] : FOSS Linux client&lt;br /&gt;
** [[Radioman TL866 updater]] : firmware updater tool&lt;br /&gt;
** [[opentl866]] : FOSS firmware&lt;br /&gt;
&lt;br /&gt;
= Difference between TL866A and TL866CS =&lt;br /&gt;
&lt;br /&gt;
There&#039;re two version of the TL866 programmer, the TL866A with ICSP header and TL866CS without ICSP.&lt;br /&gt;
&lt;br /&gt;
TL866A has the ICSP header and TL866CS does not, otherwise the devices are physically the same. The TL866CS is also factory programmed to not use the ICSP header.&lt;br /&gt;
&lt;br /&gt;
This means that TL866A supports (in addition to all the chips TL866CS supports):&lt;br /&gt;
* Microchip ICSP support for some chips (in circuit programming)&lt;br /&gt;
* ICSP support for ATmega and SYNCMOS MCU SM89xxx SM59xxx (in circuit programming)&lt;br /&gt;
* AT45DBxxxx ICSP, programmable only on TL866A&lt;br /&gt;
&lt;br /&gt;
= TL866 II PLUS is NOT compatible =&lt;br /&gt;
&lt;br /&gt;
Although the [[TL866 II PLUS]] is in an identical plastic enclosure, it is &#039;&#039;&#039;NOT&#039;&#039;&#039; compatible with the TL866A and TL866CS.  The TL866 II PLUS is based on different PCB with PIC24FJ256 microcontroller.&lt;br /&gt;
&lt;br /&gt;
= Counterfeit programmers =&lt;br /&gt;
&lt;br /&gt;
There have been reports of a [http://www.eevblog.com/forum/repair/minipro-tl866-firmware-upgraded-and-broken-fake-device/ counterfeit version] of the tl866 out of aliexpress.  If you end up with one of these the official software will [http://www.eevblog.com/forum/blog/eevblog-411-minipro-tl866-universal-programmer-review/msg926428/#msg926428 detect it and erase] the contents of the PIC onboard.  It is theorized that the detection is due to sloppy piracy resulting in the serial number of all the fakes being the same.  To restore your device you now need to go though the operation to [http://minipro.txt.si/index.php?title=Firmware_Updater_Tool upgrade it] to a tl866a.&lt;br /&gt;
&lt;br /&gt;
Autoelectric has provided [http://www.autoelectric.cn/images/IMG_0681.jpg this image] to help identify counterfeit programmers without first bricking them with the official Minipro software.&lt;br /&gt;
&lt;br /&gt;
= ICSP =&lt;br /&gt;
&lt;br /&gt;
ICSP connections are usually deductible from the MiniPro software.&lt;br /&gt;
&lt;br /&gt;
You select the chip, click the ICSP programming option (if available) and then the Information button. This will display a image with the appropriate connections.&lt;br /&gt;
&lt;br /&gt;
The images are also available in the img directory in your MiniPro directory&lt;br /&gt;
&lt;br /&gt;
== Handy helper image ==&lt;br /&gt;
&lt;br /&gt;
[[File:TL866 ICSP.png]]&lt;br /&gt;
&lt;br /&gt;
[http://www.eevblog.com/forum/blog/eevblog-411-minipro-tl866-universal-programmer-review/msg342728/#msg342728 Source]. Thanks radioman!&lt;br /&gt;
&lt;br /&gt;
= Schematic =&lt;br /&gt;
&lt;br /&gt;
The schematic in PDF format is available in [https://github.com/radiomanV/TL866/blob/master/docs/TL866.pdf TL866_schematic.pdf] by Radioman.&lt;br /&gt;
&lt;br /&gt;
It&#039;s intended use is a better understanding of the TL866 internal workings and is available here purely for experimental and educational purposes.&lt;br /&gt;
&lt;br /&gt;
= Photos =&lt;br /&gt;
== TL866 A photos ==&lt;br /&gt;
Photos of a TL866 A bought April 2018 from eBay seller xgautoelectric.&amp;lt;br/&amp;gt;&lt;br /&gt;
Red and yellow LEDs were desoldered from mainboard to allow separation of the two PCBs.&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:TL866 A socketboard top scan 1200dpi.jpg|160px]]&lt;br /&gt;
[[File:TL866 A socketboard bottom scan 1200dpi.jpg|160px]]&lt;br /&gt;
[[File:TL866 A mainboard top scan 1200dpi.jpg|160px]]&lt;br /&gt;
[[File:TL866 A mainboard bottom scan 1200dpi.jpg|160px]]&lt;br /&gt;
&lt;br /&gt;
== TL866 CS photos ==&lt;br /&gt;
Photos of a TL866 CS bought April 2018 from eBay seller xgautoelectric.&amp;lt;br/&amp;gt;&lt;br /&gt;
Red and yellow LEDs were desoldered from mainboard to allow separation of the two PCBs.&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:TL866 CS socketboard top scan 1200dpi.jpg|160px]]&lt;br /&gt;
[[File:TL866 CS socketboard bottom scan 1200dpi.jpg|160px]]&lt;br /&gt;
[[File:TL866 CS mainboard top scan 1200dpi.jpg|160px]]&lt;br /&gt;
[[File:TL866 CS mainboard bottom scan 1200dpi.jpg|160px]]&lt;br /&gt;
&lt;br /&gt;
= External VDD control =&lt;br /&gt;
&lt;br /&gt;
Experiment to read bit rotted MCUs by under voltaging&lt;br /&gt;
&lt;br /&gt;
Do:&lt;br /&gt;
*Remove Q11 (overcurrent control transistor)&lt;br /&gt;
*Solder external voltage to net VDD (Q11 middle lead)&lt;br /&gt;
*Remove R39 (disable spurious overcurrents by removing Q11)&lt;br /&gt;
*Note: should be able to do this for VPP if desired as well (Q9)&lt;br /&gt;
&lt;br /&gt;
Reference experiment: a good Intel 27128 was able to read its ROM down to 3.22V before bits started to convert to 1&lt;/div&gt;</summary>
		<author><name>Pdietl</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=TL866_design&amp;diff=906</id>
		<title>TL866 design</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=TL866_design&amp;diff=906"/>
		<updated>2022-11-06T02:36:06Z</updated>

		<summary type="html">&lt;p&gt;Pdietl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:TL866]]&lt;br /&gt;
&lt;br /&gt;
== Hardware design ==&lt;br /&gt;
[http://www.example.com link title]&lt;br /&gt;
&lt;br /&gt;
The MiniPro is designed around a Microchip [https://www.microchip.com/en-us/product/PIC18F87J50 PIC18F87J50] micro-controller.&lt;br /&gt;
* It uses eight 74HC373 latches and one 74HC164 shift register&lt;br /&gt;
* Pin drivers are realized with discrete components. Thus we have 16VPP voltage switches, 24VDD voltage switches and 25GND switches&lt;br /&gt;
* DC to DC converters which generate the VPP programming voltage and VDD supply voltage is realized with two MC34063 circuits.&lt;br /&gt;
&lt;br /&gt;
More information (that needs to be transferred here) available in [https://github.com/radiomanV/TL866/tree/master/docs here] by Radioman.&lt;br /&gt;
&lt;br /&gt;
For anyone making the change that wants to add the 6 pin header check out Digikey part # S9493-ND&lt;br /&gt;
It is a perfect fit/match and looks exactly the same as the factory part from what I can see and costs 48 cents. [http://www.eevblog.com/forum/blog/eevblog-411-minipro-tl866-universal-programmer-review/msg756727/#msg756727 Thread Link]&lt;br /&gt;
&lt;br /&gt;
See also [[Design/Schematic]]&lt;br /&gt;
&lt;br /&gt;
== Software design ==&lt;br /&gt;
TL866 has three major layers here:&lt;br /&gt;
#PC software application&lt;br /&gt;
#Device firmware&lt;br /&gt;
#Hardware&lt;br /&gt;
&lt;br /&gt;
The PC software application do not talk directly with the hardware but with the device firmware instead. The device firmware is implemented as a collection of programming algorithms; for example the 24C (i2c) series have a dedicated algorithm in firmware, 25 spi series have another dedicated algorithm and so on. Currently the 3.2.62 firmware version have exactly 41 programming algorithms.&lt;br /&gt;
All of those &amp;gt;13000 supported chips belongs to one of the 41 programming algorithms ([[Supported_chips|more information about supported chips]]), so if we want to add a new chip, then that chip must have the programming algorithm implemented in firmware, if no we are out of luck :(&lt;br /&gt;
&lt;br /&gt;
The PC software is nothing more than a chip database manager which sends simple programming primitives to the device firmware which in turn do all the dirty job!&lt;br /&gt;
So programming a chip is like this:&lt;br /&gt;
#PC software sends a simple command to the firmware like &amp;quot;Select protocol nr. X&amp;quot;, the device firmware will then switch to that programming algorithm&lt;br /&gt;
#PC software sends/receive data blocks to/from firmware, the firmware will do the dirty job of manipulating pin drivers and talking with the chip&lt;br /&gt;
&lt;br /&gt;
[http://www.eevblog.com/forum/blog/eevblog-411-minipro-tl866-universal-programmer-review/msg408976/#msg408976 Source (Radioman)]&lt;br /&gt;
&lt;br /&gt;
TL866 has implemented programming primitives, they use these primitives for device self check and logic IC verify. The reason of why these primitives are not used in normal device programming is that it will be very slow to program a device in a such manner.&lt;br /&gt;
Remember that the [https://www.microchip.com/en-us/product/PIC18F87J50 PIC18F87J50] is a full speed (12Mbps) device and the transfer type is of type &#039;bulk&#039;;&lt;br /&gt;
this means that the bandwidth is not guaranteed and maximum packet size is 64 bytes.&lt;br /&gt;
Depending on the USB host and OS the minimum packet latency will be somewhere between 3 and 10ms. So even if the data length is 1 byte or 64 bytes the transfer time will be the same, but will be more efficient for large amount of data.&lt;br /&gt;
Let&#039;s say we want to program a device with 64K bytes in this manner, normally with the existing firmware primitives we can set all of those 40pins in one USB transfer and let&#039;s suppose that the USB latency is 5ms. Now with this setup we transfer one data byte in 5ms and one address increment command in another 5ms! the total amount of time will be ~10 minutes for a 64K device not counting the verify time. This is why the programming algorithms are implemented in firmware, because is more efficient to transfer large amounts of data over the USB and let the firmware to do the job much faster.&lt;br /&gt;
&lt;br /&gt;
Actually the TL866 have only 39 control primitives and these primitives are grouped in categories like get device info, reset, start session, end session, erase chip, get chip Id, read data block, write data block and several pin and pin driver manipulation primitives.&lt;br /&gt;
&lt;br /&gt;
[http://www.eevblog.com/forum/blog/eevblog-411-minipro-tl866-universal-programmer-review/msg413017/#msg413017 Source (Radioman)]&lt;/div&gt;</summary>
		<author><name>Pdietl</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=TL866_design&amp;diff=905</id>
		<title>TL866 design</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=TL866_design&amp;diff=905"/>
		<updated>2022-11-06T02:35:35Z</updated>

		<summary type="html">&lt;p&gt;Pdietl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:TL866]]&lt;br /&gt;
&lt;br /&gt;
== Hardware design ==&lt;br /&gt;
[http://www.example.com link title]&lt;br /&gt;
&lt;br /&gt;
The MiniPro is designed around a Microchip [https://www.microchip.com/en-us/product/PIC18F87J50 PIC18F87J50] micro-controller.&lt;br /&gt;
* It uses eight 74HC373 latches and one 74HC164 shift register&lt;br /&gt;
* Pin drivers are realized with discrete components. Thus we have 16VPP voltage switches, 24VDD voltage switches and 25GND switches&lt;br /&gt;
* DC to DC converters which generate the VPP programming voltage and VDD supply voltage is realized with two MC34063 circuits.&lt;br /&gt;
&lt;br /&gt;
More information (that needs to be transferred here) available in [https://github.com/radiomanV/TL866/tree/master/docs] by Radioman.&lt;br /&gt;
&lt;br /&gt;
For anyone making the change that wants to add the 6 pin header check out Digikey part # S9493-ND&lt;br /&gt;
It is a perfect fit/match and looks exactly the same as the factory part from what I can see and costs 48 cents. [http://www.eevblog.com/forum/blog/eevblog-411-minipro-tl866-universal-programmer-review/msg756727/#msg756727 Thread Link]&lt;br /&gt;
&lt;br /&gt;
See also [[Design/Schematic]]&lt;br /&gt;
&lt;br /&gt;
== Software design ==&lt;br /&gt;
TL866 has three major layers here:&lt;br /&gt;
#PC software application&lt;br /&gt;
#Device firmware&lt;br /&gt;
#Hardware&lt;br /&gt;
&lt;br /&gt;
The PC software application do not talk directly with the hardware but with the device firmware instead. The device firmware is implemented as a collection of programming algorithms; for example the 24C (i2c) series have a dedicated algorithm in firmware, 25 spi series have another dedicated algorithm and so on. Currently the 3.2.62 firmware version have exactly 41 programming algorithms.&lt;br /&gt;
All of those &amp;gt;13000 supported chips belongs to one of the 41 programming algorithms ([[Supported_chips|more information about supported chips]]), so if we want to add a new chip, then that chip must have the programming algorithm implemented in firmware, if no we are out of luck :(&lt;br /&gt;
&lt;br /&gt;
The PC software is nothing more than a chip database manager which sends simple programming primitives to the device firmware which in turn do all the dirty job!&lt;br /&gt;
So programming a chip is like this:&lt;br /&gt;
#PC software sends a simple command to the firmware like &amp;quot;Select protocol nr. X&amp;quot;, the device firmware will then switch to that programming algorithm&lt;br /&gt;
#PC software sends/receive data blocks to/from firmware, the firmware will do the dirty job of manipulating pin drivers and talking with the chip&lt;br /&gt;
&lt;br /&gt;
[http://www.eevblog.com/forum/blog/eevblog-411-minipro-tl866-universal-programmer-review/msg408976/#msg408976 Source (Radioman)]&lt;br /&gt;
&lt;br /&gt;
TL866 has implemented programming primitives, they use these primitives for device self check and logic IC verify. The reason of why these primitives are not used in normal device programming is that it will be very slow to program a device in a such manner.&lt;br /&gt;
Remember that the [https://www.microchip.com/en-us/product/PIC18F87J50 PIC18F87J50] is a full speed (12Mbps) device and the transfer type is of type &#039;bulk&#039;;&lt;br /&gt;
this means that the bandwidth is not guaranteed and maximum packet size is 64 bytes.&lt;br /&gt;
Depending on the USB host and OS the minimum packet latency will be somewhere between 3 and 10ms. So even if the data length is 1 byte or 64 bytes the transfer time will be the same, but will be more efficient for large amount of data.&lt;br /&gt;
Let&#039;s say we want to program a device with 64K bytes in this manner, normally with the existing firmware primitives we can set all of those 40pins in one USB transfer and let&#039;s suppose that the USB latency is 5ms. Now with this setup we transfer one data byte in 5ms and one address increment command in another 5ms! the total amount of time will be ~10 minutes for a 64K device not counting the verify time. This is why the programming algorithms are implemented in firmware, because is more efficient to transfer large amounts of data over the USB and let the firmware to do the job much faster.&lt;br /&gt;
&lt;br /&gt;
Actually the TL866 have only 39 control primitives and these primitives are grouped in categories like get device info, reset, start session, end session, erase chip, get chip Id, read data block, write data block and several pin and pin driver manipulation primitives.&lt;br /&gt;
&lt;br /&gt;
[http://www.eevblog.com/forum/blog/eevblog-411-minipro-tl866-universal-programmer-review/msg413017/#msg413017 Source (Radioman)]&lt;/div&gt;</summary>
		<author><name>Pdietl</name></author>
	</entry>
	<entry>
		<id>https://proghq.org/w/index.php?title=TL866_design&amp;diff=904</id>
		<title>TL866 design</title>
		<link rel="alternate" type="text/html" href="https://proghq.org/w/index.php?title=TL866_design&amp;diff=904"/>
		<updated>2022-11-06T02:34:36Z</updated>

		<summary type="html">&lt;p&gt;Pdietl: Fix links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:TL866]]&lt;br /&gt;
&lt;br /&gt;
== Hardware design ==&lt;br /&gt;
[http://www.example.com link title]&lt;br /&gt;
&lt;br /&gt;
The MiniPro is designed around a Microchip [https://www.microchip.com/en-us/product/PIC18F87J50 PIC18F87J50] micro-controller.&lt;br /&gt;
* It uses eight 74HC373 latches and one 74HC164 shift register&lt;br /&gt;
* Pin drivers are realized with discrete components. Thus we have 16VPP voltage switches, 24VDD voltage switches and 25GND switches&lt;br /&gt;
* DC to DC converters which generate the VPP programming voltage and VDD supply voltage is realized with two MC34063 circuits.&lt;br /&gt;
&lt;br /&gt;
More information (that needs to be transferred here) available in [https://github.com/radiomanV/TL866/tree/master/docs] by Radioman.&lt;br /&gt;
&lt;br /&gt;
For anyone making the change that wants to add the 6 pin header check out Digikey part # S9493-ND&lt;br /&gt;
It is a perfect fit/match and looks exactly the same as the factory part from what I can see and costs 48 cents. [http://www.eevblog.com/forum/blog/eevblog-411-minipro-tl866-universal-programmer-review/msg756727/#msg756727 Thread Link]&lt;br /&gt;
&lt;br /&gt;
See also [[Design/Schematic]]&lt;br /&gt;
&lt;br /&gt;
== Software design ==&lt;br /&gt;
TL866 has three major layers here:&lt;br /&gt;
#PC software application&lt;br /&gt;
#Device firmware&lt;br /&gt;
#Hardware&lt;br /&gt;
&lt;br /&gt;
The PC software application do not talk directly with the hardware but with the device firmware instead. The device firmware is implemented as a collection of programming algorithms; for example the 24C (i2c) series have a dedicated algorithm in firmware, 25 spi series have another dedicated algorithm and so on. Currently the 3.2.62 firmware version have exactly 41 programming algorithms.&lt;br /&gt;
All of those &amp;gt;13000 supported chips belongs to one of the 41 programming algorithms ([[Supported_chips|more information about supported chips]]), so if we want to add a new chip, then that chip must have the programming algorithm implemented in firmware, if no we are out of luck :(&lt;br /&gt;
&lt;br /&gt;
The PC software is nothing more than a chip database manager which sends simple programming primitives to the device firmware which in turn do all the dirty job!&lt;br /&gt;
So programming a chip is like this:&lt;br /&gt;
#PC software sends a simple command to the firmware like &amp;quot;Select protocol nr. X&amp;quot;, the device firmware will then switch to that programming algorithm&lt;br /&gt;
#PC software sends/receive data blocks to/from firmware, the firmware will do the dirty job of manipulating pin drivers and talking with the chip&lt;br /&gt;
&lt;br /&gt;
[http://www.eevblog.com/forum/blog/eevblog-411-minipro-tl866-universal-programmer-review/msg408976/#msg408976 Source (Radioman)]&lt;br /&gt;
&lt;br /&gt;
TL866 has implemented programming primitives, they use these primitives for device self check and logic IC verify. The reason of why these primitives are not used in normal device programming is that it will be very slow to program a device in a such manner.&lt;br /&gt;
Remember that the [http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en027172 PIC18F87J50] is a full speed (12Mbps) device and the transfer type is of type &#039;bulk&#039;;&lt;br /&gt;
this means that the bandwidth is not guaranteed and maximum packet size is 64 bytes.&lt;br /&gt;
Depending on the USB host and OS the minimum packet latency will be somewhere between 3 and 10ms. So even if the data length is 1 byte or 64 bytes the transfer time will be the same, but will be more efficient for large amount of data.&lt;br /&gt;
Let&#039;s say we want to program a device with 64K bytes in this manner, normally with the existing firmware primitives we can set all of those 40pins in one USB transfer and let&#039;s suppose that the USB latency is 5ms. Now with this setup we transfer one data byte in 5ms and one address increment command in another 5ms! the total amount of time will be ~10 minutes for a 64K device not counting the verify time. This is why the programming algorithms are implemented in firmware, because is more efficient to transfer large amounts of data over the USB and let the firmware to do the job much faster.&lt;br /&gt;
&lt;br /&gt;
Actually the TL866 have only 39 control primitives and these primitives are grouped in categories like get device info, reset, start session, end session, erase chip, get chip Id, read data block, write data block and several pin and pin driver manipulation primitives.&lt;br /&gt;
&lt;br /&gt;
[http://www.eevblog.com/forum/blog/eevblog-411-minipro-tl866-universal-programmer-review/msg413017/#msg413017 Source (Radioman)]&lt;/div&gt;</summary>
		<author><name>Pdietl</name></author>
	</entry>
</feed>