AVR unLocker

What's this?

  Simply it is device, that can "unlock" blocked AVR. Sometimes every user set badly fuses. As result this settings can be set wrong oscillator, disabled RESET, disabled SPI programming and so on and re-programming is not longer possible. And for these cases there is AVR unLocker! This device can reset target AVR to factory default, so you can re-program it again. Note that device can erase ALL MEMORIES, so be sure you have proper backup! Here is foto.

AVR unBlocker 00

How it works?

  Simply :) Heavy simpified flowchart is on following image.

Block scheme of AVR unBlocker

  After initialization device try communicate over SPI. If communication with target chip will be successful, then it is high chance to set fuses back to factory settings without earsing flash or EEPROM memory -> code stay.
  When unlock over SPI fails, then is need to erase lock bits and fuses (factory settings). However, this means, that flash and EEPROM must be erased too. For this is suitable high voltage programming.
   If even high voltage programming fails, then whole process is done again. This is for case, that user did not put target to IC socket, so no restart is needed. When device try communicate with target, then trying all oscillator types. This is for case, that user just set wrong oscillator. For example: if in target IC is set RC oscillator, then target IC will not work (no clock source) until we connect right RC oscillator to pins.
  In following table is overwiev HW and SW versions. Hardware is backwards compatible. Actual firmware is written in C language, because in this application MCU most of time just waiting for target, so there are not time critical routines -> assembler is not much suitable for this application. Database is not complete, yet. At this moment most of ATtiny and Xmega are not in database. Also missing serial high voltage programming. However, sometimes I work on database, but expand database is very easy.Just edit file "chip_database.c" and recompile whole project.

Demo videos

Unlocking ATtiny13 - RC oscillator set


Unlocking ATmega32 - external clock set


Unlocking ATmega8 - reset: disabled , SPI: disabled

Because RESET and SPI were disabled, high voltage programming mode were used to communicate with target (ATmega8).

Download

All in one and up to date:

git clone --recursive git@gitlab.com:AVRunLocker/avrunlocker.git



Old and not updated:
HW design Firmware
AVR un 00  (402x)

HW can not allow high voltage for ATtiny and compatible!

Obsolete. If not needed, do not use

Missing protecting resistors

Files for Eagle 5

AVR un 0.1  (561x)

Theroreticly unlock most of AVR (if chip is in database)

Serial high voltage programming not supported

Language: assembler

Because of deadline, this firmware is not really "clean code"

Supported AVR's: ATmega8, ATmega16, ATmega32, ATmega48, ATmega88, ATmega128 ATmega168, ATmega8535, ATtiny13, however modify database is easy

AVR un 01  (1377x)

This HW design allow high voltage programming for all types

Thanks to protecting resistors is current consumption reduced (when two outputs are "against each other")

Because of protecting resistors is possible that signature is read wrong (usually last byte). It is because of increasing RC constant -> to fix this issue, just increase time delays.

Files for Eagle 5

AVR un 0.2  (1089x)

Theroreticly unlock most of AVR (if chip is in database).

Serial high voltage programming not supported

Language: C

Improved assembler version. Database does not support many AVR and need expansion. If needed, just edit "chip_database.c".

Supported AVR's: ATmega8, ATmega32, ATmega48, ATmega88, ATmega168, ATtiny13

20.12.2012

AVR un 0.2.1  (707x)

Theroreticly unlock most of AVR (if chip is in database)

Serial high voltage programming not supported

Language: C

Just added new AVR's to database

Supported AVR's: ATmega8, ATmega8A, ATmega16, ATmega16A, ATmega32, ATmega32A, ATmega48, ATmega48A, ATmega48PA, ATmega64, ATmega64A, ATmega88, ATmega88A, ATmega88PA, ATmega103, ATmega128, ATmega128A, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165A, ATmega165PA, ATmega168, ATmega168A, ATmega168PA, ATmega169, ATmega169PA, ATmega169A, ATmega323, ATmega324A, ATmega324PA, ATmega325, ATmega325A, ATmega325PA, ATmega328, ATmega329, ATmega329P, ATmega406, ATmega640, ATmega644, ATmega644A, ATmega644PA, ATmega645, ATmega645A, ATmega645P, ATmega649, ATmega649A, ATmega649P, ATmega1280, ATmega1281, ATmega1284, ATmega1284P, ATmega2560, ATmega2561, ATmega3250, ATmega3250A, ATmega325PA, ATmega3290, ATmega3290A, ATmega329PA, ATmega6450, ATmega6450A, ATmega6450P, ATmega8515, ATmega8535, ATtiny13

30.12.2012

AVR un 0.3  (1781x)

Support parallel and serial high voltage programming

Language: C.

Database expanded with new AVR.

Support: ATmega8, ATmega8A, ATmega16, ATmega16A, ATmega32, ATmega32A, ATmega48, ATmega48A, ATmega48PA, ATmega64, ATmega64A, ATmega88, ATmega88A, ATmega88PA, ATmega103, ATmega128, ATmega128A, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165A, ATmega165PA, ATmega168, ATmega168A, ATmega168PA, ATmega169, ATmega169PA, ATmega169A, ATmega323, ATmega324A, ATmega324PA, ATmega325, ATmega325A, ATmega325PA, ATmega328, ATmega329, ATmega329P, ATmega406, ATmega640, ATmega644, ATmega644A, ATmega644PA, ATmega645, ATmega645A, ATmega645P, ATmega649, ATmega649A, ATmega649P, ATmega1280, ATmega1281, ATmega1284, ATmega1284P, ATmega2560, ATmega2561, ATmega3250, ATmega3250A, ATmega325PA, ATmega3290, ATmega3290A, ATmega329PA, ATmega6450, ATmega6450A, ATmega6450P, ATmega8515, ATmega8535, ATtiny13, ATtiny15, ATtiny22, ATtiny24, ATtiny25, ATtiny26, ATtiny28, ATtiny40, ATtiny43, ATtiny44, ATtiny45, ATtiny48, ATtiny84, ATtiny85, ATtiny87, ATtiny88, ATtiny167, ATtiny261, ATtiny461, ATtiny861, ATtiny2313, ATtiny4313

Database can be easily expanded

28.06.2014

AVR un 0.3.1  (1392x)

Support parallel and serial high voltage programming

Language: C.

Modified DC/DC parametrs (in some case application could "freeze" because of noisy power supply)

Support: ATmega8, ATmega8A, ATmega16, ATmega16A, ATmega32, ATmega32A, ATmega48, ATmega48A, ATmega48PA, ATmega64, ATmega64A, ATmega88, ATmega88A, ATmega88PA, ATmega103, ATmega128, ATmega128A, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165A, ATmega165PA, ATmega168, ATmega168A, ATmega168PA, ATmega169, ATmega169PA, ATmega169A, ATmega323, ATmega324A, ATmega324PA, ATmega325, ATmega325A, ATmega325PA, ATmega328, ATmega329, ATmega329P, ATmega406, ATmega640, ATmega644, ATmega644A, ATmega644PA, ATmega645, ATmega645A, ATmega645P, ATmega649, ATmega649A, ATmega649P, ATmega1280, ATmega1281, ATmega1284, ATmega1284P, ATmega2560, ATmega2561, ATmega3250, ATmega3250A, ATmega325PA, ATmega3290, ATmega3290A, ATmega329PA, ATmega6450, ATmega6450A, ATmega6450P, ATmega8515, ATmega8535, ATtiny13, ATtiny15, ATtiny22, ATtiny24, ATtiny25, ATtiny26, ATtiny28, ATtiny40, ATtiny43, ATtiny44, ATtiny45, ATtiny48, ATtiny84, ATtiny85, ATtiny87, ATtiny88, ATtiny167, ATtiny261, ATtiny461, ATtiny861, ATtiny2313, ATtiny4313

Database can be easily expanded

26.07.2014

AVR un 0.3.2  (1341x)

Support parallel and serial high voltage programming

Language: C.

Added ATmega328P, fixed fuses for ATTiny26

Podporuje: ATmega8, ATmega8A, ATmega16, ATmega16A, ATmega32, ATmega32A, ATmega48, ATmega48A, ATmega48PA, ATmega64, ATmega64A, ATmega88, ATmega88A, ATmega88PA, ATmega103, ATmega128, ATmega128A, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165A, ATmega165PA, ATmega168, ATmega168A, ATmega168PA, ATmega169, ATmega169PA, ATmega169A, ATmega323, ATmega324A, ATmega324PA, ATmega325, ATmega325A, ATmega325PA, ATmega328, ATmega329, ATmega329P, ATmega406, ATmega640, ATmega644, ATmega644A, ATmega644PA, ATmega645, ATmega645A, ATmega645P, ATmega649, ATmega649A, ATmega649P, ATmega1280, ATmega1281, ATmega1284, ATmega1284P, ATmega2560, ATmega2561, ATmega3250, ATmega3250A, ATmega325PA, ATmega3290, ATmega3290A, ATmega329PA, ATmega6450, ATmega6450A, ATmega6450P, ATmega8515, ATmega8535, ATtiny13, ATtiny15, ATtiny22, ATtiny24, ATtiny25, ATtiny26, ATtiny28, ATtiny40, ATtiny43, ATtiny44, ATtiny45, ATtiny48, ATtiny84, ATtiny85, ATtiny87, ATtiny88, ATtiny167, ATtiny261, ATtiny461, ATtiny861, ATtiny2313, ATtiny4313, ATmega328P

Databázi lze snadno rozšířit

20.09.2018

Project was originaly "AVR unBlocker", however I renamed it to "AVR unLocker". That is why in old versions is different name for this project.

Conclusion

  If You use correct components and whole HW will be correct, device should work. Only one thing should (do not have to) be set: trimmer for setting contrast on LCD, which do not have to be even connected.
  As You can notice, display is up side down. That is because in first design I do not know that are two types of this display. So, if somebody create own version, just share it.
  If You have any questions, use email ;-)
TOPlist


Update: 2018.10.22