본문 바로가기

[AVR] ATmega fusebit Doctor로 Fuse 복구하기

by rudals.kim 2021. 7. 8. 댓글 개
반응형

가끔씩 AVR 칩이 인식 또는 다운로드가 안되어 ProgISP를 연결하여 확인해 보면 아래와 같이 chip signature가 엉뚱한 값으로 읽혀지는 경우가 있습니다. 경험상 AVR 칩과 연결이 불량인 상태에서 바이너리 업데이트할 경우 엉뚱한 Fuse bit를 건드려져서 이런 경우가 발생되곤 합니다.

AVR 칩이 오동작을 하거나, 다운로드가 안되거나, 인식이 안될 경우에는 12V의 High Voltage를 공급하여 강제적으로 fuse 값을 초기화하는 방법을 사용해야 합니다.

 

아래는 ATmega fusebit doctor 사이트로 사용자가 PCB로 제작하여 이러한 복구 기능을 할 수 있도록 자료를 공유해 주는 사이트입니다. 예전에는 영문사이트도 있었으나 지금은 없어지고 아래 저작자의 사이트만 있는 것 같습니다. (2021.10월 현재 사이트가 복구된것 같습니다.)

제작하기 위해 필요한 모든 자료가 공유되고 있으니 관심 있으신 분들은 아래 사이트에 자료를 받아 제작해 보셔도 좋을것 같습니다. 저 또한 이 자료를 다운로드하여 만들어 보았습니다.

 

059-Исправляем AVR фьюзы при помощи «Atmega fusebit doctor». — GetChip.net

Внимание ! Автор устройства не стоит на месте — постоянно усовершенствует своего «Доктора». За изменениями слежу и я, внося обновления в ст

www.getchip.net

아래와 같은 모양을 하고 있습니다.

사용법도 간단하여 12V 전원 연결 후 아래 START 버튼을 누르면 자동복구를 시도하고 정상적으로 복구가 되면 녹색 LED가, 복구 불가면 적색 LED가 켜집니다.

예전 영문 사이트에 있던 ATmega fusebit doctor 이미지입니다.

하나 만들어 놓으면 문제가 발생되었을때 많은 종류의 AVR 칩을 복구할 수 있습니다.

지원되는 AVR 칩 리스트입니다.

1kB:
AT90s1200 , Attiny11, Attiny12,  Attiny13 / A , Attiny15

2kB:
Attiny2313 / A , Attiny24 / A,  Attiny26 , Attiny261 / A, Attiny28, AT90s2333, Attiny22, Attiny25, AT90s2313, AT90s2323, AT90s2343

4kB:
Atmega48 / A , Atmega48P / PA,  Attiny461 / A , Attiny43U, Attiny4313, Attiny44 / A, Attiny48, AT90s4433, AT90s4414, AT90s4434,  Attiny45

8kB:
Atmega8515, Atmega8535, Atmega8 / Amega88 / PA, AT90pwm1, AT90pwm2, AT90pwm2B, AT90pwm3, AT90pwm3B, AT90pwm81, AT90usb82, Attiny84,  Attiny85 , Attiny861 / A, Attiny87, Attiny88,  AT90s8515 , AT90s8535

16kB:
Atmega16 / A , Atmega16U2, Atmega16U4, Atmega16M1, Atmega161,  Atmega162 , Atmega163, Atmega164A, Atmega164P / PA, Atmega165A / P / PA, Atmega168 / A, Atmega168P / PA , Atmega169A / PA, Attiny167, AT90pwm216, AT90pwm316, AT90usb162

32kB:
Atmega32 / A , Atmega32C1, Atmega323 / A, Atmega32U2, Atmega32U4, Atmega32U6, Atmega32M1, Atmega324A, Atmega324P,  Atmega324PA , Atmega325, Atmega3250, Atmega325A / PA, Atmega3250A / PA, Atmega328,  Atmega328P , Atmega329, Atmega3290, Atmega329A / PA, Atmega3290A / PA, AT90can32 

64kB:
Atmega64 / A, Atmega64C1, Atmega64M1, Atmega649, Atmega6490, Atmega649A / P, Atmega6490A / P, Atmega640,  Atmega644 / A, Atmega644P / PA , Atmega645, Atmega645A / P, ATmega50A6450 , AT90usb647, AT90can64 

128kB:
Atmega103,  Atmega128 / A, Atmega1280 , Atmega1281, Atmega1284, Atmega1284P, AT90usb1286, AT90usb1287, AT90can128

256kB:
Atmega2560, Atmega2561

제가 가지고 있는 부품을 사용하여 제작하기 위해 원본 회로도에서 아래 부분을 수정하였습니다.

   1. 쉽게 전원을 연결하기 위해 전원 연결 부분을 DC 어뎁터 잭으로 변경하였습니다.

   2. ATmega8 DIP을 TQFT-32 형식으로 변경

   3. LED를 SMD타입 LED로 변경

   4. 몇 몇 패키지 형식을 추가하여 서브 보드 없이 복구 가능하도록 수정

 

이 보드가 제가 이글 캐드를 배우고 처음 제작한 보드라 문제점도 많고 몇 가지 실수도 많이 한 보드입니다.

아무튼 아래와 같이 회로를 그려 보았습니다.

https://jlcpcb.com/RNA에 PCB 주문을 하여 아래와 같이 배송되어졌습니다. 예전에는 보드를 분리하기 보드 외곽선을 따라 드릴을 뚫어도 무료로 제공되었던 거 같은데 요즘에서는 이렇게 하려면 추가 비용이 붙는 것 같습니다.

몇몇 실크를 복사 후 붙여 넣고 수정을 하지 않아서 칩 이름이 모두 동일하고 TR도 방향이 반대로 그려져 있고 문제가 많습니다. 보드를 분리 후 회로도와 비교하면서 부품 하나하나 납땜을 하였습니다.

걱정했던 거와는 달리 쉽게 잘 동작되었습니다.

아래와 같이 전원 연결을 하면 자동으로 복구가 됩니다.

다시 ProgISP로 chip signature를 읽어 보니 제대로 읽어오고 있습니다.

정상적으로 Attiny13A 칩이 복구되었습니다.

반응형

댓글