Advanced Member level 4
Atmega Fusebit Doctor (HVPP+HVSP) – fix fusebits
Atmega Fusebit Doctor is a device for repairing badly converted fusebits in AVR microcontrollers. The biggest problems are: setting the incorrect clock source (CKSEL fusebits), disabling SPI programming (SPIEN fusebit) or setting the reset pin in I/O mode (RSTDISBL fusebit). This simple device in a split second repairs the microcontroller, returning it the factory setting.
While in the first case a clock generator or a RC/quartz generator can be a solution, in the second and third case restoration of the microcontroller is not possible using a serial SPI programmer. Few people decide to build a parallel programmer, because it is inconvenient to use and it is cheaper to buy a new microcontroller.
The device uses a possibility of parallel high voltage programming (and serial from version 2.03). The device is really simple and cheap to build. It consists of Atmega8 as a doctor, two LEDs, a jumper, stabilizer, transistors. Signatures of 96 AVR microcontrollers and their fabric fusebits are saved in the memory. Only put the broken uC into the stand and press START button. Then the system would make wanted operation and the microcontroller would be 'cured'. The whole operation lasts fraction of a second.
There are three sockets on the motherboard, for processors that are vertical compatible with Atmega8, Atmega16 and Attiny2313 so the most popular ones. In addition, there also is a female HEADER with led all the necessary signals for connecting adapters:
“#1 HVPP adapter” as HVPP amplification for processors compatible to 20pin Attiny26 and 40pin Atmega8515
“HVSP adapter” for HVSP processors 8pin and 14pin Attiny, which cannot be programmed parallel because of too little pins
There is also a possibility of producing additional adapters for another processors in DIP or SMD housings. Although there is no need to make a new adapter in order to repair only one processor. It can be done with a connector plate by connecting signals with adequate pins. How to do this? Just look into catalogue note of AVR, go into “memory programming” and then “parallel programming” - names of signals and pins are there. All pins are written under the DIP40 stand.
Single-sided plate at dimensions of 55mm x 92mm. Few jumpers should be soldered on the upper part or the plate can be made as bilateral. 12V power supply stabilized. Resistors R7 to R23 can have values from 100 ohm to 1K (the best is 330 ohm). Please note that the three pins of bits from data line are also used by ISP programmer for software updates – the device may not work properly. In addition, there is an interface described as RS232 in the plate. It is UART's output, so everything would be known about the operation of repairing after connecting to it (38000bps). Of course, the terminal is not necessary, everything would be learn from the diodes.
WARNING! When mounting the DIP40 stand, the metal connectors from 29 to 37 of pin should be removed! Paths passing in these places cannot be electrically connected to pins of inserted processor. Those pins are pointed in the picture below:
green light – fusebits repaired and verified, system repaired. If security lockbit is set, it only checks if fuses correspond to the factory ones and if so, this LED also lights.
red light – a problem with reading the signature, lack of the system, lack of the signature in the database.
green blinking – signature read, fusebits do not match to the factory ones, but lockbits are set and it must be allowed to erase the memory to fix them (see below)
red blinking – signature read, lockbits off, but for some reasons new fusebits cannot be saved
ALLOW ERASE jumper allows to erase the whole memory in case of set lockbits (without erasing there is no possibility of switching the fusebits). After plugging the system and pressing START button, the system initiates the programming parallel mode or, if HVSP adapter was used – initiates the serial programming mode. The broken microcontroller replies with a high state on RDY/BSY pin. First thing that the 'doctor' makes is erasing all the memory if user allows this. After that, it reads signature of the connected microcontroller and checks if it can support the microcontroller. Then lockbits are checked and when they do not block the access, the 'doctor' reads the fusebits and compares them with fabric ones written in the database. If they differ, it saves the fabric ones, having regard to whether the 'patient' model extended fusebits or not. There are also processors with only one fusebits byte and this is also included. The program at the end verifies its accuracy and lights the appropriate LED. The information is sent by RS232 to date.
The program was written on the basis of the description of parallel (and serial) programming, included in most catalogue notes of AVR microcontrollers (memory programming – parallel/serial programming).
Fusebits: Internal clock 8MHz and ESSAVE bit on
Since this is 2in1 (HVPP and HVSP), 8kB memory of Atmega8 was insufficient.
- not for all processors names are displayed by RS232, but for the most popular ones. However, this does not affect the operation of the system
- part of the text sent by RS232 was stored in the EEPROM. Even if you do not intend to use this, you must program the EEPROM with EEP.BIN or EEP.HEX file. Using the system with no programmed or badly programmed EEPROM would do more harm than good.
When green diode lights, fusebits were reset. If the system still does not answer for a simple ISP programmer, that means it has damaged hardware SPI, other damage or EEPROM was badly uploaded. When red diode lights up, the only thing you can do is check what the 'doctor' sends RS232.
Number of supported processors: 96
Number of supported in stands: 53
The rest – SMD housings with no adapters so far.
Full list of supported processors:
AT90s1200, Attiny11, Attiny12, Attiny13, Attiny15
Attiny2313, Attiny26, Attiny261, Attiny28, AT90s2333, Attiny22, Attiny25, AT90s2323, AT90s2343
Atmega48, Atmega48P, Attiny461, Attiny43U, Attiny4313, Attiny48, AT90s4433, AT90s4414, AT90s4434, Attiny45
Atmega8515, Atmega8535, Atmega8, Atmega88, Atmega88P, AT90pwm1, AT90pwm2, AT90pwm2B, AT90pwm3, AT90pwm3B, AT90pwm81, AT90usb82, Attiny861, Attiny88, Attiny85
Atmega16, Atmega16U4, Atmega16M1, Atmega161, Atmega162, Atmega163, Atmega164, Atmega164P, Atmega165, Atmega168, Atmega168P, Atmega169, AT90pwm216, AT90pwm316, AT90usb162
Atmega32, Atmega32U4, Atmega32M1, Atmega324, Atmega324P, Atmega325, Atmega3250, Atmega325P, Atmega3250P, Atmega328, Atmega328P, Atmega329, Atmega3290, AT90can32
Atmega64, Atmega64M1, Atmega649, Atmega6490, Atmega640, Atmega644, Atmega644P, Atmega645, Atmega6450, AT90usb646, AT90usb647, AT90can64
Atmega103, Atmega128, Atmega1280, Atmega1281, Atmega1284, Atmega1284P, AT90usb1286, AT90usb1287, AT90can128
Eagle 3D Render:
Prototype – Atmega8 reads signature and fuses of Atmega32 with broken SPI and displays the info on LCD:
Compatibility with stands – so what where we place:
A brief explanation for not being in the topic:
HVPP = high voltage parallel programming
HVSP = high voltage serial programming
So chosen programming methods allow to get to the processor despite of the fact that reset or ISP is off. Serial programming is for processors with little legs, because that type needs only few lines. Parallel programming is for processors with at least 20 legs, so everything above tiny2313 inclusive.
Link to original thread (attachment) – Atmega Fusebit Doctor (HVPP+HVSP) - napraw fusebity